S3终端命令访问被拒问题:配置凭证与策略仍报错
AWS S3 访问被拒问题排查
我尝试使用AWS S3终端命令列出并获取对象,已通过IAM用户私钥配置凭证,为S3桶添加了相关策略(甚至试过更宽松的版本),同时关闭了「Block public access (bucket settings)」,IAM用户也配置了全S3权限策略,但执行以下命令时始终报错:
aws s3 ls s3://folder-staging/file01.txt --profile folder-staging
An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
当前桶策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetObjects", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::xxxxxx:user/manolo" }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::folder-staging", "arn:aws:s3:::folder-staging/*" ] } ] }
尝试过的宽松版桶策略(无效)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetObjects", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::folder-staging", "arn:aws:s3:::folder-staging/*" ] } ] }
IAM用户策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*", "s3-object-lambda:*" ], "Resource": "*" } ] }
身份验证结果
执行aws sts get-caller-identity --profile manolo返回:
{ "UserId": "yyyyyyyy", "Account": "xxxxxxxx", "Arn": "arn:aws:iam::xxxxxx:user/manolo" }
排查方向
- 核对Profile配置:命令中使用
--profile folder-staging,但身份验证用的是--profile manolo,确认两个Profile对应的是否为同一IAM用户的密钥,避免凭证不匹配。 - 确认资源存在性:确保
s3://folder-staging/file01.txt真实存在,AWS为保护资源隐私,不存在的对象也可能返回「访问被拒」。 - 检查全局限制策略:排查账户级别的S3权限边界、服务控制策略(SCP)或IAM用户的权限边界,这类策略可能覆盖已配置的允许规则。
- 验证资源ARN正确性:确认桶名、对象路径拼写无误,策略中配置的Resource ARN需与实际资源完全匹配。
- 清理凭证缓存:执行
aws configure list --profile folder-staging,检查当前Profile使用的Access Key是否正确,避免旧凭证缓存干扰。
内容的提问来源于stack exchange,提问作者R0bertinski
相关产品推荐
相关产品推荐

