この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
AWS S3へ巨大なファイルをアップロードする際、より高速に転送するには「Multipart Uploads 」を利用することが推奨されています。
Multipart Uploadsは下記のように流れます。
- アップロードが開始
- オブジェクトパーツがアップロードされ
- すべてのオブジェクトパーツがアップロードされると、マルチパートのアップロードが完了
途中で、完了していないMultipart Uploadsはどうなりますか?
Multipart Uploads の完了リクエストが正常に送信されなかった場合、 S3 はパーツを組み立てず、オブジェクトを作成しません。したがって、パーツは Amazon S3 に残るため、Amazon S3 に保存されたパーツに対して料金が発生します。
これらのパーツは、パーツのアップロード時に指定されたストレージクラスに従って課金されます。
つまり、何らかの事情で、ファイルアップロードが中途半端な状態で終了してしまった場合、中途半端なデータが裏側で残り課金され続けるということのようです。
S3バケット内の不完全なマルチパートアップロードを手動で一覧表示できますか?
CLIで不完全なデータを確認
aws s3api list-multipart-uploads --bucket (バケット名)
確認結果
見づらいですね、複数のファイルのことを分かりましたが、トータルサイズなど直ぐわかりません。
「S3 Storage Lens」という機能はできます!!
Amazon S3 Storage Lensとは?
Amazon S3 Storage Lens は、使用状況とアクティビティのメトリクスを集約して、Amazon S3 コンソールページにあるアカウントスナップショットにこの情報を表示します。
S3 Storage Lens のダッシュボードを使用して、インサイトと傾向を可視化し、外れ値にフラグを付け、推奨事項を受け取って、ストレージコストの最適化とデータ保護のベストプラクティスの適用を行うことができます。
S3 Storage Lensを使用して、Multipart Uploadsを含むAWSアカウントとS3バケットを検出します。また、これらの不完全なMultipart Uploadsの結果として存在するデータの量を確認することもできます。
S3 Storage Lens のダッシュボード
AWSが既にデフォルトのダッシュボード「default-account-dashboard」を作成されています。
これを利用すれば、十分です。
やってみる
Amazon S3コンソールから「Storage Lens」の「ダッシュボード」をクリック
「default-account-dashboard」のダッシュボードを選択します。
デフォルトはログインしているAWSアカウント内全てS3の状況を表示されます。
一番下の[上位 N の概要]セクションまでスクロールして、
メトリックには、「未完了のMPUバイト数」を選択します。これは、マルチパートアップロードが不完全なスコープ内の合計バイト数を示しています。
③不完全なマルチパートアップロードバイトを含む上位バケットを表示されてます。
S3ライフサイクルを使って自動的削除されるよう
S3コンソールでバケットを選択した後、[管理]タブを選択します。ここでは、[ライフサイクルルールの作成]を選択します。
「delete-incomplete-mpu-7day」のライフサイクルルールに名前を付け
「期限切れの削除マーカーまたは不完全なマルチパートアップロードを削除する」にチェックすると
「不完全なマルチパートアップロードを削除」にチェックし、日数に「7」を入力すれば完了です。
ライフサイクルルールの作成とステータスの確認
最後に
この記事は、S3 Storage Lensを使用して不完全なMultipart Uploadsを含むS3バケットを検出し、S3ライフサイクルを使用してS3バケットの1つで不完全なMultipart Uploadsを自動的に中止しました。
どなたかの参考になれば幸いです〜。
参照
https://aws.amazon.com/jp/blogs/aws-cloud-financial-management/discovering-and-deleting-incomplete-multipart-uploads-to-lower-amazon-s3-costs/
https://aws.amazon.com/jp/blogs/aws/s3-storage-lens/
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/storage_lens.html