Lightsail マルチパートアップロードによるバケットへのファイルのアップロード - Amazon Lightsail

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lightsail マルチパートアップロードによるバケットへのファイルのアップロード

マルチパートアップロードを使用すると、単一のファイルをパートのセットとしてバケットにアップロードできます。各パートは、ファイルのデータの連続する部分です。これらのファイルパートは、任意の順序で個別にアップロードできます。いずれかのパートの送信が失敗すると、他のパートに影響を与えることなくそのパートを再送することができます。ファイルのすべてのパートがアップロードされると、Amazon S3 はこれらのパートをアセンブルし、Amazon Lightsail のバケットにオブジェクトを作成します。通常、オブジェクトサイズが 100 MB 以上の場合は、単一のオペレーションでオブジェクトをアップロードする代わりに、マルチパートアップロードを使用することを考慮してください。バケットについての詳細は、「オブジェクトストレージ」を参照してください。

マルチパートアップロードの使用には、次の利点があります。

  • スループットの向上 − パートを並列にアップロードすることで、スループットを向上させることができます。

  • ネットワークの問題からの素早い回復 − パートサイズは比較的小さいため、ネットワークエラーにより失敗したアップロードを再開する際の影響を最小限に抑えることができます。

  • 時間をおいてアップロード - ファイルのパートを時間をおいてアップロードできます。マルチパートアップロードを開始してから、24 時間以内にマルチパートアップロードを完了します。

  • ファイルの最終的なサイズが不明な状態でアップロードを開始 –     ファイルの作成中でもアップロードを開始できます。

次の方法でマルチパートアップロードを使用することをお勧めします。

  • 安定した高帯域幅ネットワーク経由でラージファイルをアップロードする場合は、複数スレッドのパフォーマンスのために並行してファイルパートをアップロードする「マルチパートアップロード」を使用すると、可能な帯域幅の使用を最大化します。

  • むらがあるネットワークでアップロードを実行する場合は、マルチパートアップロードを使用して、アップロードの再開を回避することで、ネットワークエラーに対する弾力性を高めます。マルチパートアップロードを使用している場合、中断されたパートのみを対象にアップロードを再試行します。最初からやり直したり、ファイル全体を再度アップロードする必要はありません。

目次

マルチパートアップロードのプロセス

マルチパートアップロードには、Amazon S3 アクションを使用して、Lightsail のバケットにファイルをアップロードする 3 つのステップがあります。

  1. CreateMultipartUploadアクションを使って、マルチパートアップロードを開始します。

  2. UploadPartアクションを使ってファイルパートをアップロードします。

  3. CompleteMultipartUploadアクションを使ってマルチパートアップロードを実行します。

注記

AbortMultipartUploadアクションを使用して、マルチパートアップロードを開始した後に停止できます。

マルチパートアップロードのリクエストが完了すると、Amazon シンプルストレージサービスはアップロードされたパートからオブジェクトを構築します。その後、バケット内の他のオブジェクトにアクセスするのと同じ方法で、オブジェクトにアクセスできます。

進行中のすべてのマルチパートアップロードをリストしたり、特定のマルチパートアップロードにおいてアップロードが完了したパートのリスト表示を取得したりできます。このようなオペレーションのそれぞれについて、このセクションで説明します。

マルチパートアップロードの開始

マルチパートアップロードを開始するリクエストを送信すると、Amazon シンプルストレージサービスはアップロード ID を含むレスポンスを返します。これは、マルチパートアップロードの一意の識別子です。パートのアップロード、パートのリスト、アップロードの完了、アップロードの停止を行うときは常に、アップロード ID を指定する必要があります。アップロードされるオブジェクトを説明するメタデータを提供したい場合は、マルチパートアップロードを開始するリクエストでメタデータを指定する必要があります。

パートのアップロード

