개발공부/AWS 구조와 서비스

[궁금증] S3에서 객체 업로드 시 비용이 발생하지 않도록 하려면 어떻게 해야하나?

기억지기 개발자 2023. 7. 21. 15:26
각 버전은 별개의 객체로 보존되기 때문에 추가 요금이 발생한다.
객체 갱신 시(put)에는 기존 객체와 다른 새로운 버전 ID가 부여된다.

 

라고 책에 나와있었다. 그런데 의문이 들었다.

 

❓최대한 한 번에 객체를 업로드하려고 해도 계속해서 추가로 객체를 업로드할 일이 생길 텐데 그럴 때마다 비용이 발생한다는 것이 께름칙(?)해서 비용이 발생하지 않게 하도록 하는 방법이 없는지 의문이 들었다. 

 

  1. 버전 관리 비활성화: 이미지를 업로드할 때 버전 관리를 비활성화합니다. 버전 관리를 비활성화하면 새로운 객체 업로드 시 이전 버전은 보존되지 않으므로 스토리지 요금을 최소화할 수 있습니다.
  2. Overwrite 사용: 이미지를 업로드할 때 동일한 객체 키(Object Key)를 사용하여 Overwrite(덮어쓰기) 옵션을 사용합니다. 이렇게 하면 동일한 객체 키를 가진 이미지를 업로드할 때마다 새로운 버전이 생성되는 것이 아니라 기존 버전이 덮어씌워지며, 버전 관리 비활성화 상태에서도 새로운 객체가 생성되지 않습니다.
  3. 필요한 경우 롤백 기능 사용: 필요한 경우 객체를 롤백(복원)할 수 있도록 백업을 별도로 관리합니다. 예를 들어, S3 버킷 외부에 이미지의 백업을 유지하고 필요할 때 해당 백업으로 롤백하는 방식으로 관리할 수 있습니다.
  4. 다른 객체 키 사용: 다른 이미지를 업로드할 때는 객체 키를 변경하여 새로운 객체로 업로드합니다. 이렇게 하면 새로운 객체가 생성되어 기존 이미지와 독립적으로 관리되며, 추가적인 스토리지 요금을 발생시키지 않습니다.
  5. 자동 삭제 정책 사용: 더 이상 필요하지 않은 이미지를 자동으로 삭제하는 정책을 설정하여 스토리지 비용을 줄일 수 있습니다. 예를 들어, 오래된 이미지를 자동으로 삭제하는 수명주기(Lifecycle) 정책을 사용할 수 있습니다.

내가 일차적으로 바로 떠오른 방법은 버전 관리를 비활성화 하는 것인데 그 부분이 직관적 일지는 몰라도 리스크가 존재했다. 

버전 관리를 비활성화하려면 AWS Management Console 또는 AWS CLI(Command Line Interface)을 사용하여 S3 버킷의 버전 관리 설정을 변경할 수 있습니다. 버전 관리를 비활성화하면 해당 버킷에서 객체들에 대한 이전 버전은 보존되지 않으므로 주의해야 합니다. 만약 이전 버전의 객체를 보존해야 하거나, 데이터를 롤백하는 등의 기능이 필요하다면, 버전 관리를 활성화해야 합니다.

 

 

<<공식 사이트에서 알려준 비용 절감 방법>>