困っていた内容
Glue クローラーのデータソースとして、異なる AWS アカウントが所有する S3 バケットを指定したいのですが、どのようなアクセス許可が必要ですか。
どう対応すればいいの?
クローラーにアタッチされている IAM ロールからの s3:GetObject
、s3:ListBucket
許可を、S3 バケットのバケットポリシーにて設定する必要があります。
アカウント A: クローラーを作成する AWS アカウント
Glue クローラー作成画面では、クローラーにアタッチする IAM ロールを作成できますが、別アカウント所有の S3 バケットであるからと言って、このロールの内容を特別に変更する必要はありません。
なお、クローラーに必要な IAM ロールの権限については、以下ドキュメントで確認できます。
アカウント B: S3 バケットを所有する AWS アカウント
対象バケットで以下のようなバケットポリシーを設定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": {
"AWS": "<AWS アカウント A のクローラーにアタッチした IAM ロール ARN>"
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<S3バケット名>",
"arn:aws:s3:::<S3バケット名>/*"
]
}
]
}