LoginSignup
4
1

More than 3 years have passed since last update.

S3オブジェクトの整合性について

Posted at

1. はじめに

今年入って、Amazon Web Serviceを使用したアプリケーション開発する機会をいただき、様々なマネージドサービスに触りました。
その際、S3へファイルアップロードをする機能に携わったので、やった内容を残します。

環境

  • macOS X 10.15.1
  • .NET Core 2.1
  • aws-sdk-dotnet

要件

  • アップロードするファイルは主に動画ファイル(中には5GB以上のものも)
  • アップロードしたファイルは、その後、各種マネージドサービスで利用可能性あり(動画変換、AI...)
  • サービスポリシーの都合により、アップロードしたファイルとの整合性を担保する必要あり

2. やったこと

上記の要件を満たすために、ハッシュ値を使って整合性をとろうと考えました。AWSの様々な記事を読んでいくと、以下のことがわかりました。

  • PUT API を使用すると、ETagにMD5のハッシュ値が入る
  • ただし、マルチパートでアップロードすると、分割したファイルのMD5値を合算した値 – 分割数 になってしまうこと
  • マルチパートアップロードの場合は各パートのアップロード時に実行する UploadPart の Content-MD5 にて、パートのMD5ダイジェスト値を渡すことで整合性の確認を行うことが可能

以上のことから、リクエストデータの中にパートのMD5ダイジェスト値を入れてマルチパートを使用してアップロードを行う実装に決めました。

以下のソースコードが実装した物です。

https://github.com/Takkiiii/aws-s3-sample
※認証情報や、パスなどは任意で変えて実行してください。

以上。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1