私はなっています
ListObjectsオペレーションを呼び出すときにエラー(AccessDenied)が発生しました:Access Denied
s3バケットからフォルダを取得しようとしたとき.
このコマンドを使う
aws s3 cp s3://bucket-name/data/all-data/ . --recursive
バケットのIAMアクセス許可は次のようになります
{
"Version": "version_id",
"Statement": [
{
"Sid": "some_id",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucketname/*"
]
}
] }
copy
とls
を成功させるためには何を変更する必要がありますか?
S3バケット内のオブジェクトに対してコマンドを実行する権限を与えましたが、バケット自体に対してアクションを実行する権限を与えていません。次のようにポリシーを変更します。
{
"Version": "version_id",
"Statement": [
{
"Sid": "some_id",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucketname",
"arn:aws:s3:::bucketname/*"
]
}
] }
前述のようにコマンド "aws s3 cp s3://バケット名/データ/全データ/。--recursive"を使用してすべてのs3バケットオブジェクトを再帰的にコピーする場合は、次のようにする必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket-name"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucket-name/data/all-data/*"
]
}
]
}
このポリシーの最初のステートメントでは、バケット内のオブジェクトを一覧表示できます。この設定では、このバケットのサブディレクトリにあるオブジェクトも一覧表示できるようになります。 s3サブディレクトリへのアクセス許可だけをlsに与えることは不可能なので、このアクションをリソース "arn:aws:s3 ::: //バケット名/データ/全データ/"に適用してみてください。 t期待どおりに動作します(これを行うために複数の方法を試してみましたが、ここでの支援をいただければ幸いです)。
このポリシーの2番目のステートメントは、特定のサブディレクトリでオブジェクトをバケット内に入れることを可能にします。これは、 "s3://バケット名/データ/全データ/"パス内のすべてのものをコピーできることを意味します。 "s3:// bucket-name/data /"のような親パスからはコピーできないことに注意してください。
これと同様の問題がここにあり、それが私が与えている解決策に導いてくれました。 https://github.com/aws/aws-cli/issues/2408
この助けを願っています!
"arn:aws:3 ::: bucketname"または "arn:aws:3 ::: bucketname *"でバケットのリソースを指定する必要があります。後者はバケツのオブジェクトに対する操作も可能にするので好ましいです。スラッシュがないことに注意してください。
オブジェクトの一覧表示はBucketの操作です。したがって、アクション "s3:ListBucket"が必要です。オブジェクトをバケットに追加することは、オブジェクトに対する操作です。したがって、アクション "s3:PutObject"が必要です。もちろん、必要に応じて他のアクションを追加したいと思うかもしれません。
{
"Version": "version_id",
"Statement": [
{
"Sid": "some_id",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bucketname*"
]
}
]
}
S3にアクセスできませんでした。
解決策:rm -rf .aws/credentials
、そしてaws
はroleを使います。
私はs3:ListObjects操作のための "s3:ListBucket"を持っていますが、私は以下のようにポリシーを使うとき同じエラーを得ました。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl"
],
"Resource": [
"arn:aws:s3:::<bucketname>/*",
"arn:aws:s3:::*-bucket/*"
],
"Effect": "Allow"
}
]
}
それから私は1行を追加することでそれを修正しました "arn:aws:s3 ::: bucketname"
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl"
],
"Resource": [
"arn:aws:s3:::<bucketname>",
"arn:aws:s3:::<bucketname>/*",
"arn:aws:s3:::*-bucket/*"
],
"Effect": "Allow"
}
]
}
エラーは "s3:ListObjects"アクションが原因であると考えていましたが、アクションを追加する必要がありました "s3:ListBucket" "S3オブジェクト用のListObjectsのアクセス拒否"の問題を解決するため
私は同じ問題に直面しました。資格情報の設定を追加しました:
aws_access_key_id = your_aws_access_key_id
aws_secret_access_key = your_aws_secret_access_key
に 「〜/ .aws/credentials」 +デフォルトプロファイルのターミナルを再起動します。
マルチプロファイルの場合 - プロフィール argを追加する必要があります:
aws s3 sync ./localDir s3://bucketName --profile=${PROFILE_NAME}
どこで プロファイル名:
.bash_profile ( or .bashrc) -> export PROFILE_NAME="yourProfileName"
クレデンシャルとマルチプロファイルの設定方法に関する詳細は、こちらをご覧ください こちら
私は次を試しました:
aws s3 ls s3.console.aws.Amazon.com/s3/buckets/{bucket name}
これは私にエラーを与えました:
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
このフォームを使用するとうまくいきました:
aws s3 ls {bucket name}
同様の問題が発生しましたが、私にとっての問題は、bash_profileに異なるAWSキーが設定されていたことです。
私はここで同様の質問に答えました: https://stackoverflow.com/a/57317494/11871462
Bash_profileに競合するAWSキーがある場合、AWS CLIは代わりにこれらをデフォルトに設定します。