AWS CLI S3可列出对象但无法复制的权限问题求助
问题分析与解决方案
核心错误:S3路径格式错误
你执行的aws s3 cp命令中,S3路径格式存在明显错误:
aws s3 cp s3://buckets/<bucket-name>/<grandparent-dir>/<parent-dir>/<child-dir> <local-dir> --recursive
S3的标准路径格式为s3://<bucket-name>/对象路径,你在桶名前额外添加了buckets/前缀,这会导致AWS CLI尝试访问名为buckets的公共桶(而非你自己的目标桶),因此触发AccessDenied错误。
而你执行的aws s3 ls命令格式正确(直接使用<bucket-name>/路径),所以能正常列出目标目录下的内容。
修复步骤
删除aws s3 cp命令中的buckets/前缀,修正后的命令如下:
aws s3 cp s3://<bucket-name>/<grandparent-dir>/<parent-dir>/<child-dir> <local-dir> --recursive
重新执行该命令即可完成文件复制。
额外排查点(若修复后仍报错)
如果修正路径后问题依旧,可检查以下内容:
- 确认IAM用户是否存在权限边界或会话策略,限制了
ListObjectsV2或GetObject操作 - 检查目标路径下的对象是否设置了单独的ACL(尽管你是桶所有者,极少数情况对象ACL会覆盖桶级权限)
- 验证是否有其他IAM策略(如用户附加的单独策略)包含Deny语句,限制了相关S3操作
内容的提问来源于stack exchange,提问作者Waleed Alfaris
相关产品推荐
相关产品推荐

