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です。

個別設定

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

インポート

❗️

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

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

エクスポート

  • バケット
    • 例: karte-bucket
  • ファイルパス
    • 完全一致で指定します
      • 例: foo/bar/baz.csv
    • 出力ファイル名に日付を付与したい場合、下記の記法を用いることで出力時の当日日付に変換されたファイルパスを指定可能です
      • {{YYYY}}: 4桁の西暦
      • {{MM}}: 2桁の月
      • {{DD}}: 2桁の日
      • 日付指定の例: foo/bar/baz_{{YYYY}}-{{MM}}-{{DD}}.csv
      • {{YYYYMMDD}}や{{YYYY-MM-DD}}も利用可能です
      • デフォルトではJSTで変換されますが、{{YYYYMMDD, UTC}} のようにタイムゾーンを指定できます
    • 拡張子を省略した場合は、出力形式に応じて自動で設定されます
  • 出力形式
    • 出力ファイルの出力形式を以下から選択します
      • CSV
        • デフォルト
      • JSON (改行区切り)
  • オプション
    • 後述

オプション

ヘッダー行を出力する

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

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

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

  • 有効な場合: "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