ablog

不器用で落着きのない技術者のメモ

クロスアカウントの s3 cp で "An error occurred (AccessDenied) when calling the GetObjectTagging operation: Access Denied"

事象

AWS CLI v2 でクロスアカウントでaws s3 cp を実行すると "An error occurred (AccessDenied) when calling the GetObjectTagging operation" で失敗する。

% aws --version
aws-cli/2.5.8 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off
  • aws s3 cp を実行すると
aws s3 cp --recursive s3://aws-roda-hcls-datalake/thousandgenomes_dragen/ s3://aws-roda-hcls-datalake-ablog/thousandgenomes_dragen/ --region us-east-1
  • "GetObjectTagging operation: Access Denied" で失敗する。
An error occurred (AccessDenied) when calling the GetObjectTagging operation: Access Denied

原因

  • AWS CLI v2 ではマルチパートコピーの際にデフォルトでタグを含めたプロパティをコピーする動作になっている。
  • 従って、コピー元オブジェクトに対して GetObjectTagging 権限がないと "Access Denied" でコピーに失敗する。

解決策

  • aws s3 cp を "--copy-props none" オプション付きで実行する。
$ aws s3 cp --recursive s3://aws-roda-hcls-datalake/thousandgenomes_dragen/ s3://aws-roda-hcls-datalake-ablog/thousandgenomes_dragen/ --region us-east-1 --copy-props none