AWSでファイルや画像などを配置する場所として利用する場所はS3ですが、今回はS3を使用して利用料を節約できる方法をご紹介します。
サービスへの影響を気にすることなく簡単に設定できるの設定しておくことをオススメします。
マルチパートアップロードとは
簡単に言うと、大きなファイルを送信するときに細かく分割してアップロードすることです。
細かく分割することで並列してファイルを高速にアップロードしたり、中断した場合は、途中から再開したりといったことができます。
S3へマルチパートアップロードをする方法
AWS CLIを使ってaws s3 cpコマンドでファイルをアップロードする場合、ファイルサイズに応じて、マルチパートアップロードが自動的に使用されるので、意識しないうちにマルチパートアップロードが使用されています。
AWS CLI を使用して、Amazon S3 にファイルをマルチパートアップロードする方法を教えてください。
aws s3 コマンドはファイルサイズに応じてマルチパートアップロードおよびマルチパートダウンロードを自動的に実行するため、マルチパートアップロードおよびマルチパートダウンロードには、 aws s3 コマンド ( aws s3 cp など) を使用することをお勧めします。
デフォルトでは8MB以上のファイルのアップロードにはマルチパートアップロードが使われ10個同時に送信されます。この設定はカスタマイズ可能ですが普段はそんなに意識しなくても大丈夫だと思います。
- max_concurrent_requests 最大同時リクエスト数。デフォルト10
- multipart_threshold ここで設定したファイルサイズを超えたものはマルチパートアップロードになる。デフォルト8MB
- multipart_chunksize マルチパートアップロードで分割される1ファイルあたりのサイズ。デフォルト8MB
その他、RubyやJavaなどのSDKを使った場合でも高いレベルAPIではマルチパートアップロードが自動的に使われます。
Multipart Upload API を使用したオブジェクトのアップ
マルチパートアップロードのデメリット
ユーザーが知らないうちにマルチパートアップロードが使用されていることが多いのですが、まだ完了していない不完全なマルチパートアップロードをデフォルトではS3は永久に削除しません。そのため、長年S3を使っていると、不完全なマルチパートアップロードが溜まっていき、それに対してもS3のストレージ使用料がかかってしまいます。そのため、不完全なマルチパートアップロードには有効期限を設けて、古いものは自動的に削除した方が良いです。
バケットライフサイクルポリシーを使用した完了しないマルチパートアップロードの中止
ベストプラクティスとして、ストレージコストを最小限に抑えるため、ライフサイクルルールを設定することをお勧めします
古いマルチパートアップロードの自動削除の設定手順
AWSコンソールでS3バケットを選択して、Managementタブを選びAdd Lifecycle ruleをクリックしますます。
適当にわかりやすいルール名を入れます
Clean up Incomplete multipart uploadsにチェックします。日数は7日のままで良いと思います。
Saveボタンを押して完了です。
簡単に設定できて、S3の使用料の節約になるのでぜひやってみてください。