パートをアップロードするときは、アップロード ID に加えて、パート番号を指定する必要があります。1~10,000 の範囲で任意のパート番号を選択できます。パート番号によって、アップロードするオブジェクトに含まれるパートとその位置が一意に識別されます。選択するパート番号は、連続している必要はありません (例えば、1、5、14など)。以前にアップロードしたパートと同じパート番号を使って新しいパートをアップロードした場合、以前のパートは上書きされます。

パートをアップロードするたびに Amazon シンプルストレージサービスはレスポンスに ETag ヘッダーを返します。パートのアップロードごとに、パート番号と ETag 値を記録する必要があります。マルチパートアップロードを完了するためには、残りのリクエストにこれらの値を含める必要があります。

注記

マルチパートアップロードのすべてのアップロードされたパートは、バケットに保存されます。アップロードを完了するか、アップロードを停止するか、アップロードがタイムアウトするまで、バケットのストレージ容量を消費します。詳細については、このガイドで後述する「マルチパートアップロードの保持期間」を参照してください。

マルチパートアップロードの完了

マルチパートアップロードを完了すると、パート番号に基づいて昇順に連結されたオブジェクトが Amazon シンプルストレージサービスによって作成されます。マルチパートアップロードの開始リクエストにオブジェクトメタデータが提供されている場合、Amazon シンプルストレージサービスによってそのメタデータはオブジェクトに関連付けられます。完了リクエストが正常に処理されると、個々のパートはなくなります。

マルチパートアップロードの完了リクエストには、アップロード ID と、パート番号およびそれに対応する ETag 値の両方のリストが含まれている必要があります。Amazon シンプルストレージサービスからのレスポンスには、結合されるオブジェクトデータを一意に識別する ETag が含まれます。この ETag が、オブジェクトデータの MD5 ハッシュになるとは限りません。

マルチパートアップロードは停止することもできます。マルチパートアップロードを停止した後は、再度同じアップロード ID を使ってパートをアップロードすることはできません。キャンセルされたマルチパートアップロードの任意の部分のすべてのストレージが解放されます。パートのアップロードが進行しているときにマルチパートアップロードを停止した場合は、停止後もそのパートのアップロードは成功または失敗する可能性があります。すべてのパートによって使用されているストレージを全部解放するには、すべてのパートのアップロードが完了した後で初めてマルチパートアップロードを停止する必要があります。

マルチパートアップロードのリスト化

特定のマルチパートアップロードのパートや、進行中のすべてのマルチパートアップロードをリスト表示できます。パートのリストオペレーションでは、特定のマルチパートアップロードについて既にアップロードしたパートの情報が返されます。パートのリストリクエストを送信するたびに、指定したマルチパートアップロードのパート情報 (最大で 1,000 個のパート) が Amazon シンプルストレージサービスから返されます。マルチパートアップロードに 1,000 個を超えるパートが含まれる場合、すべてのパートを取得するにはパートのリストリクエストを追加で送信する必要があります。返されるパートのリストには、アップロード中のパートは含まれていないことに注意してください。マルチパートアップロードのリストオペレーションを使用すると、進行中のマルチパートアップロードのリストを取得できます。

進行中のマルチパートアップロードとは、開始されているものの、まだ完了または停止されていないアップロードを意味します。各リクエストに最大 1,000 個のマルチパートアップロードが返されます。進行中のマルチパートアップロードが 1,000 個を超える場合、残りのマルチパートアップロードを取得するには、リクエストを追加で送信する必要があります。返されるリストは確認の目的でのみ使用します。マルチパートアップロードの完了リクエストを送信するときに、リストの結果を使用しないでください。その代わりに、パートのアップロード時に指定したパート番号と、それに対応する、Amazon シンプルストレージサービスから返される ETag 値で構成される独自のリストを維持しておいてください。

マルチパートアップロードの同時オペレーション

分散開発環境においては、アプリケーションから同じオブジェクトに対して複数の更新が同時に開始されることもありえます。同じオブジェクトキーを使ってアプリケーションから複数のマルチパートアップロードが開始される可能性もあります。そのようなアップロードごとに、アプリケーションからパートのアップロードが行われ、アップロードの完了リクエストが Amazon シンプルストレージサービスに送信されて、オブジェクトが作成されます。バケットでバージョニングが有効になっている場合は、マルチパートアップロードを完了するたびに新しいバージョンが作成されます。バージョニングが有効になっていないバケットの場合は、マルチパートアップロードの開始から完了までの間に受信されたリクエストなど、他のリクエストが優先される可能性もあります。

