オブジェクトのダウンロード - Amazon Simple Storage Service

オブジェクトのダウンロード

このセクションでは、Amazon S3 バケットからオブジェクトをダウンロードする方法について説明します。Amazon S3 では、オブジェクトを 1 つ以上のバケットに保存できます。各オブジェクトの最大サイズは 5 TB です。アーカイブされていない Amazon S3 オブジェクトには、リアルタイムでアクセスできます。ただし、オブジェクトがアーカイブされている場合は、ダウンロードする前に復元する必要があります。アーカイブされたオブジェクトのダウンロードの詳細については、「アーカイブされたオブジェクトのダウンロード」を参照してください。

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して 1 つのオブジェクトをダウンロードできます。コードを記述したり、コマンドを実行したりせずに、S3 からオブジェクトをダウンロードするには、S3 コンソールを使用します。詳細については、「オブジェクトのダウンロード」を参照してください。

複数のオブジェクトをダウンロードするには、AWS CloudShell、AWS CLI、または AWS SDK を使用します。詳細については、「複数のオブジェクトのダウンロード」を参照してください。

オブジェクトの一部をダウンロードする必要がある場合は、AWS CLI または REST API で追加のパラメータを使用して、ダウンロードするバイトのみを指定します。詳細については、「オブジェクトの一部のダウンロード」を参照してください。

所有していないオブジェクトをダウンロードする必要がある場合は、オブジェクトの所有者に、そのオブジェクトのダウンロードを許可する署名付き URL を生成するよう依頼します。詳細については、「別の AWS アカウントに属するオブジェクトのダウンロード」を参照してください。

AWS ネットワーク外のオブジェクトをダウンロードする場合は、データ転送料金が適用されます。AWS ネットワーク内でのデータ転送は、同じ AWS リージョン内では無料ですが、GET リクエストに対しては料金がかかります。データ転送コストとデータ取得料金の詳細については、「Amazon S3 の料金」を参照してください。

オブジェクトのダウンロード

Amazon S3 コンソール、AWS CLI、AWS SDK、または REST API を使用してオブジェクトをダウンロードできます。

このセクションでは、Amazon S3 コンソールを使用して S3 バケットからオブジェクトをダウンロードする方法について説明します。

注記
  • 一度にダウンロードできるオブジェクトは 1 つだけです。

  • Amazon S3 コンソールを使用して、キー名がピリオド (.) で終わるオブジェクトをダウンロードすると、ダウンロードしたオブジェクトのキー名からピリオドが削除されます。ダウンロードしたオブジェクトの名前の末尾のピリオドを保持するには、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用する必要があります。

S3 バケットからオブジェクトをダウンロードするには
  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Buckets] (バケット) リストで、オブジェクトのダウンロード元になるバケット名を選択します。

  3. 次のいずれかの方法で、S3 バケットからオブジェクトをダウンロードできます。

    • オブジェクトの横にあるチェックボックスを選択し、[ダウンロード] を選択します。オブジェクトを特定のフォルダにダウンロードする場合は、[アクション] メニューの [名前を付けてダウンロード] を選択します。

    • オブジェクトの特定のバージョンをダウンロードする場合は、[バージョンの表示] ボタンを選択します。目的のオブジェクトのバージョンの横にあるチェックボックスをオンにして、[ダウンロード] を選択します。オブジェクトを特定のフォルダにダウンロードする場合は、[アクション] メニューの [名前を付けてダウンロード] を選択します。

次の get-object コマンド例は、AWS CLI を使用して Amazon S3 からオブジェクトをダウンロードする方法を示しています。このコマンドは、バケット amzn-s3-demo-bucket1 からオブジェクト folder/my_image を取得します。オブジェクトは、my_downloaded_image という名前のファイルにダウンロードされます。

aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_image my_downloaded_image

詳細と例については、「AWS CLI コマンドリファレンス」の「get-object」を参照してください。

AWS SDK を使用してオブジェクトをダウンロードする方法の例については、「Amazon S3 API リファレンス」の「コードの例」を参照してください。

さまざまな AWS SDK の使用に関する一般的な情報については、「Amazon S3 API リファレンス」の「Developing with Amazon S3 using the AWS SDKs」を参照してください。

REST API を使用して Amazon S3 からオブジェクトを取得できます。詳細については、「Amazon Simple Storage Service API リファレンス」の「GetObject」を参照してください。

