web-dev-qa-db-ja.com

AWS S3サーバー側の暗号化アクセス拒否エラー

  • AとBのAWSアカウントがあり、AアカウントSoruceS3BucketからS3バケットをBアカウントDestinationS3Bucketに同期しています。
  • 以下は、宛先バケットに適用されるバケットポリシーで、ソースAWSアカウントがコンテンツをDestinationS3Bucketと同期できるようにします。
{
 "バージョン": "2012-10-17"、
 "ステートメント":
 {
 "Sid": "PermissionsToAAccount"、
 "効果": "許可"、
 "プリンシパル":{
 "AWS": "arn:aws:iam :: XXXXXXX:root" 
}、
 "アクション": "s3:*"、
 "リソース":
 "arn:aws:s3 ::: DestinationS3Bucket"、
 "arn:aws: s3 ::: DestinationS3Bucket /*"
 
} 
 
}
  • ここで、同期は長い間完全に機能しており、まだ機能していますが、DestinationS3Bucketでの最後の数日から、ファイルにアクセスできませんサーバー側の暗号化アクセスが拒否されましたエラー。
  • SourceS3BucketとDestinationS3Bucketに暗号化がないこと(デフォルトの暗号化、なし)を確認し、コンテンツを同期するためにソースAWSアカウントシークレットとアクセスキーを使用しています。前もって感謝します。
5
Nitin

アカウントAの認証情報を使用してアカウントAの1つのS3バケットからアカウントBのバケットにファイルをコピーすると、宛先バケット内のファイルの所有者はアカウントAになります(アカウントAはアカウントBのファイルを作成したプリンシパルです)バケツ)。

ソースから宛先バケットへのファイルのコピー中に、--acl bucket-owner-full-controlオプション。アカウントBがファイルを制御できるようにします。そうしないと、アカウントBのバケットに、アカウントBがアクセスまたは制御できないファイルがある可能性があります。

別のオプションは、アカウントBの認証情報を使用して、ソースから宛先バケットにコピーすることです。これにより、コピーされたファイルの所有者はアカウントBになります。

18
John Hanley

John Hanelyが提供するソリューションは機能しますが、所有権がすぐに変わるわけではありません。変更するには、別のコマンドを実行する必要があります

最初の一歩:

aws s3 cp s3://yourbucket s3://yourbucket --recursive --acl bucket-owner-full-control

第二段階:

aws s3 cp s3://yourbucket s3://yourbucket --recursive --metadata-directive REPLACE

通知--meta-directive REPLACE

2
Aftab Naveed

この方法でファイルとメタデータを一緒に置き換える必要があります-

aws s3 cp s3://yourbucket s3://yourbucket --recursive --acl bucket-owner-full-control --metadata-directive REPLACE
2
Dart