Amazon S3

Amazon S3(S3)と双方向のデータ連携が可能です。

データ連携のパターン

  • 以下の連携が可能です
    • Datahubから直接インポートする
    • Datahubから直接エクスポートする

AWS側の設定

  • 連携先のS3バケットに対し、次のアクセス許可を設定します
    • S3からDatahubへのインポート
      • s3:GetObject
      • s3:ListBucket
    • DatahubからS3へのエクスポート
      • s3:GetObject
      • s3:PutObject
      • s3:DeleteObject
      • s3:ListBucket

詳細はAWSのドキュメントをご覧ください

Bucket policyの例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Principal": "*",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::{YOUR-BUCKET-NAME}",
                "arn:aws:s3:::{YOUR-BUCKET-NAME}/*"
            ]
        }
    ]
}
  • 連携先S3バケットに対するアクセス権限を保持したIAMユーザーを作成し、アクセスキーとシークレットアクセスキーを取得します
    詳細はAWSのドキュメントをご覧ください

Datahubジョブ設定

「接続先」

設定が完了したら「接続を確認する」を押下して正しく設定ができているか確認をしてください。
※ エラーになる場合、設定が正しく出来ていません

📘

KARTEから払い出されるS3バケットのリージョン

KARTEのS3バケット払い出し機能によって用意されるS3バケットのリージョンは、ap-northeast-1です。

16021602

個別設定

設定が完了したら「接続を確認する」を押下して正しく設定ができているか確認をしてください。
※ エラーになる場合、設定が正しく出来ていません

インポート

  • [バケット]
    • 接続先のS3バケット名を入力します
    • 例: karte-data-bucket
  • [ファイルパス]
  • [プレフィクス]
    • 前方一致で指定します
      • こちらを入力すると、合致する全てのファイルがインポート対象になります
      • 例: karte-bucket の配下に karte1.csv karte2.csv karte3.csv のファイルがあった場合
        • プレフィクスをkarteとすると全てのファイルがインポートされます
        • karte1karte1.csv では karte-bucket/karte1.csv のみが対象となります
    • ジョブ実行日時を使ったプレフィックスの動的指定に対応しています
  • 区切り文字
    • 入力ファイルの区切り文字を以下から選択します
      • カンマ
      • タブ
      • パイプ
  • フォーマット
    • CSV
    • Newline Delimited JSON (改行区切りJSON)
  • スキーマ

❗️

ファイルパスに使えない文字があります

?, *, [..] などのワイルドカードが含まれている場合、正常に取り込めません。

17201720

エクスポート

  • バケット
    • 例: karte-bucket
  • ファイルパス
  • 出力形式
    • 出力ファイルの出力形式を以下から選択します
      • CSV
        • デフォルト
      • JSON (改行区切り)
  • オプション
    • 後述
17361736

オプション

ヘッダー行を出力する

出力されるいずれかのファイルの先頭にヘッダー行を出力します

出力データをダブルクォート(")で囲む

ダブルクォート(")で囲まれたデータを出力します

  • 有効な場合: "column1","column2"
  • 無効な場合: column1,column2

単一ファイルで出力する

オフの場合は後述するようにS3への出力ファイルは分割して出力されます

🚧

単一ファイルで出力する オプションが有効でない場合の挙動について

例) EXPORT/karte-datahub.csvを出力した場合

EXPORT/karte-datahub-00-of-03.csv
EXPORT/karte-datahub-01-of-03.csv
EXPORT/karte-datahub-02-of-03.csv

各ファイルのサイズとファイルの分割数はシステムによって決定され、実行ごとに異なります。

ヘッダー行を出力する オプションが有効になっている場合は出力される いずれか のファイルの先頭行にヘッダー行が出力されます。

📘

データ型と出力フォーマット

出力時に、各データはクォート/ダブルクォート等が付与されない形式で出力されます。
一部の型は下記の形式にフォーマットされ出力されます。

BOOL型: true/false
DATE型: YYYY-MM-DD
TIMESTAMP型: YYYY-MM-DD hh:mm:ss.ffffff UTC

FAQ

Q. インポート対象のファイルが空の場合はジョブエラーになりますか?

  • ファイルが0バイトの場合、次のエラーになります
    • specified s3 file is empty.
  • ヘッダー行のみ存在する0件のファイルの場合は、その他の設定が合っていれば正常終了します
    • インポートジョブの設定では、スキーマを明示的に指定してください

Q. S3の暗号化オプションを利用していても問題ないですか?

  • 以下については、ご利用いただいて問題ありません。
    • SSE-S3
    • SSE-KMS
  • 以下については、現時点では対応していません。
    • SSE-C
    • CSE