複数のオブジェクトのダウンロード

AWS CloudShell、AWS CLI、または AWS SDK を使用して複数のオブジェクトをダウンロードできます。

AWS CloudShell はブラウザベースの事前に認証されたシェルで、AWS Management Console から直接起動できます。

AWS CloudShell の詳細については、「AWS CloudShell ユーザーガイド」の「CloudShell とは」を参照してください。

重要

AWS CloudShell の場合、ホームディレクトリのストレージは AWS リージョンごとに最大 1 GB です。そのため、合計がこの量を超えるオブジェクトとバケットを同期することはできません。その他の制限については、「AWS CloudShell ユーザーガイド」の「サービスクォータと制限」を参照してください。

AWS CloudShell を使用してオブジェクトをダウンロードするには
  1. AWS Management Console にサインインして、CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. 次のコマンドを実行して、バケット内のオブジェクトを CloudShell に同期します。次のコマンドでは、amzn-s3-demo-bucket1 という名前のバケットのオブジェクトを同期し、CloudShell に temp という名前のフォルダを作成します。CloudShell はオブジェクトをこのフォルダに同期します。このコマンドを使用するには、user input placeholders をユーザー自身の情報に置き換えます。

    aws s3 sync s3://amzn-s3-demo-bucket1 ./temp
    注記

    パターンマッチングを実行して特定のオブジェクトを除外するか含めるには、--exclude "value" パラメータや --include "value" パラメータを sync コマンドで使用できます。

  3. 次のコマンドを実行して、temp という名前のフォルダのオブジェクトを、temp.zip という名前のファイルに圧縮します。

    zip temp.zip -r temp/
  4. [アクション] を選択し、[ファイルをダウンロード] を選択します。

  5. ファイル名として「temp.zip」と入力し、[ダウンロード] を選択します。

  6. (オプション) CloudShell で temp.zip ファイルと temp フォルダに同期されているオブジェクトを削除します。AWS CloudShell の場合、永続的ストレージは AWS リージョンごとに最大 1 GB です。

    次のコマンド例を使用して、.zip ファイルとフォルダを削除できます。このコマンドの例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

    rm temp.zip && rm -rf temp/

次の例では、AWS CLI を使用して、指定したディレクトリまたはプレフィックスの下にあるすべてのファイルまたはオブジェクトをダウンロードする方法を示しています。このコマンドは、バケット amzn-s3-demo-bucket1 内のすべてのオブジェクトを現在のディレクトリにコピーします。このコマンド例を使用するには、amzn-s3-demo-bucket1 の代わりにバケット名を使用します。

aws s3 cp s3://amzn-s3-demo-bucket1 . --recursive

次のコマンドは、バケット amzn-s3-demo-bucket1 内のプレフィックス logs の下にあるすべてのオブジェクトを現在のディレクトリにダウンロードします。また、--exclude パラメータと --include パラメータを使用して、サフィックス .log が付いたオブジェクトのみをコピーします。このコマンドの例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

aws s3 cp s3://amzn-s3-demo-bucket1/logs/ . --recursive --exclude "*" --include "*.log"

詳細については、「AWS CLI コマンドリファレンス」の「cp」を参照してください。

AWS SDK を使用して Amazon S3 バケット内のすべてのオブジェクトをダウンロードする方法の例については、「Amazon S3 API リファレンス」の「コードの例」を参照してください。

さまざまな AWS SDK の使用に関する一般的な情報については、「Amazon S3 API リファレンス」の「Developing with Amazon S3 using the AWS SDKs」を参照してください。

オブジェクトの一部のダウンロード

AWS CLI または REST API を使用してオブジェクトの一部をダウンロードできます。そのためには、追加のパラメータを使用して、オブジェクトのどの部分をダウンロードするかを指定します。

次のコマンド例は、amzn-s3-demo-bucket1 という名前のバケットの folder/my_data という名前のオブジェクトの特定のバイト範囲に対する GET リクエストを行います。リクエストでは、バイト範囲にプレフィックスとして bytes= を付ける必要があります。オブジェクト部分は、my_data_range という名前の出力ファイルにダウンロードされます。このコマンドの例を実行するには、user input placeholders をユーザー自身の情報に置き換えます。

aws s3api get-object --bucket amzn-s3-demo-bucket1 --key folder/my_data --range bytes=0-500 my_data_range

