状況
とあるバケットから別のアカウントのバケットにファイル転送の設定を行う際にチュートリアル:Amazon S3 から Amazon S3 へデータを転送するAWS アカウントに沿って実施したところ、
ステップ 4: S3DataSync バケットの宛先ロケーションを作成する で下のエラーで進めなくなりました
An error occurred (InvalidRequestException) when calling the CreateLocationS3 operation: DataSync location access test failed: could not perform s3:HeadBucket on bucket account-b-bucket. Access denied. Ensure bucket access role has s3:ListBucket permission.
原因と解決方法
良く良く考えてみると当然で、送信先のバケットポリシーには、送信元のロールしか許可していない訳ですので...
"Principal": {
"AWS": "arn:aws:iam::account-a-id:role/name-of-datasync-role"
},
ですので、ロールの他にコマンドを実行するIAMユーザを追加したところ、無事宛先ロケーションを作成できました
"Principal": {
"AWS": [
"arn:aws:iam::account-a-id:role/name-of-datasync-role",
"arn:aws:iam::account-a-id:user/name-account-a-iam-user"
]
},
(権限最小限の法則に乗っとり、宛先ロケーション作成後にIAMユーザの設定は削除しました)
同じ原因で詰まっている方のご参考になりましたら