プライベートのs3-bucketからcli経由でec2インスタンスにファイルをコピーしようとしています。 ec2はバケットと同じリージョンにあり、次のIAMロールがアタッチされています(AmazonS3FullAccess):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
しかし、コマンドaws s3 cp s3://[BUCKETNAME]/index.html
は次のエラーで失敗します。
HeadObject操作を呼び出すときに、クライアントエラー(400)が発生しました:Bad Request Completed 1 part(s)with ... file(s)remaining。
バケット名のスペルをすでに二重にチェックしました...
ステートメントに--regionオプションを追加しましたが、すべて正常に動作しています。
aws s3 cp s3:/[BUCKETNAME]/ . --recursive --region [REGION]
--regionパラメーターを追加し、機能し始めました。
aws --region eu-west-2 s3 cp s3://[BUCKETNAME]/index.html
私の問題は、aws cliの最新バージョンにアップグレードするとすぐに修正されました。アップグレード方法は次のとおりです。pip install --upgrade --user awscli
地域の指定は役に立たなかった
地域パラメータが機能しませんでした。
--profileを使用してみましたが、すべて正常に機能しました。
aws s3api head-bucket --bucket xxxx --profile dev-profile
同じポリシーを「インラインポリシー」から「管理ポリシー」に変更すると、機能しました。 https://stackoverflow.com/a/37532132/4126114 で私の回答を参照してください