객체 잠금을 사용하여 내 Amazon S3 버킷에서 크로스 계정 복제를 설정하려면 어떻게 해야 하나요?
객체 잠금 설정이 켜진 Amazon Simple Storage Service(Amazon S3) 버킷에 크로스 계정 복제를 설정하려고 합니다.
해결 방법
객체 잠금을 사용하여 Amazon S3 버킷에서 크로스 계정 복제를 설정하려면 다음 사전 조건을 완료하세요.
- 대상 버킷에 객체 잠금 설정이 켜져 있는지 확인합니다. 대상 버킷에 객체 잠금 설정이 켜져 있지 않은 경우 요청과 함께 AWS Support에 문의하세요.
- AWS Command Line Interface(AWS CLI) 또는 AWS CloudShell에 액세스할 수 있는지 확인하세요.
- 복제를 시작하기 전에 객체 잠금 토큰이 있어야 합니다.
1단계: 필요한 권한이 있는 복제용 IAM 역할 생성
1. Amazon S3에 대한 신뢰 관계가 있는 소스 계정에 대해 AWS Identity and Access Management(IAM) 콘솔에서 복제 역할을 생성합니다.
신뢰 관계는 다음과 같습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
2. 다음 권한을 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/*" ] } ] }
3. AWS Key Management Service(AWS KMS) 키를 사용하는 경우에는 다음 권한도 연결해야 합니다.
{ "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" } ] }
2단계: AWS KMS 키 권한 업데이트
대상 계정의 AWS KMS 키가 소스 계정의 복제 IAM 역할에 대한 액세스를 허용하는지 확인합니다.
예시:
{ "Sid": "AllowS3ReplicationSourceRoleToUseTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789101:role/s3-replication-role" }, "Action": [ "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": "*" }
참고: 관리형 AWS KMS 키 aws/S3은 크로스 계정 복제에 사용할 수 없습니다. 하지만 SSE-S3 암호화를 사용할 수 있습니다.
참고: 키 정책에서 리소스에 별표(*)를 사용하는 경우 정책은 복제 역할에만 키에 대한 권한을 부여합니다. 정책에 따라 복제 역할은 권한을 높일 수 없습니다.
3단계: 대상 계정에 다음 버킷 정책을 추가합니다.
주요 섹션에서는 1단계에서 생성한 복제 IAM 역할의 ARN을 추가해야 합니다.
{ "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" ] } ] }
4단계: 복제 .json 파일 생성
소스 계정에서 다음과 비슷한 replication.json이라는 파일을 생성합니다.
{ "Role": "arn:aws:iam::123456789012:role/s3-replication-role", "Rules": [ { "Status": "Enabled", "Priority": 10, "DeleteMarkerReplication": { "Status": "Disabled" }, "Filter": { "Prefix": "" }, "Destination": { "Bucket": "arn:aws:s3:::destination_bucket" } } ] }
이 파일에는 복제를 설정하는 JSON 구성의 파라미터가 포함되어 있습니다. 이 파라미터는 Amazon S3 콘솔을 사용하여 복제를 설정할 때 사용할 수 있는 것과 동일한 것입니다. 아직 Amazon S3 콘솔을 사용하여 복제를 설정할 수 없기 때문에 AWS CLI를 사용하여 복제를 설정해야 합니다.
s3-replication-role을 1단계의 IAM 역할로 교체해야 합니다. 또한 필요에 따라 대상 버킷, 접두사 사양 및 삭제 마커 기본 설정에 대한 ARN을 포함합니다.
5단계: 복제 설정
위 구성을 저장한 후 다음과 같은 AWS CLI 명령을 사용하여 파일을 전달합니다.
aws s3api put-bucket-replication --bucket <SOURCE BUCKET> --replication-configuration file://Replication.json --token <TOKEN>
이 명령에 사용할 객체 잠금 토큰 값을 가져오려면 AWS Support에 문의하세요. <TOKEN> 값은 소스 버킷의 객체 잠금 토큰입니다.
6단계: 확인
위 명령을 실행하면 소스 버킷에 복제 규칙이 추가됩니다. 이 규칙을 사용하면 새로 추가된 객체를 대상 버킷에 복제할 수 있습니다. 소스에 새 객체를 추가하고 대상을 확인하여 규칙을 테스트할 수 있습니다.
참고: 복제를 설정한 후 Amazon S3 콘솔을 사용하여 복제 구성을 업데이트할 수 있습니다. AWS KMS로 암호화된 객체를 복제하려면 암호화에서 AWS KMS로 암호화된 객체 복제를 선택하여 복제 구성을 수정합니다.
관련 정보
관련 콘텐츠
- 질문됨 3일 전lg...
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 2달 전