AWS S3 cp调用GetObjectTagging返回AccessDenied错误问题咨询
报错原因
- AWS CLI 执行 S3 跨桶复制操作时,默认会尝试同步源对象的所有附加属性,包括对象标签、ACL、对象锁配置等,因此会自动调用
GetObjectTagging接口获取源对象的标签信息。 - 你使用的公开样例桶
awssampledbuswest2仅开放了匿名GetObject(读取对象内容)的公开权限,没有开放GetObjectTagging的公开权限,因此跨桶复制时接口调用被拒绝。 - 下载到本地再上传的操作不需要读取源对象的标签属性,仅需要调用
GetObject获取对象内容,因此不会触发权限报错。
规避方案
- 方案1:本地中转复制,适合小文件、单次复制的场景,即你已经验证过的操作流程:先将公开桶文件下载到本地,再上传到自有存储桶。
- 方案2:跨桶复制时添加参数跳过标签同步,无需本地中转即可完成操作,对应命令如下:
# 单文件复制,仅同步基础元数据、不同步标签 aws s3 cp s3://awssampledbuswest2/tickit/spectrum/sales/sales_ts.000 s3://<my bkt>/ --copy-props metadata
如果需要递归复制整个目录,添加--recursive参数即可:
aws s3 cp s3://awssampledbuswest2/tickit/spectrum/sales/ s3://<my bkt>/ --recursive --copy-props metadata
如果使用 AWS CLI v2 版本,也可以直接指定不复制标签:
aws s3 cp s3://awssampledbuswest2/tickit/spectrum/sales/sales_ts.000 s3://<my bkt>/ --no-copy-tags
内容的提问来源于stack exchange,提问作者Slimboy Fat
相关产品推荐
相关产品推荐

