Amazon Lightsail マルチパートアップロードでのバケットへのファイルのアップロード
最終更新: 2022 年 1 月 10 日
マルチパートアップロードを使用すると、単一のファイルをパートのセットとしてバケットにアップロードできます。各パートは、ファイルのデータの連続する部分です。これらのファイルパートは、任意の順序で個別にアップロードできます。いずれかのパートの送信が失敗すると、他のパートに影響を与えることなくそのパートを再送することができます。ファイルのすべてのパートがアップロードされると、Amazon S3 パートをアセンブルし、Amazon Lightsail のバケットにオブジェクトを作成します。通常、オブジェクトサイズが 100 MB 以上の場合は、単一のオペレーションでオブジェクトをアップロードする代わりに、マルチパートアップロードを使用することを考慮してください。バケットの詳細については、Amazon Lightsail の オブジェクトストレージを参照してください。
マルチパートアップロードの使用には、次の利点があります。
スループットの向上 - パートを並列にアップロードすることで、スループットを向上させることができます。
ネットワークの問題からの素早い回復 - パートサイズは比較的小さいため、ネットワークエラーにより失敗したアップロードを再開する際の影響を最小限に抑えることができます。
時間をおいてアップロード - ファイルのパートを時間をおいてアップロードできます。マルチパートアップロードを開始してから、24 時間以内にマルチパートアップロードを完了します。
ファイルの最終的なサイズが不明な状態でアップロードを開始 – ファイルの作成中でもアップロードを開始できます。
次の方法でマルチパートアップロードを使用することをお勧めします。
安定した高帯域幅ネットワーク経由でラージファイルをアップロードする場合は、複数スレッドのパフォーマンスのために並行してファイルパートをアップロードする「マルチパートアップロード」を使用すると、可能な帯域幅の使用を最大化します。
むらがあるネットワークでアップロードを実行する場合は、マルチパートアップロードを使用して、アップロードの再開を回避することで、ネットワークエラーに対する弾力性を高めます。マルチパートアップロードを使用している場合、中断されたパートのみを対象にアップロードを再試行します。最初からやり直したり、ファイル全体を再度アップロードする必要はありません。
目次
マルチパートアップロードのプロセス
マルチパートアップロードは、Amazon S3 アクションを使って、Lightsail の、バケットにファイルをアップロードする 3 つのステップがあります。
CreateMultipartUploadアクションを使って、マルチパートアップロードを開始します。
UploadPartアクションを使ってファイルパートをアップロードします。
CompleteMultipartUploadアクションを使ってマルチパートアップロードを実行します。
注意
AbortMultipartUploadアクションを使用して、マルチパートアップロードを開始した後に停止できます。
マルチパートアップロードのリクエストが完了すると、Amazon S3 はアップロードされたパートからオブジェクトを構築します。その後、バケット内の他のオブジェクトにアクセスするのと同じ方法で、オブジェクトにアクセスできます。
進行中のすべてのマルチパートアップロードをリストしたり、特定のマルチパートアップロードにおいてアップロードが完了したパートのリスト表示を取得したりできます。このようなオペレーションのそれぞれについて、このセクションで説明します。
マルチパートアップロードの開始
マルチパートアップロードを開始するリクエストを送信すると、Amazon S3 はアップロード ID を含むレスポンスを返します。これは、マルチパートアップロードの一意の識別子です。パートのアップロード、パートのリスト、アップロードの完了、アップロードの停止を行うときは常に、アップロード ID を指定する必要があります。アップロードされるオブジェクトを説明するメタデータを提供したい場合は、マルチパートアップロードを開始するリクエストでメタデータを指定する必要があります。
パートのアップロード
パートをアップロードするときは、アップロード ID に加えて、パート番号を指定する必要があります。1~10,000 の範囲で任意のパート番号を選択できます。パート番号によって、アップロードするオブジェクトに含まれるパートとその位置が一意に識別されます。選択するパート番号は、連続している必要はありません (例えば、1、5、14など)。以前にアップロードしたパートと同じパート番号を使って新しいパートをアップロードした場合、以前のパートは上書きされます。
パートをアップロードするたびに Amazon S3 はレスポンスに ETag ヘッダーを返します。パートのアップロードごとに、パート番号と ETag 値を記録する必要があります。マルチパートアップロードを完了するためには、残りのリクエストにこれらの値を含める必要があります。
注意
マルチパートアップロードのすべてのアップロードされたパートは、バケットに保存されます。アップロードを完了するか、アップロードを停止するか、アップロードがタイムアウトするまで、バケットのストレージ容量を消費します。詳細については、このガイドで後述する「マルチパートアップロードの保持期間」を参照してください。
マルチパートアップロードの完了
マルチパートアップロードを完了すると、パート番号に基づいて昇順に連結されたオブジェクトが Amazon S3 によって作成されます。マルチパートアップロードの開始リクエストにオブジェクトメタデータが提供されている場合、Amazon S3 によってそのメタデータはオブジェクトに関連付けられます。完了リクエストが正常に処理されると、個々のパートはなくなります。
マルチパートアップロードの完了リクエストには、アップロード ID と、パート番号およびそれに対応する ETag 値の両方のリストが含まれている必要があります。Amazon S3 からのレスポンスには、結合されるオブジェクトデータを一意に識別する ETag が含まれます。この ETag が、オブジェクトデータの MD5 ハッシュになるとは限りません。
マルチパートアップロードは停止することもできます。マルチパートアップロードを停止した後は、再度同じアップロード ID を使ってパートをアップロードすることはできません。キャンセルされたマルチパートアップロードの任意の部分のすべてのストレージが解放されます。パートのアップロードが進行しているときにマルチパートアップロードを停止した場合は、停止後もそのパートのアップロードは成功または失敗する可能性があります。すべてのパートによって使用されているストレージを全部解放するには、すべてのパートのアップロードが完了した後で初めてマルチパートアップロードを停止する必要があります。
マルチパートアップロードのリスト化
特定のマルチパートアップロードのパートや、進行中のすべてのマルチパートアップロードをリスト表示できます。パートのリストオペレーションでは、特定のマルチパートアップロードについて既にアップロードしたパートの情報が返されます。パートのリストリクエストを送信するたびに、指定したマルチパートアップロードのパート情報 (最大で1,000個のパート) が Amazon S3 から返されます。マルチパートアップロードに 1,000 個を超えるパートが含まれる場合、すべてのパートを取得するにはパートのリストリクエストを追加で送信する必要があります。返されるパートのリストには、アップロード中のパートは含まれていないことに注意してください。マルチパートアップロードのリストオペレーションを使用すると、進行中のマルチパートアップロードのリストを取得できます。
進行中のマルチパートアップロードとは、開始されているものの、まだ完了または停止されていないアップロードを意味します。各リクエストに最大 1,000 個のマルチパートアップロードが返されます。進行中のマルチパートアップロードが 1,000 個を超える場合、残りのマルチパートアップロードを取得するには、リクエストを追加で送信する必要があります。返されるリストは確認の目的でのみ使用します。マルチパートアップロードの完了リクエストを送信するときに、リストの結果を使用しないでください。その代わりに、パートのアップロード時に指定したパート番号と、それに対応する、Amazon S3 から返される ETag 値で構成される独自のリストを維持しておいてください。
マルチパートアップロードの同時オペレーション
分散開発環境においては、アプリケーションから同じオブジェクトに対して複数の更新が同時に開始されることもありえます。同じオブジェクトキーを使ってアプリケーションから複数のマルチパートアップロードが開始される可能性もあります。そのようなアップロードごとに、アプリケーションからパートのアップロードが行われ、アップロードの完了リクエストが Amazon S3 に送信されて、オブジェクトが作成されます。バケットでバージョニングが有効になっている場合は、マルチパートアップロードを完了するたびに新しいバージョンが作成されます。バージョニングが有効になっていないバケットの場合は、マルチパートアップロードの開始から完了までの間に受信されたリクエストなど、他のリクエストが優先される可能性もあります。
注意
マルチパートアップロードを開始してから完了する前に受信したリクエストなど、他のリクエストが優先される可能性があります。たとえば、あるキーを使ってマルチパートアップロードを開始した後、マルチパートアップロードが完了しないうちに別のオペレーションによってそのキーが削除されることがあります。この場合、マルチパートアップロードの完了レスポンスによって、オブジェクトを確認できなくても、オブジェクト作成の成功が示される可能性があります。
マルチパートアップロードの保持期間
マルチパートアップロードのすべてのアップロードパートは、バケットに保存されます。アップロードを完了するか、アップロードを停止するか、またはアップロードがタイムアウトするまで、バケットのストレージ容量を消費します。マルチパートアップロードはタイムアウトになり、マルチパートアップロードが作成されてから 24 時間後に削除されます。マルチパートアップロードを停止するか、タイムアウトすると、アップロードされたすべてのパートが削除され、バケットで使用するために使用したストレージ領域が解放されます。
Amazon S3 マルチパートアップロードの制限
次の表は、マルチパートアップロードの主な仕様をまとめたものです。
最大オブジェクトサイズ: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 用にを設定する必要があります。詳細については、「AWS コマンドラインインターフェイスを Amazon Lightsail で動作させるための設定」を参照してください。
コマンドプロンプトまたはターミナルウィンドウを開きます。
次のコマンドを入力して、バケットのマルチパートアップロードを作成します。
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 用にを設定する必要があります。詳細については、「AWS コマンドライン インターフェイスを Amazon Lightsail で動作させるための設定」を参照してください。
コマンドプロンプトまたはターミナルウィンドウを開きます。
以下のコマンドを入力して、パートをバケットにアップロードします。
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 S3 がオブジェクトをアセンブルする順序で番号を付けてください。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
値が必要です。
AWS CLI を使用したマルチパートアップロードのパートのリスト化
AWS Command Line Interface (AWS CLI)を使用して、マルチパートアップロードのパートをリストにするには、以下の手順を実行します。これは、list-parts
コマンドを使用して行います。詳細については、「AWS CLI コマンドリファレンス」の「list-parts」を参照してください。
マルチパートアップロードでアップロードされたすべてのパーツのETag
値を取得するには、この手順を実行します。これらの値は、このガイドの後半でマルチパートアップロードを完了するために必要となります。ただし、パートのアップロードの応答からすべてのETag
値を記録した場合は、この手順をスキップして、このガイドの「マルチパートアップロード .json ファイルの作成」セクションに進むことができます。
注意
この手順を続行する前に、AWS CLI をインストールし、Lightsail とAmazon S3 用にを設定する必要があります。詳細については、「AWS コマンドライン インターフェイスを Amazon Lightsail で動作させるための設定」を参照してください。
コマンドプロンプトまたはターミナルウィンドウを開きます。
バケットのマルチパートアップロードのパートをリストにするには、次のコマンドを入力します。
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 の作成」セクションに進みます。
マルチパートアップロード .json ファイルの作成
以下の手順で、アップロードしたすべてのパーツとそのETag
値を定義したマルチパートアップロード .json ファイルを作成します。これは、このガイドの後半で、マルチパートアップロードを完了するために必要です。
テキストエディターを開き、このガイドの前のセクションでリクエストした
list-parts
コマンドからのレスポンスを貼り付けます。結果は次の例のようになります。
次の例に示すように、テキスト ファイルを再フォーマットします。
テキスト ファイルを、コンピュータに
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 用にを設定する必要があります。詳細については、「AWS コマンドラインインターフェイスを Amazon Lightsail で動作させるための設定」を参照してください。
コマンドプロンプトまたはターミナルウィンドウを開きます。
以下のコマンドを入力して、パートをバケットにアップロードします。
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
次の例に示すようなレスポンスが表示されます。これにより、マルチパートアップロードが完了したことを確認します。これで、オブジェクトがアセンブルされ、バケットで使用可能になります。
AWS CLI を使用した、バケットのマルチパートアップロードのリスト化
AWS Command Line Interface (AWS CLI) を使用してバケットのマルチパートアップロードをリストにするには、以下の手順を実行します。これは、list-multipart-uploads
コマンドを使用して行います。詳細については、「AWS CLI コマンドリファレンス」の「list-multipart-uploads」を参照してください。
注意
この手順を続行する前に、AWS CLI をインストールし、Lightsail とAmazon S3 用にを設定する必要があります。詳細については、「AWS コマンドラインインターフェイスを Amazon Lightsail で動作させるための設定」を参照してください。
コマンドプロンプトまたはターミナルウィンドウを開きます。
以下のコマンドを入力して、パートをバケットにアップロードします。
aws s3api list-multipart-uploads --bucket BucketName
コマンドの中で、BucketNameを、すべてのマルチパートアップロードをリストアップしたいバケットの名前に置き換えます。
例:
aws s3api list-multipart-uploads --bucket DOC-EXAMPLE-BUCKET
次の例に示すようなレスポンスが表示されます。
AWS CLI を使用したマルチパートアップロードの停止
AWS Command Line Interface (AWS CLI) を使用してマルチパートアップロードを完了するには、以下の手順を実行します。マルチパートアップロード開始したものの、それを続行したくない場合に、これを行います。これは、abort-multipart-upload
コマンドを使用して行います。詳細については、「AWS CLI コマンドリファレンス」の「abort-multipart-upload」を参照してください。
注意
この手順を続行する前に、AWS CLI をインストールし、Lightsail とAmazon S3 用にを設定する必要があります。詳細については、「AWS コマンドラインインターフェイスを Amazon Lightsail で動作させるための設定」を参照してください。
コマンドプロンプトまたはターミナルウィンドウを開きます。
以下のコマンドを入力して、パートをバケットにアップロードします。
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
コマンドを実行して、マルチパートアップロードが停止したことを確認します。
Lightsail でのバケットとオブジェクトの管理
Lightsail オブジェクトストレージバケットを管理するための一般的なステップは次のとおりです。
Amazon Lightsail オブジェクトストレージサービスのオブジェクトとバケットについて説明します。詳細については、「Amazon Lightsail のオブジェクトストレージ」を参照してください。
Amazon Lightsail でバケットに付けることができる名前について説明します。詳細については、「Amazon Lightsail のバケットの命名規則」を参照してください。
バケットを作成することにより、Lightsail オブジェクトストレージサービスの使用を開始します。詳細については、「Amazon Lightsail でのバケットの作成」を参照してください。
バケットのセキュリティに関するベストプラクティスと、バケットに対して設定できるアクセス許可について説明します。バケットのすべてのオブジェクトをパブリックまたはプライベートにすることも、個別のオブジェクトをパブリックにすることもできます。また、アクセスキーを作成し、バケットにインスタンスをアタッチし、他の AWS アカウントへのアクセスを許可して、バケットへのアクセスを許可することもできます。詳細については、「Amazon Lightsail オブジェクトストレージのセキュリティのベストプラクティス」と「Amazon Lightsail のバケットアクセス許可について」を参照してください。
バケットのアクセス許可について学習したら、次のガイドを参照してバケットへのアクセスを許可します。
バケットのアクセスログ記録を有効にする方法と、アクセスログを使用してバケットのセキュリティを監査する方法について説明します。詳細については、以下のガイドを参照してください。
Lightsail のバケットの管理をユーザーに許可する IAM ポリシーを作成します。詳細については、「Amazon Lightsail のバケットを管理する IAM ポリシー」を参照してください。
バケットのオブジェクトのラベル付けと識別方法について説明します。詳細については、「Amazon Lightsail のオブジェクトのキー名について」を参照してください。
バケットでファイルをアップロードする方法と、オブジェクトを管理する方法について説明します。詳細については、以下のガイドを参照してください。
オブジェクトのバージョニングを有効にして、バケットに保存されたあらゆるオブジェクトのあらゆるバージョンを保存、取得、復元することができます。詳細については、「Amazon Lightsail のバケットでのオブジェクトのバージョニングの有効化と一時停止」を参照してください。
オブジェクトのバージョニングを有効にすると、バケットのオブジェクトの以前のバージョンを復元できるようになります。詳細については、「Amazon Lightsail のバケットのオブジェクトの以前のバージョンの復元」を参照してください。
バケットの使用率をモニタリングします。詳細については、「Amazon Lightsail のバケットのメトリクスの表示」を参照してください。
バケットの使用率がしきい値を超えたときにバケットメトリクスが通知されるようにアラームを設定します。詳細については、「Amazon Lightsail のバケットメトリクスアラームの作成」を参照してください。
ストレージおよびネットワーク転送で不足している場合は、バケットのストレージプランを変更します。詳細については、「Amazon Lightsail のバケットのプランを変更する」を参照してください。
バケットを他のリソースに接続する方法について説明します。詳細については、以下のチュートリアルを参照してください。
バケットを使用しなくなった場合は、バケットを削除します。詳細については、「Amazon Lightsail のバケットの削除」を参照してください。