S3 Batch operation 주의사항
여러 나라에 서비스를 제공할 때, 여러 region의 DB를 주기적으로 sync해야하는 것처럼 S3 bucket의 객체들을 정기적으로 복제해서 A bucket과 B bucket의 내용을 주기적으로 동일하게 맞춰야 하는 경우가 있습니다. 이 경우, s3 sync command를 schedule job으로 걸어주는 것보다 s3 batch operation을 활용하는 것이 더 효과적입니다. batch operation을 사용할 경우 다음과 같은 장점이 있습니다.
- 비용이 절약됩니다.
- 동기화 속도가 더 빠릅니다.
- 객체의 내용을 그대로 복제합니다. (s3 sync의 경우 metadata가 변경됩니다.)
batch operation(job) 사용 시, 주의할 점은 다음과 같습니다.
- batch job에 쓰이는 role은 source bucket에 대한 get 권한, destination bucket에 대한 put 권한이 필요합니다. 치소 권한으로 적용하고 싶으신 경우 아래 참고를 참조할 수 있습니다.
- report를 쓰고 싶은 경우 마찬가지로 batch job role에 report bucket에 대한 put 권한이 필요합니다.
- kms key를 사용하여 암호화된 객체를 복제할 경우, destination bucket으로 복제할 때 kms key로 재암호화해야 합니다.
- 반대로 기본 sse-s3 암호화로 객체를 복제할 경우, destination bucket으로 복제할 때 sse-s3로 재암호화해야 합니다. 즉, kms key로 암호화한 객체를 sse-s3로 복제하거나 그 반대는 불가능합니다.
- kms key를 사용하여 암호화된 객체를 복제할 경우, 경우 destination의 kms key policy에도 source bucket이 접근할 수 있는 권한을 부여해야 합니다.
참고