注記

マルチパートアップロードを開始してから完了する前に受信したリクエストなど、他のリクエストが優先される可能性があります。たとえば、あるキーを使ってマルチパートアップロードを開始した後、マルチパートアップロードが完了しないうちに別のオペレーションによってそのキーが削除されることがあります。この場合、マルチパートアップロードの完了レスポンスによって、オブジェクトを確認できなくても、オブジェクト作成の成功が示される可能性があります。

マルチパートアップロードの保持期間

マルチパートアップロードのすべてのアップロードパートは、バケットに保存されます。アップロードを完了するか、アップロードを停止するか、またはアップロードがタイムアウトするまで、バケットのストレージ容量を消費します。マルチパートアップロードはタイムアウトになり、マルチパートアップロードが作成されてから 24 時間後に削除されます。マルチパートアップロードを停止するか、タイムアウトすると、アップロードされたすべてのパートが削除され、バケットで使用するために使用したストレージ領域が解放されます。

Amazon シンプルストレージサービスのマルチパートアップロード制限

次の表は、マルチパートアップロードの主な仕様をまとめたものです。

  • 最大オブジェクトサイズ:5 TB

  • アップロードあたりの最大パート数:10,000

  • パート番号:1~10,000(両端を含む)

  • パートサイズ:5 MB(最小)- 5 GB(最大) マルチパートアップロードの最後のパートには、サイズの制限はありません。

  • パートのリストリクエストで返されるパートの最大数:1,000

  • マルチパートアップロードのリストリクエストで返されるマルチパートアップロードの最大数:1,000

アップロードするファイルを分割します。

Linux または Unix オペレーティングシステムでsplitコマンドを使用して、ファイルを複数のパートに分割し、バケットにアップロードします。Windows オペレーティングシステムでファイルを分割するために使用できる同様のフリーウェア アプリケーションがあります。ファイルを複数のパートに分割した後、本ガイドの「マルチパートアップロードの開始」セクションに進んでください。

AWS CLI を使用したマルチパートアップロードの開始

AWS Command Line Interface (AWS CLI) を使用してマルチパートアップロードを開始するには、以下の手順を実行してください。これは、create-multipart-upload コマンドを使用して行います。詳細については、「AWS CLIコマンドリファレンス」の「create-multipart-upload」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Lightsail と Amazon S3 用に設定する必要があります。詳細については、「 Lightsail で使用するために AWS CLI を設定する」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 次のコマンドを入力して、バケットのマルチパートアップロードを作成します。

    aws s3api create-multipart-upload --bucket BucketName --key ObjectKey --acl bucket-owner-full-control

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • BucketName - マルチパートアップロードを作成するバケットの名前。

    • ObjectKey - アップロードするファイルに使用するオブジェクトキー。

    例:

    aws s3api create-multipart-upload --bucket DOC-EXAMPLE-BUCKET --key sailbot.mp4 --acl bucket-owner-full-control

    次の例のような結果が表示されます。レスポンスにはUploadIDが含まれており、以降のコマンドでパーツをアップロードしたり、このオブジェクトのマルチパートアップロードを完了させるために指定する必要があります。

    
            マルチパートアップロードの作成コマンドの結果

    マルチパートアップロード用のUploadID ができたら、このガイドの「AWS CLI を使用してパートをアップロードする」のセクションに進み、パートのアップロードを開始します。

AWS CLI を使用してパートをアップロードする

