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",
            "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バケット払い出し機能によって用意されるS3バケットのリージョンは、ap-northeast-1です。 詳細はこちらをご確認ください。

重要なお知らせ

IAM ロールを利用した一時的なセキュリティ認証情報を使用することが推奨となります。IAM ロールでのアクセスをご検討ください。

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

個別設定

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

インポート

  • [バケット]

    • 接続先のS3バケット名を入力します

    • 例: karte-data-bucket

  • [ファイルの指定方法]

  • [ファイルパス] / [プレフィックス]

    • [ファイルの指定方法] で指定した方法に合わせた値を入力します

  • [区切り文字]

    • 入力ファイルの区切り文字を以下から選択します

      • カンマ

      • タブ

      • パイプ

  • [フォーマット]

    • 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

値に改行を含むCSVファイルの取り込みは可能ですか?

  • 残念ながら、値に改行を含むCSVファイルについては正しく取り込むことができません

  • 対策例

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

  • ファイルが0バイトの場合、次のエラーになります

    • specified s3 file is empty.

  • ヘッダー行のみ存在する0件のファイルの場合は、その他の設定が合っていれば正常終了します

    • インポートジョブの設定では、スキーマを明示的に指定してください

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

  • 以下については、ご利用いただいて問題ありません。

    • SSE-S3

    • SSE-KMS

  • 以下については、現時点では対応していません。

    • SSE-C

    • CSE

SSE-KMS(カスタマー管理キー)を利用する場合は、許可ポリシー例の S3 権限に加えて、IAM ロールへ kms:Decrypt を付与してください。あわせて、KMS キーのキーポリシーでも当該ロールからの利用を許可してください。

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

  • エクスポート時の改行コードは以下の通りです

    • 文字コード

      • UTF-8

    • 改行コード

      • LF