一、问题
在两个S3上执行数据复制时候,遇到如下错误。
$ aws s3 cp s3://abc-bkt-zhy/data-origion/index_day.json s3://abc-mytarget/
copy failed: s3://abc-bkt-zhy/stock-data-origion/index_day.json to s3://abc-mytarget/index_day.json An error occurred (AccessDenied) when calling the GetObjectTagging operation: Access Denied
这是由于AWS CLI V1版本和V2版本的不同差异造成的。在命令行下自行如下命令显示CLI版本。
aws --version
如果返回1.x系列版本,信息如下。
aws-cli/1.16.300 Python/2.7.18 Linux/4.14.181-140.257.amzn2.x86_64 botocore/1.13.36
如果返回2.x系列版本,信息如下。
aws-cli/2.0.40 Python/3.7.4 Darwin/19.6.0 exe/x86_64
其中使用1.x的版本可以正常复制数据,2.x的版本无法复制,报告以上错误。
二、问题解决
发生这个问题的原因是因为CLI V1版本和V2版本不同的S3调用方式引起的。参考如下文档。
https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html
解决办法,在复制命令后增加如下参数:
--copy-props none
完整复制命令如下。
aws s3 cp s3://abc-bkt-zhy/data-origion/index_day.json s3://abc-mytarget/json/stock_day.json --copy-props none
即可复制成功。