AWS Command Line Interface (AWS CLI)を使用して、マルチパートアップロードのパートをアップロードするには、以下の手順を実行してください。これは、upload-part コマンドを使用して行います。詳細については、「AWS CLI コマンドリファレンス」の「upload-part」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Lightsail と Amazon S3 用に設定する必要があります。詳細については、「 Lightsail で使用するために AWS CLI を設定する」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 以下のコマンドを入力して、パートをバケットにアップロードします。

    aws s3api upload-part --bucket BucketName --key ObjectKey --part-number Number --body FilePart --upload-id "UploadID" --acl bucket-owner-full-control

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • BucketName - マルチパートアップロードを作成するバケットの名前。

    • ObjectKey - アップロードするファイルに使用するオブジェクトキー。

    • Number - アップロードするパートのパート番号。パート番号によって、アップロードするオブジェクトに含まれるパートとその位置が一意に識別されます。アップロードするパートごとに、--part-number パラメータを段階的に増やしてください。そのためには、マルチパートアップロードの完了時に Amazon Simple Storage Service がオブジェクトをアセンブルする順序で番号を付けてください。

    • FilePart - コンピュータからアップロードするパートファイル。

    • UploadID - このガイドで前半で作成したマルチパートアップロードのアップロード IDです。

    例:

    aws s3api upload-part --bucket DOC-EXAMPLE-BUCKET --key sailbot.mp4 --part-number 1 --body sailbot.mp4.001 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    次の例のような結果が表示されます。アップロードするパートごとに、upload-part コマンドを繰り返します。パーツのアップロードリクエストの応答には、アップロードしたパートの ETag 値が含まれます。アップロードした各パーツの ETag 値を記録する。このガイドで後述するマルチパートアップロードを完了するには、すべての ETag 値が必要です。

    
            [upload-part (パートをアップロード)] コマンドの結果

AWS CLI を使用したマルチパートアップロードのパートのリスト化

AWS Command Line Interface (AWS CLI)を使用して、マルチパートアップロードのパートをリストにするには、以下の手順を実行してください。これは、list-parts コマンドを使用して行います。詳細については、「AWS CLI コマンドリファレンス」の「list-parts」を参照してください。

マルチパートアップロードでアップロードされたすべてのパーツのETag 値を取得するには、この手順を実行します。これらの値は、このガイドの後半でマルチパートアップロードを完了するために必要となります。ただし、パートのアップロードの応答からすべてのETag 値を記録した場合は、この手順をスキップして、このガイドの「マルチパートアップロード .json ファイルの作成」セクションに進むことができます。

注記

この手順を続行する前に、AWS CLI をインストールし、Lightsail と Amazon S3 用に設定する必要があります。詳細については、「 Lightsail で使用するために AWS CLI を設定する」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. バケットのマルチパートアップロードのパートをリストにするには、次のコマンドを入力します。

    aws s3api list-parts --bucket BucketName --key ObjectKey --upload-id "UploadID"

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • BucketName - マルチパートアップロードのパートをリストするバケットの名前。

    • ObjectKey - マルチパートアップロードのオブジェクトキー。

    • UploadID - このガイドの前半で作成したマルチパートアップロードのアップロード ID です。

    例:

    aws s3api list-parts --bucket DOC-EXAMPLE-BUCKET --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG"

    次の例のような結果が表示されます。レスポンスには、マルチパートアップロードでアップロードしたパーツのすべてのパート番号とETag 値がリスト表示されます。これらの値をクリップボードにコピーして、このガイドの「マルチパートアップロード .json の作成」セクションに進みます。

    
            [list-parts (パートをリストする)] コマンドの結果

マルチパートアップロード .json ファイルの作成

以下の手順で、アップロードしたすべてのパーツとそのETag 値を定義したマルチパートアップロード .json ファイルを作成します。これは、このガイドの後半で、マルチパートアップロードを完了するために必要です。

  1. テキストエディターを開き、このガイドの前のセクションでリクエストしたlist-parts コマンドからのレスポンスを貼り付けます。

    結果は次の例のようになります。

    
            マルチパートアップロード JSON ファイル番号 1
  2. 次の例に示すように、テキスト ファイルを再フォーマットします。

    
            マルチパートアップロード JSON ファイル番号 2
  3. テキスト ファイルを、コンピュータにmpstructure.json のように保存し、本ガイドの「AWS CLI を使用したマルチパートアップロードを完了」に進みます。

