Amazon S3(S3)と双方向のデータ連携が可能です。
データ連携のパターン
以下の連携が可能です
Datahubから直接インポートする
Datahubから直接エクスポートする
AWS側の設定
ロールを作成します
ロールの信頼ポリシーにAssume Roleの設定をします
S3バケットに対してアクセス許可が設定されたポリシーを作成します
作成したポリシーをロールの許可ポリシーにアタッチします
ロールの最大セッション時間を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:GetObjects3:ListBucket
DatahubからS3へのエクスポート
s3:GetObjects3:PutObjects3:DeleteObjects3: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を設定します
[リージョン]
バケットのリージョンを設定します
詳細はAWSのドキュメントをご覧ください
ロールARNを利用する場合は、アクセスキーID・シークレットアクセスキーは空欄としてください。
KARTEのS3バケット払い出し機能によって用意されるS3バケットのリージョンは、ap-northeast-1です。 詳細はこちらをご確認ください。
IAM ロールを利用した一時的なセキュリティ認証情報を使用することが推奨となります。IAM ロールでのアクセスをご検討ください。
- 連携先S3バケットに対するアクセス権限を保持したIAMユーザーを作成し、アクセスキーとシークレットアクセスキーを取得します 詳細はAWSのドキュメントをご覧ください
個別設定
設定が完了したら「接続を確認する」を押下して正しく設定ができているか確認をしてください。
※ エラーになる場合、設定が正しく出来ていません。
インポート
[バケット]
接続先のS3バケット名を入力します
例:
karte-data-bucket
[ファイルの指定方法]
ファイルパスもしくはプレフィックスを指定します詳細は ジョブフローでファイルパスを動的に指定する を参照してください
gzip圧縮されたファイルもインポート可能です
[ファイルパス] / [プレフィックス]
[ファイルの指定方法] で指定した方法に合わせた値を入力します
[区切り文字]
入力ファイルの区切り文字を以下から選択します
カンマ
タブ
パイプ
[フォーマット]
CSV
Newline Delimited JSON (改行区切りJSON)
[スキーマ]
データテーブルへインポートの「スキーマ」をご覧ください
ファイルパスに使えない文字があります。
?, *, [..] などのワイルドカードが含まれている場合、正常に取り込めません。
エクスポート
バケット
例:
karte-bucket
ファイルパス
完全一致で指定します
例:
foo/bar/baz.csv
ジョブフローでファイルパスを動的に指定するに対応しています
拡張子を省略した場合は、出力形式に応じて自動で設定されます
出力形式
出力ファイルの出力形式を以下から選択します
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ファイルについては正しく取り込むことができません
対策例
改行コードを
\nなどに置換してからCSVファイルに出力する代わりにGoogle Cloud Storageを介したデータ連携を利用する
インポート対象のファイルが空の場合はジョブエラーになりますか?
ファイルが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