You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS S3:GUI可操作存储桶,CLI执行ListObjectsV2时权限被拒

问题描述
  • AWS GUI登录身份显示为my_name @ 1234,通过aws sts get-caller-identity --profile my_role验证CLI身份,返回账号1234、ARN为arn:aws:iam::1234:user/my_name,确认GUI与CLI使用同一身份。
  • GUI中可正常打开s3_bucket_signature-1存储桶,查看并下载所有文件;但执行aws s3 cp --recursive s3://s3_bucket_signature-1/* my_dir --profile my_role时,报错:fatal error: An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied。
  • 该身份所属用户组的权限策略如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*",
                "s3-object-lambda:Get*",
                "s3-object-lambda:List*"
            ],
            "Resource": [
                "arn:aws:s3:::s3_bucket_signature-*",
                "arn:aws:s3:::s3_bucket_signature-*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "*"
        }
    ]
}
问题原因

问题出在CLI命令的路径写法上:

  • 使用s3://s3_bucket_signature-1/*作为源路径时,AWS CLI会先发起ListObjectsV2请求遍历存储桶根目录的所有对象,但末尾的*会导致权限校验逻辑出现偏差,无法匹配策略中允许的资源路径。
  • AWS GUI的操作逻辑不同,它直接访问存储桶内的对象路径,能正确匹配策略中的arn:aws:s3:::s3_bucket_signature-*/*资源,因此可以正常操作。
  • 解决方法是去掉路径末尾的*,使用s3://s3_bucket_signature-1/作为源路径,执行命令:aws s3 cp --recursive s3://s3_bucket_signature-1/ my_dir --profile my_role。此时CLI会直接对存储桶根目录执行ListObjectsV2操作,匹配策略中的arn:aws:s3:::s3_bucket_signature-*资源,即可正常获取权限完成递归拷贝。

内容的提问来源于stack exchange,提问作者algebruh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:39:53