AWS CLI を使用したマルチパートアップロードの完了

AWS Command Line Interface (AWS CLI) を使用してマルチパートアップロードを完了するには、以下の手順を実行してください。これは、complete-multipart-upload コマンドを使用して行います。詳細については、「AWS CLIコマンドリファレンス」の「complete-multipart-upload」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Lightsail と Amazon S3 用に設定する必要があります。詳細については、「 Lightsail で使用するために AWS CLI を設定する」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 以下のコマンドを入力して、パートをバケットにアップロードします。

    aws s3api complete-multipart-upload --multipart-upload file://JSONFileName --bucket BucketName --key ObjectKey --upload-id "UploadID" --acl bucket-owner-full-control

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • JSONFileName - このガイドの前半で作成した .json ファイルの名前 (例:mpstructure.json)

    • BucketName - マルチパートアップロードを完了するバケットの名前

    • ObjectKey - マルチパートアップロードのオブジェクトキー

    • UploadID - このガイドの前半で作成したマルチパートアップロードのアップロード ID

    aws s3api complete-multipart-upload --multipart-upload file://mpstructure.json --bucket DOC-EXAMPLE-BUCKET --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    次の例に示すようなレスポンスが表示されます。これにより、マルチパートアップロードが完了したことを確認します。これで、オブジェクトがアセンブルされ、バケットで使用可能になります。

    
            [complete-multipart-upload (マルチパートアップロードの完了)] コマンドの結果

AWS CLI を使用した、バケットのマルチパートアップロードのリスト化

AWS Command Line Interface (AWS CLI) を使用してバケットのマルチパートアップロードをリストにするには、以下の手順を実行します。これは、list-multipart-uploads コマンドを使用して行います。詳細については、「AWS CLI コマンドリファレンス」の「list-multipart-uploads」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Lightsail と Amazon S3 用に設定する必要があります。詳細については、「 Lightsail で使用するために AWS CLI を設定する」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 以下のコマンドを入力して、パートをバケットにアップロードします。

    aws s3api list-multipart-uploads --bucket BucketName

    コマンドの中で、BucketNameを、すべてのマルチパートアップロードをリストアップしたいバケットの名前に置き換えます。

    例:

    aws s3api list-multipart-uploads --bucket DOC-EXAMPLE-BUCKET

    次の例に示すようなレスポンスが表示されます。

    
            [list-multipart-uploads (マルチパートアップロードのリスト化)] コマンドの結果

AWS CLI を使用したマルチパートアップロードの停止

AWS Command Line Interface (AWS CLI) を使用してマルチパートアップロードを完了するには、以下の手順を実行します。マルチパートアップロード開始したものの、それを続行したくない場合に、これを行います。これは、abort-multipart-upload コマンドを使用して行います。詳細については、「AWS CLI コマンドリファレンス」の「abort-multipart-upload」を参照してください。

注記

この手順を続行する前に、AWS CLI をインストールし、Lightsail と Amazon S3 用に設定する必要があります。詳細については、「 Lightsail で使用するために AWS CLI を設定する」を参照してください。

  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 以下のコマンドを入力して、パートをバケットにアップロードします。

    aws s3api abort-multipart-upload --bucket BucketName --key ObjectKey --upload-id "UploadID" --acl bucket-owner-full-control

    コマンドで、次のサンプルテキストを独自のテキストに置き換えます。

    • BucketName - マルチパートアップロードを停止するバケットの名前。

    • ObjectKey - マルチパートアップロードのオブジェクトキー。

    • UploadID - 停止するマルチパートアップロードのアップロード ID。

    例:

    aws s3api abort-multipart-upload --bucket DOC-EXAMPLE-BUCKET --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    このコマンドはレスポンスを返しません。以下のコマンドを実行するにはlist-multipart-uploadsコマンドを実行して、マルチパートアップロードが停止したことを確認します。