スキップしてコンテンツを表示

オブジェクトロックを使用して Amazon S3 バケット間でクロスアカウントレプリケーションを設定する方法を教えてください。

所要時間2分
0

オブジェクトロックが有効になっている Amazon Simple Storage Service (Amazon S3) バケットにクロスアカウントレプリケーションを設定したいと考えています。

解決策

宛先バケットで Object Lock を有効にする

Amazon S3 バケットにレプリケーションを設定するには、宛先バケットで Object Lock を有効にします。

: S3 Object Lock を有効にした後に、バケットで Object Lock を無効化したり、バージョニングを一時停止したりすることはできません。

必要なアクセス許可を持つレプリケーション用の IAM ロールを作成する

ソースアカウントにおいて、IAM コンソールでレプリケーション用の AWS Identity and Access Management (IAM) ロールを作成し、Amazon S3 との信頼関係を付与します。

例:


{  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": {  
        "Service": "s3.amazonaws.com"  
      },  
      "Action": "sts:AssumeRole"  
    }  
  ]  
}

IAM ロールに次の権限をアタッチします。


{  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "SourceBucketPermissions",  
      "Effect": "Allow",  
      "Action": [  
        "s3:GetObjectRetention",  
        "s3:GetObjectVersionTagging",  
        "s3:GetObjectVersionAcl",  
        "s3:ListBucket",  
        "s3:GetObjectVersionForReplication",  
        "s3:GetObjectLegalHold",  
        "s3:GetReplicationConfiguration"  
      ],  
      "Resource": [  
        "arn:aws:s3:::SourceBucketName/*",  
        "arn:aws:s3:::SourceBucketName"  
      ]  
    },  
    {  
      "Sid": "DestinationBucketPermissions",  
      "Effect": "Allow",  
      "Action": [  
        "s3:ReplicateObject",  
        "s3:ObjectOwnerOverrideToBucketOwner",  
        "s3:GetObjectVersionTagging",  
        "s3:ReplicateTags",  
        "s3:ReplicateDelete"  
      ],  
      "Resource": [  
        "arn:aws:s3:::DestBucketName/*"  
      ]  
    }  
  ]  
}

AWS Key Management Service (AWS KMS) キーを使用する場合は、IAM ロールに次の権限もアタッチしてください。


{  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "SourceBucketPermissions",  
      "Effect": "Allow",  
      "Action": [  
        "s3:GetObjectRetention",  
        "s3:GetObjectVersionTagging",  
        "s3:GetObjectVersionAcl",  
        "s3:ListBucket",  
        "s3:GetObjectVersionForReplication",  
        "s3:GetObjectLegalHold",  
        "s3:GetReplicationConfiguration"  
      ],  
      "Resource": [  
        "arn:aws:s3:::SourceBucketName/*",  
        "arn:aws:s3:::SourceBucketName"  
      ]  
    },  
    {  
      "Sid": "DestinationBucketPermissions",  
      "Effect": "Allow",  
      "Action": [  
        "s3:ReplicateObject",  
        "s3:ObjectOwnerOverrideToBucketOwner",  
        "s3:GetObjectVersionTagging",  
        "s3:ReplicateTags",  
        "s3:ReplicateDelete"  
      ],  
      "Resource": [  
        "arn:aws:s3:::DestBucketName/*"  
      ]  
    },  
    {  
      "Sid": "SourceBucketKMSKey",  
      "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKey"  
      ],  
      "Effect": "Allow",  
      "Resource": "SourceBucketKMSKeyARN"  
    },  
    {  
      "Sid": "DestinationBucketKMSKey",  
      "Action": [  
        "kms:Encrypt",  
        "kms:GenerateDataKey"  
      ],  
      "Effect": "Allow",  
      "Resource": "DestinationBucketKMSKeyARN"  
    }  
  ]  
}

AWS KMS キーのアクセス許可を更新する

宛先アカウントの AWS KMS キーを設定し、ソースアカウント内の複製した IAM ロールへのアクセスを許可します。SSE-S3 暗号化は使用できますが、クロスアカウントレプリケーションでは、マネージド AWS KMS キー aws/S3 を使用できません。詳細については、「暗号化オブジェクトのレプリケーション (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)」を参照してください。

例:


{  "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",  
  "Effect": "Allow",  
  "Principal": {  
    "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"  
  },  
  "Action": [  
    "kms:GenerateDataKey",  
    "kms:Encrypt"  
  ],  
  "Resource": "*"  
}

注: キーポリシーの Resource にワイルドカード (*) を使用した場合、そのポリシーは、レプリケートした IAM ロールにのみ AWS KMS キーへのアクセスを付与します。このポリシーでは、レプリケートしたロールのアクセス許可を昇格することはできません。

次のバケットポリシーを宛先アカウントに追加する

作成したレプリケーション IAM ロールの Amazon リソースネーム (ARN) を Principal セクションに追加します。

例:


{  "Version": "2012-10-17",  
  "Id": "PolicyForDestinationBucket",  
  "Statement": [  
    {  
      "Sid": "ReplicationPermissions",  
      "Effect": "Allow",  
      "Principal": {  
        "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"  
      },  
      "Action": [  
        "s3:ReplicateDelete",  
        "s3:ReplicateObject",  
        "s3:ObjectOwnerOverrideToBucketOwner",  
        "s3:GetBucketVersioning",  
        "s3:PutBucketVersioning"  
      ],  
      "Resource": [  
        "arn:aws:s3:::DestBucketName/*",  
        "arn:aws:s3:::DestBucketName"  
      ]  
    }  
  ]  
}

S3 バケットの IAM ロールをレプリケートする

次の手順を実行します。

  1. Amazon S3 コンソールを開きます。
  2. [バケット] を選択してから、ソースバケットを選択します。
  3. [管理] タブを選択します。
  4. [レプリケーションルール][レプリケーションルールを作成] を選択します。
  5. ルールの名前を入力します。
  6. [ソースバケット] でルールの範囲を選択し、レプリケーションを特定のオブジェクトプレフィックスに適用するか、バケットの内容全体に適用するかを決定します。
  7. [宛先] セクションで [他のアカウントのバケットを指定] を選択し、宛先バケットおよびアカウント ID を入力します
  8. [IAM ロール][既存の IAM ロールから選択] を選択します。
  9. [新しいロールを作成] を選択します。
    または、
    既存のレプリケーションルールがある場合は、IAM ロールの ARN を入力して作成済みのロールを使用します。
  10. AWS KMS で暗号化オブジェクトをレプリケートする方法を次に示します。
    [暗号化][AWS Key Management Service (AWS KMS) で暗号化されたオブジェクトを複製する] を選択します。
    AWS KMS キーの ARN を入力します。
  11. (オプション) [宛先のストレージクラス][追加のレプリケーションオプション] を設定します。
  12. 設定を確認した後、[保存] を選択します。
  13. (オプション) 1 回限りの Amazon S3 バッチ操作ジョブを使用して既存のオブジェクトを複製します。

IAM ロールがアカウント間で複製されたことを確認する

レプリケーションルールをテストするには、ソースバケットに新しいオブジェクトを追加し、宛先バケットでレプリケートされたオブジェクトの有無を確認します。

関連情報

S3 Object Lock を設定する

S3 Object Lock の動作

AWS公式更新しました 8ヶ月前
コメントはありません