Amazon S3

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

データ連携のパターン

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

AWS側の設定

  1. ロールを作成します
  2. ロールの信頼ポリシーにAssume Roleの設定をします
  3. S3バケットに対してアクセス許可が設定されたポリシーを作成します
  4. 作成したポリシーをロールの許可ポリシーにアタッチします
  5. ロールの最大セッション時間を4時間に設定します

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

信頼ポリシーの例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "accounts.google.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    // ビルトインGoogleサービスアカウントのクライアントIDを設定します
                    // クライアントIDは管理画面の [サービスアカウント管理] > [ビルトインGoogleサービスアカウント] > [クライアントID] から確認できます
                    "accounts.google.com:sub": "CLIENT_ID"
                }
            }
        }
    ]
}
  • 連携には次のアクセス許可が必要です
    • S3からDatahubへのインポート
      • s3:GetObject
      • s3:ListBucket
    • DatahubからS3へのエクスポート
      • s3:GetObject
      • s3:PutObject
      • s3:DeleteObject
      • s3:ListBucket

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

許可ポリシーの例

{
    "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}/*"
			]
        }
    ]
}

Datahubジョブ設定

「接続先」

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

  • [ロールARN]
    • ビルトインGoogleサービスアカウントにアクセスを許可するロールのARNを設定します
  • [リージョン]

ロールARNを利用する場合は、アクセスキーID・シークレットアクセスキーは空欄としてください。

📘

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

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

❗️

下記のアクセスキーとシークレットアクセスキーによる連携は非推奨になりました

  • 連携先S3バケットに対するアクセス権限を保持したIAMユーザーを作成し、アクセスキーとシークレットアクセスキーを取得します
    詳細はAWSのドキュメントをご覧ください

Datahubジョブ設定

「接続先」

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

個別設定

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

インポート

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

❗️

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

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

エクスポート

  • バケット
    • 例: karte-bucket
  • ファイルパス
  • 出力形式
    • 出力ファイルの出力形式を以下から選択します
      • 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. 値に改行を含むCSVファイルの取り込みは可能ですか?

  • 残念ながら、値に改行を含むCSVファイルについては正しく取り込むことができません
  • 対策例
    • 改行コードを\nなどに置換してからCSVファイルに出力する
    • 代わりにGoogle Cloud Storageを介したデータ連携を利用する

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

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

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

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

Q. エクスポート時の文字コードと改行コードは?

  • エクスポート時の改行コードは以下の通りです
    • 文字コード
      • UTF-8
    • 改行コード
      • LF