Amazon S3が「条件付き書き込み」に対応。既にオブジェクトがある場合は上書きせず、分散アプリケーションでの利用が容易に
今回は「Amazon S3が「条件付き書き込み」に対応。既にオブジェクトがある場合は上書きせず、分散アプリケーションでの利用が容易に」についてご紹介します。
関連ワード (分散、発生、説明等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Amazon Web Servicesは、オブジェクトストレージを提供する「Amazon S3」の新機能として「条件付き書きこみ」(Conditional Writes)をサポートしたことを発表しました。
条件付き書き込みを利用すると、オブジェクトの書き込み時にオブジェクトの存在をチェックし、オブジェクトが存在しない時だけ書き込む、という指定が可能になります。
これにより、アプリケーションがデータをAmazon S3に書き込む際に、既存のオブジェクトを上書きすることを簡単に防ぐことができるようになります。
例えば、複数のクライアントが同一オブジェクトにデータを書き込んでいくような分散処理において、不用意に既存のデータを上書きしないように書き込む直前にオブジェクトを確認するといった処理をアプリケーションで作りこむ必要がなくなり、Amazon S3に任せることができるため、Amazon S3を使った分散アプリケーションの開発がよりシンプルになることが期待されます。
Amazon S3のドキュメントによると、条件付き書き込みの機能は「PutObject」と「CompleteMultipartUpload」の2つのAPIでサポートされています。
このAPIを呼び出す際のリクエストのヘッダに「If-None-Match」を付けると、該当するキーのオブジェクトがバケット内に存在せず書き込みが成功した場合には「200 OK」のステータスが返り、該当するキーが存在した場合には書き込みは失敗して「412 Precondition Faild」が返ります。
同時リクエストが発生して、オブジェクトに対する条件付き書き込み操作が完了する前にオブジェクトに対する削除リクエストが成功すると、「409 Conflict」が返る場合があると説明されています。
Amazon S3は条件付き読み込み、条件付き書き込みの両方の機能を備えたことになります。