【Amazon S3】AWS Management Console と AWS CLI でのマルチパートアップロード方法を比べてみた

AWS

2025.2.6

Topics

はじめに

こんにちは。kisaragiです。
Amazon S3 にマルチパートアップロードを行う際にどんな方法を利用すればいいか迷ったので調査してみました。
本記事では、Amazon S3 コンソールアップロードと AWS CLI での方法で解説いたします。

前提

AWS CLI バージョン

C:\Users\kisaragi>aws --version
aws-cli/2.15.24 Python/3.11.6 Windows/10 exe/AMD64 prompt/off

AWS CLI を利用するためのクレデンシャルやインストール等の事前準備に関しては解説いたしません。

マルチパートアップロードとは?

単一のオブジェクトを複数に分割にてアップロード出来る機能です。
実際、以下の利点がありますので利用したい機能ですね。

  1. スループットの向上
    パートを並列にアップロードすることで、スループットを向上させることができます。
  2. ネットワーク問題からの迅速な回復
    パートサイズが小さいほど、ネットワークエラーにより失敗したアップロードを再開する際の影響を最小限に抑えることができます。
  3. オブジェクトのアップロードの一時停止と再開
    オブジェクトの複数のパートを徐々にアップロードできます。マルチパートアップロードを開始した後は終了期限がありません。マルチパートアップロードは明示的に完了または停止する必要があります。
  4. オブジェクトの最終的なサイズが不明な状態でアップロードを開始
    オブジェクトの作成中でもアップロードを開始できます。
    【出典:マルチパートアップロードを使用したオブジェクトのアップロードとコピー】

注意点

マルチパートアップロードの容量制限について

マルチパートアップロードは 5MB から 5TB まで適用されます。
Amazon S3 コンソールで直接アップロード出来るファイルの最大サイズは 160GB までという制限がありますので要注意です。
160GB を超えるファイルについては AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用してください。

不完全なマルチパートアップロードについて

ベストプラクティスとして、ストレージコストを最小限に抑えるため、AbortIncompleteMultipartUpload アクションを使用してライフサイクルルールを設定することをお勧めします。
【出典:不完全なマルチパートアップロードを削除するためのバケットライフサイクル設定の設定】

マルチパートアップロードが正常に終了しなかった場合、不完全なマルチパートアップロードとして残ります。
また、不完全なマルチパートアップロードもコストが発生しますので、ライフサイクルルールの設定等で削除することがベストプラクティスです。

Amazon S3 コンソールの使用

Amazon S3 コンソール画面から直接アップロードする方法です。
下記画像のように、ファイルを直接 Drag & Drop でアップロードするだけですので、超簡単です。

上記でも言及しましたが、アップロード出来るファイルの最大サイズは 160GB までという制限があります。
サイズが 160GB 以下のファイルの場合は一番簡単にアップロード出来る方法かと思います。

C:\Users\kisaragi>aws s3api list-parts --bucket kisaragi-multipart-upload-bucket --key "MultipartUploadTest.exe" --upload-id "bTKFkHb54hxxxxxxxx"
{
    "Parts": [
        {
            "PartNumber": 1,
            "LastModified": "2025-01-31T06:51:54+00:00",
            "ETag": "\"5677xxxxxxxxxxxxxxxxxxxxx\"",
            "Size": 17179870
        },
        {
            "PartNumber": 2,
            "LastModified": "2025-01-31T06:52:02+00:00",
            "ETag": "\"d822xxxxxxxxxxxxxxxxxxxxx\"",
            "Size": 17179870
        },
        {
            "PartNumber": 3,
            "LastModified": "2025-01-31T06:52:10+00:00",
            "ETag": "\"85bbxxxxxxxxxxxxxxxxxxxxx\"",
            "Size": 17179870

            ...(省略)
}

コンソールで直接アップロードしてもマルチパートアップロードが自動適用されるのか不安になる方もいるのではないかと思います。
上記のように、aws s3api list-parts コマンドで確認したところ、パートが複数に分割されてマルチパートアップロードが適用されていることが確認出来ます。これで安心ですね。

AWS CLI

Amazon S3 コンソールでのアップロードは 160GB までという制限がありましたが、AWS CLI を利用すると、5TB までアップロードすることが可能です。

AWS CLI を利用したマルチパートアップロードには、以下2つの方法があります。

  • aws s3 コマンド
  • aws s3api コマンド

どれを使えばいい?

重要: マルチパートアップロードおよびダウンロードには、aws s3 cp などの aws s3 コマンドを使用するのがベストプラクティスです。これは、aws s3 コマンドがファイルサイズに応じてマルチパートアップロードとダウンロードを自動的に実行するためです。aws s3 コマンドが特定のアップロードをサポートしていない場合にのみ、aws s3api コマンド (aws s3api create-multipart-upload など) を使用します。
【出典:AWS CLI を使用し、大きなファイルを複数に分割して Amazon S3 にアップロードするにはどうすれば良いですか?】

上記にも書いてある通り、マルチパートアップロードには aws s3 コマンドがベストプラクティスです。
下記例のように、aws s3 コマンドが特定のアップロードをサポートしていない場合のみ aws s3api を利用してください。

  • マルチパートアップロードに複数のサーバーが関係している場合
  • マルチパートアップロードを手動で停止して後で再開する場合
  • aws s3 コマンドが必須のリクエストパラメータをサポートしていない場合

aws s3 コマンド

aws s3 コマンドはマルチパートアップロードが自動適用されます。

aws s3 cp {ローカルファイル名} {S3のURL}

ローカルのファイルを Amazon S3 にコピーする基本的なコマンドの例です。

▼ cmdでの実行例

C:\Users\kisaragi>aws s3 cp MultipartUploadTest.exe s3://kisaragi-multipart-upload-bucket

aws s3api コマンド

aws s3api コマンドはマルチパートアップロードが自動適用されません。
そのため、事前に直接ファイルのパートを分割しておく必要がございます。

【出典:低レベルの aws s3api コマンドを使用】
上記に aws s3api コマンドでの手順が案内されていますので、ご参考ください。

まとめ

Amazon S3 コンソールアップロード AWS CLI : aws s3 コマンド AWS CLI : aws s3api コマンド
概要 Amazon S3 コンソール画面から直接アップロードする方法 AWS CLI API を利用してアップロードする方法 AWS CLI API を利用してアップロードする方法
手軽さ
柔軟性
容量制限 5MB ~ 160GB 5MB ~ 5TB 5MB ~ 5TB
マルチパートアップロードの適用 自動 自動 手動
マルチパートアップロードの停止及び再開 不可 不可 可能
通信方法 グローバル(HTTPS) グローバル(HTTPS)、プライベート ※1 グローバル(HTTPS)、プライベート ※1

※1 DirectConnectやVPNを用いたPrivateLink経由などによる接続設定が必要です。

表でまとめると、上記のようなイメージになります。
マルチパートアップロードを行う際に、少しでも参考になりましたら嬉しいです。

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

kisaragi

- 2024 Japan AWS Jr. Champions

2023年度新卒入社。出身は韓国です。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら