Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
한 Amazon S3 버킷의 모든 객체를 다른 버킷으로 복사하려면 어떻게 해야 합니까?
하나의 Amazon Simple Storage Service(S3) 버킷에서 다른 버킷으로 모든 객체를 복사하거나 이동하고 싶습니다.
간략한 설명
한 S3 버킷에서 다른 버킷으로 객체를 복사하려면 다음 옵션 중 하나를 선택합니다.
sync 명령은 크기가 그리 크지 않은 버킷에 적합합니다. sync 명령을 실행하여 수백만 개의 객체가 포함된 대형 버킷을 복사하면 비용이 많이 들고 복사 작업에서 시간 초과가 발생할 수 있습니다. 버킷을 복사할 때 제한 시간이 초과되는 경우 Amazon CloudWatch 지표를 사용하여 버킷의 객체 크기 및 수를 계산하십시오. S3 버킷에 수백만 개의 객체가 있는 경우 S3 배치 작업을 사용하여 객체를 복사하는 것이 좋습니다.
참고: 버킷의 객체를 다른 AWS 계정이 소유한 버킷으로 복사하려면 AWS Identity and Access Management(IAM)를 사용하여 교차 계정 권한을 설정하십시오. IAM 역할에 소스 객체에 대한 s3:GetObjectTagging 권한과 대상 객체에 대한 s3:PutObjectTagging 권한이 있는지 확인합니다.
동기화 성능을 높이고 객체를 더 빠르게 복사하려면 다음 중 하나 이상을 수행하십시오.
- 더 높은 동시성을 사용하도록 AWS CLI 조정
- 객체 이름 접두사를 기반으로 프로세스를 여러 동기화 명령으로 분할
- 모범 사례에 따라 S3 버킷 아키텍처를 정리
해결 방법
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
S3 버킷 간 객체 복사
한 버킷에서 다른 버킷으로 객체를 복사하려면 다음 단계를 완료하십시오.
-
Amazon Simple Storage Service Glacier 스토리지 클래스에 S3 객체를 보관했다면 해당 객체를 복원합니다.
-
다음 sync 명령을 실행하되 example_source_bucket 및 example_target_bucket을 S3 버킷 이름으로 바꾸십시오.
aws s3 sync s3://example_source_bucket s3://example_target_bucket
참고: sync 명령은 대상 버킷에 아직 없는 객체만 복사합니다. 모든 객체를 명시적으로 복사하려면 sync 명령 대신 cp 명령을 사용하십시오. 버전이 지정된 버킷에서 sync 명령을 사용하면 각 객체의 현재 버전만 복사됩니다. 기본적으로 이 동작은 객체 메타데이터를 보존합니다.
-
(선택 사항) 제한 시간이 초과되면 CloudWatch get-metric-statistics 명령을 사용하여 버킷 크기와 객체 수를 계산합니다.
버킷 크기를 계산하려면 다음 명령을 실행합니다.
aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=example_source_bucket Name=StorageType,Value=StandardStorage --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 3600 --statistics Average --unit Bytes --output json
버킷의 객체 수를 계산하려면 다음 명령을 실행합니다.
aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name NumberOfObjects --dimensions Name=BucketName,Value=example_source_bucket Name=StorageType,Value=AllStorageTypes --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 600 --statistic Average --output json
버킷 크기가 크고 수백만 개의 객체가 포함된 경우에는 sync 명령을 사용하지 마십시오. 대신 버킷을 복사할 때 S3 배치 작업을 사용하십시오.
중요: sync 명령을 실행할 때 액세스 제어 목록(ACL)은 소스 버킷에서 대상 버킷으로 복사되지 않습니다. 소스와 대상 버킷에 모두 활성 ACL이 있는 경우 대상 객체 ACL은 복사를 수행한 계정에 FULL_CONTROL 권한을 부여합니다. sync 명령 관련 문제를 해결하려면 두 Amazon S3 버킷 간에 객체를 복사할 수 없는 이유는 무엇입니까?를 참조하십시오.
객체가 복사되었는지 확인
객체가 복사되었는지 확인하려면 다음 단계를 완료하십시오.
- 소스 및 대상 버킷의 내용을 확인하려면 다음 ls 명령을 실행합니다.
aws s3 ls --recursive s3://example_source_bucket --summarize > bucket-contents-source.txt
참고: 대규모 버킷의 경우 ls 명령의 제한 시간이 초과될 수 있습니다. 대규모 버킷의 경우 ls 명령 대신 CloudWatch 지표를 사용하여 버킷 크기와 총 객체 수를 계산하십시오. 하지만 Amazon CloudWatch 지표는 하루에 한 번만 가져오므로 CloudWatch 결과는 ls 명령 결과와 다를 수 있습니다.aws s3 ls --recursive s3://example_target_bucket --summarize > bucket-contents-target.txt
- 이전 ls 명령에서 출력한 텍스트 파일을 사용하여 소스 버킷과 대상 버킷 간의 객체를 비교합니다. 출력은 다음 예와 비슷합니다.
2017-11-20 21:17:39 15362 s3logo.png Total Objects: 1 Total Size: 15362
참고: 소스 버킷에 대한 API 호출을 수행하는 애플리케이션 또는 워크로드가 있는 경우 해당 API 호출을 대상 버킷으로 업데이트하십시오. 쓰기가 빈번한 경우 소스 버킷과 대상 버킷 간의 불일치를 해결하기 위해 sync 명령을 실행해야 할 수 있습니다.
관련 정보
Amazon S3에서 대량 삭제를 수행한 후 응답하지 않는 목록 명령 문제를 해결하려면 어떻게 해야 합니까?
관련 콘텐츠
- 질문됨 4달 전lg...
- 질문됨 4달 전lg...
- 질문됨 6달 전lg...
- 질문됨 2년 전lg...
- 질문됨 7달 전lg...