詳細と例については、「AWS CLI コマンドリファレンス」の「get-object」を参照してください。

HTTP Range ヘッダーの詳細については、RFC Editor ウェブサイトで「RFC 9110」を参照してください。

注記

Amazon S3 は、1 回の GET リクエストで複数範囲のデータを取得することはサポートしていません。

Amazon S3 から複数のオブジェクト部分を取得するには、REST API で partNumber パラメータと Range パラメータを使用できます。詳細については、「Amazon Simple Storage Service API リファレンス」の「GetObject」を参照してください。

別の AWS アカウントに属するオブジェクトのダウンロード

署名付き URL を使用して、バケットポリシーを更新せずに、オブジェクトへの時間制限付きのアクセスを他のユーザーに許可できます。

署名付き URL をブラウザに入力するか、プログラムで使用してオブジェクトをダウンロードできます。URL で使用する認証情報は、URL を生成した AWS ユーザーの認証情報です。URL を作成すると、署名付き URL を持つすべてのユーザーが、URL の有効期限が切れるまで該当するオブジェクトをダウンロードできます。

Amazon S3 コンソールで次の手順に従い、オブジェクトを共有するための署名付き URL を生成できます。コンソールを使用する場合、署名付き URL の最大有効期限は作成時点から 12 時間です。

Amazon S3 コンソールを使用して署名付き URL を生成するには
  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. 左側のナビゲーションペインで、[バケット] を選択します。

  3. [バケット] リストで、署名付き URL を取得するオブジェクトが含まれているバケットの名前を選択します。

  4. [オブジェクト] リストで、署名付き URL を作成するオブジェクトを選択します。

  5. [オブジェクトアクション] メニューで、[署名付き URL で共有] を選択します。

  6. 署名付き URL の有効期間を指定します。

  7. [Create presigned URL] (署名付き URL を作成) を選択します。

  8. 確認メッセージが表示されると、URL は自動的にクリップボードにコピーされます。署名済み URL を再度コピーする必要がある場合は、署名済み URL をコピーするボタンが表示されます。

  9. オブジェクトをダウンロードするには、URL を任意のブラウザに貼り付けると、オブジェクトのダウンロードが試行されます。

署名付き URL とその作成方法の詳細については、「署名付き URL を使用したオブジェクトのダウンロードおよびアップロード」を参照してください。

アーカイブされたオブジェクトのダウンロード

アクセス頻度の低いオブジェクトのストレージコストを削減するには、それらのオブジェクトをアーカイブできます。オブジェクトをアーカイブすると、そのオブジェクトは低コストのストレージに移動されるため、リアルタイムでアクセスすることはできません。アーカイブされたオブジェクトをダウンロードするには、まず復元する必要があります。

ストレージクラスに応じて、アーカイブされたオブジェクトは、数分または数時間で復元できます。アーカイブされたオブジェクトは、Amazon S3 コンソール、S3 バッチオペレーション、Amazon S3 REST API、AWS SDK、および AWS Command Line Interface (AWS CLI) を使用して復元できます。

手順については、アーカイブされたオブジェクトの復元 を参照してください。アーカイブされたオブジェクトは、復元後にダウンロードできます。

メタデータに基づくオブジェクトのダウンロード

条件付き読み取りリクエストを使用して、メタデータに基づいてオブジェクトをダウンロードするための前提条件を追加できます。オブジェクトは、エンティティタグ (ETag) または最終更新日に基づいて返すことができます。これにより、S3 オペレーションを指定した日付以降に更新されたオブジェクトに制限したり、特定のオブジェクトバージョンのみを返したりできます。

条件付き書き込みは、GetObject または HeadObject リクエストに使用できます。

条件付きリクエストの詳細については、「条件付きリクエストを使用して S3 オペレーションに前提条件を追加する」を参照してください。

オブジェクトのダウンロードに関するトラブルシューティング

Amazon S3 からオブジェクトをダウンロードする場合、アクセス許可が不十分だったり、バケットや AWS Identity and Access Management (IAM) ユーザーポリシーが正しくなかったりすると、エラーが発生する可能性があります。これらの問題により、アクセス拒否 (403 Forbidden) エラーが発生し、Amazon S3 がリソースへのアクセスを許可できない場合があります。

アクセス拒否 (403 Forbidden) エラーの一般的な原因については、「Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング」を参照してください。