# Amazon S3, Put-If-Match(Compare-and-Swap) 기능 추가

> Clean Markdown view of GeekNews topic #17957. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17957](https://news.hada.io/topic?id=17957)
- GeekNews Markdown: [https://news.hada.io/topic/17957.md](https://news.hada.io/topic/17957.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-26T16:34:27+09:00
- Updated: 2024-11-26T16:34:27+09:00
- Original source: [aws.amazon.com](https://aws.amazon.com/about-aws/whats-new/2024/11/amazon-s3-functionality-conditional-writes/)
- Points: 4
- Comments: 1

## Topic Body

- # Amazon S3의 새로운 기능: 조건부 쓰기

  - Amazon S3는 이제 객체가 수정되지 않았는지 평가한 후 업데이트하는 조건부 쓰기를 수행할 수 있음. 이는 동일한 객체에 대한 동시 쓰기를 조정하고 여러 동시 작성자가 객체의 내용을 모르는 상태에서 의도치 않게 덮어쓰는 것을 방지하는 데 도움을 줌.
  
  - 이 기능은 S3 일반 목적 및 디렉토리 버킷 모두에서 S3 PutObject 또는 CompleteMultipartUpload API 요청을 통해 객체의 ETag를 제공하여 사용할 수 있음.

  - 조건부 쓰기는 여러 클라이언트가 공유 데이터 세트를 동시에 업데이트하는 분산 애플리케이션의 방식을 단순화함. HTTP if-none-match 조건부 헤더를 사용하여 객체가 생성되기 전에 존재하는지 확인하는 것과 유사하게, 클라이언트는 이제 API 요청에서 HTTP if-match 헤더를 통해 객체의 ETag를 지정하여 조건부 쓰기 검사를 수행할 수 있음.

  - S3는 객체의 ETag가 API 요청에서 제공된 값과 일치하는지 평가한 후 쓰기를 커밋하며, 조건이 충족될 때까지 클라이언트가 객체를 덮어쓰지 않도록 방지함.

  - 이 새로운 조건부 헤더는 대규모 분석, 분산 머신 러닝 및 기타 고도로 병렬화된 작업의 효율성을 개선하는 데 도움을 줄 수 있음.

  - 이 새로운 조건부 쓰기 기능은 모든 AWS 지역에서 추가 비용 없이 제공됨. AWS SDK, API 또는 CLI를 사용하여 조건부 쓰기를 수행할 수 있음. 조건부 쓰기에 대한 자세한 내용은 S3 사용자 가이드를 참조할 수 있음.

## Comments



### Comment 31738

- Author: neo
- Created: 2024-11-26T16:34:28+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42240678) 
- Amazon S3에서 조건부 쓰기 작업을 강제할 수 있는 기능이 추가되었음
  - S3에서 객체의 이름이 해시와 일치하도록 강제하는 기능을 원했음
  - 이는 콘텐츠 주소 지정 가능한 저장소를 구축하는 데 도움이 됨

- Turbopuffer.com은 객체 저장소 외의 의존성을 피하기 위해 이를 데이터베이스에서 사용해 왔음
  - Google Cloud Storage에서 시작한 지 1년 만에 S3에서 이 기능을 사용할 수 있게 되어 기쁨

- 강력한 일관성을 통해 원하는 기능의 절반을 달성했음

- 이 기능이 왜 중요한지 이해하기 어려워하는 사람도 있음

- 이는 비교 후 교환(compare-and-swap)보다는 비교 후 설정(compare-and-set)에 가까움

- 읽기 후 쓰기 일관성 보장과 결합하면 객체 저장소 위에 증분 추가 전용 저장소를 구축하는 데 완벽한 기반이 됨
  - 여러 작성자가 WAL에 접근할 때의 문제를 해결함

- Azure Blob Storage도 e-tag 및 낙관적 제어를 지원함
  - AWS의 기능과 어떻게 다른지 궁금해하는 사람도 있음

- AWS의 기본 ETag 알고리즘이 평범한 MD5 해시인 경우, MD5 충돌로 인해 객체 데이터가 실패할 가능성이 있는지 의문을 가짐
  - 서로 다른 사용자 제공 데이터가 항상 다른 ETag를 생성할 것이라고 가정하는 상황을 고려함

- Amazon S3의 오픈 소스 구현인 MinIO는 거의 2년 전부터 이 기능을 제공해 왔음
  - Amazon이 이제야 따라잡고 있음

- s3fs의 IfNoneMatch 기능에 대한 반응으로 여름에 새로운 기능이 추가되었음
  - 이 새로운 기능이 파일 시스템 추상화에서 어떻게 나타날지 궁금해하는 사람도 있음
