

# オブジェクトのダウンロード
<a name="download-objects"></a>

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

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

5 TB を超えるオブジェクトをダウンロードするには、特定のバイト範囲を読み取るための `Range` HTTP ヘッダー、またはオブジェクトの特定の部分をダウンロードするための `partNumber` を含む同時 `GetObject` リクエストを使用します。単一の GET リクエストは 5 TB に制限されており、5 TB を超える GET リクエストには `405 - Method Not Allowed` エラーが表示されます。

大規模なオブジェクトのダウンロードには、Java v1/v2、Python、または AWS CLI SDK で S3 Transfer Manager を使用します。最高のパフォーマンスを得るには、これらの SDK で最新の AWS 共通ランタイム (CRT) を使用します。これは、リソース使用率を向上させるために最適化されています。CRT は、スループットを最適化するために個々の GET のサイズを自動的にスケーリングします。Java SDK の `maxNativeMemoryLimitInBytes` などのメモリ制限パラメータを使用してより多くのメモリを割り当てることで、全体的な転送スループットを向上させることができます。ダウンロードリクエストで、AWS CLI の `multipart_chunksize` や Java SDK の `minimumPartSizeInBytes` などのリクエストパラメータを使用して明示的なパートサイズを設定することで、この動作をオプトアウトできます。

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

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

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

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

**Topics**
+ [オブジェクトのダウンロード](#download-an-object)
+ [複数のオブジェクトのダウンロード](#download-multiple-objects)
+ [オブジェクトの一部のダウンロード](#download-objects-parts)
+ [別の AWS アカウントに属するオブジェクトのダウンロード](#download-objects-from-another-account)
+ [アーカイブされたオブジェクトのダウンロード](#download-archived-objects)
+ [メタデータに基づくオブジェクトのダウンロード](#download-objects-based-on-metadata)
+ [オブジェクトのダウンロードに関するトラブルシューティング](#download-objects-troubleshooting)

## オブジェクトのダウンロード
<a name="download-an-object"></a>

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

### S3 コンソールの使用
<a name="download-objects-console"></a>

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

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

**S3 バケットからオブジェクトをダウンロードするには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** または **[ディレクトリバケット]** を選択します。

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

    

1. 次のいずれかの方法で、S3 バケットからオブジェクトをダウンロードできます。
   + オブジェクトの横にあるチェックボックスを選択し、**[ダウンロード]** を選択します。オブジェクトを特定のフォルダにダウンロードする場合は、**[アクション]** メニューの **[名前を付けてダウンロード]** を選択します。
   + オブジェクトの特定のバージョンをダウンロードする場合は、**[バージョンの表示]** ボタンを選択します。目的のオブジェクトのバージョンの横にあるチェックボックスをオンにして、**[ダウンロード]** を選択します。オブジェクトを特定のフォルダにダウンロードする場合は、**[アクション]** メニューの **[名前を付けてダウンロード]** を選択します。

### の使用AWS CLI
<a name="download-object-cli"></a>

次の `get-object` コマンド例は、AWS CLI を使用して Amazon S3 からオブジェクトをダウンロードする方法を示しています。このコマンドは、バケット `amzn-s3-demo-bucket1` からオブジェクト `folder/my_image` を取得します。`my_downloaded_image.jpg` など、ダウンロードしたオブジェクトのファイル名である `outfile` を含める必要があります。

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

詳細については、「AWS CLI コマンドリファレンス」の「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html)」を参照してください。**

### AWS SDK の使用
<a name="download-object-sdk"></a>

AWS SDK を使用してオブジェクトをダウンロードする方法の例については、「Amazon S3 API リファレンス」の「[コードの例](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_GetObject_section.html)」を参照してください。**

さまざまな AWS SDK の使用に関する一般的な情報については、「Amazon S3 API リファレンス」の「[Developing with Amazon S3 using the AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)」を参照してください。**

### REST API の使用
<a name="download-object-rest"></a>

REST API を使用して Amazon S3 からオブジェクトを取得できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)」を参照してください。

## 複数のオブジェクトのダウンロード
<a name="download-multiple-objects"></a>

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

### AWS CloudShell で AWS マネジメントコンソール を使用する
<a name="download-objects-cloudshell"></a>

AWS CloudShell はブラウザベースの事前に認証されたシェルで、 から直接起動できます。AWS マネジメントコンソール

AWS CloudShell の詳細については、「AWS CloudShell ユーザーガイド」の「[CloudShell とは](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)」を参照してください。**

**重要**  
AWS CloudShell の場合、ホームディレクトリのストレージは AWS リージョンごとに最大 1 GB です。そのため、合計がこの量を超えるオブジェクトとバケットを同期することはできません。その他の制限については、「AWS CloudShell ユーザーガイド」の「[サービスクォータと制限](https://docs.aws.amazon.com/cloudshell/latest/userguide/limits.html)」を参照してください。**

**AWS CloudShell を使用してオブジェクトをダウンロードするには**

1. AWS マネジメントコンソール にサインインして、CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudshell/)) を開きます。

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

   ```
   aws s3 sync s3://amzn-s3-demo-bucket1 ./temp
   ```
**注記**  
`sync` コマンドはディレクトリバケットに対応していません。  
パターンマッチングを実行して特定のオブジェクトを除外するか含めるには、`--exclude "value"` パラメータや `--include "value"` パラメータを `sync` コマンドで使用できます。

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

   ```
   zip temp.zip -r temp/
   ```

1. **[アクション]** を選択し、**[ファイルをダウンロード]** を選択します。

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

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

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

   ```
   rm temp.zip && rm -rf temp/
   ```

### の使用AWS CLI
<a name="download-objects-cli"></a>

次の例では、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 コマンドリファレンス」の「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html)」を参照してください。**

### AWS SDK の使用
<a name="download-objects-sdks"></a>

AWS SDK を使用して Amazon S3 バケット内のすべてのオブジェクトをダウンロードする方法の例については、「Amazon S3 API リファレンス」の「[コードの例](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DownloadBucketToDirectory_section.html)」を参照してください。**

さまざまな AWS SDK の使用に関する一般的な情報については、「Amazon S3 API リファレンス」の「[Developing with Amazon S3 using the AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)」を参照してください。**

## オブジェクトの一部のダウンロード
<a name="download-objects-parts"></a>

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

### の使用AWS CLI
<a name="download-objects-part-cli"></a>

次のコマンド例は、`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 コマンドリファレンス」の「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object.html)」を参照してください。**

HTTP `Range` ヘッダーの詳細については、RFC Editor ウェブサイトで「[RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-range)」を参照してください。

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

### REST API の使用
<a name="download-objects-part-rest"></a>

Amazon S3 から複数のオブジェクト部分を取得するには、REST API で `partNumber` パラメータと `Range` パラメータを使用できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)」を参照してください。

## 別の AWS アカウントに属するオブジェクトのダウンロード
<a name="download-objects-from-another-account"></a>

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

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

### S3 コンソールでの署名付き URL の使用
<a name="download-objects-presigned"></a>

Amazon S3 コンソールを使用して、汎用バケット内のオブジェクトを共有するための署名付き URL を以下の手順で生成できます。コンソールを使用する場合、署名付き URL の最大有効期限は作成時点から 12 時間です。

**Amazon S3 コンソールを使用して署名付き URL を生成するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

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

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

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

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

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

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

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

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

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

## アーカイブされたオブジェクトのダウンロード
<a name="download-archived-objects"></a>

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

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

手順については、「[アーカイブされたオブジェクトの復元](restoring-objects.md)」を参照してください。アーカイブされたオブジェクトは、復元後にダウンロードできます。

## メタデータに基づくオブジェクトのダウンロード
<a name="download-objects-based-on-metadata"></a>

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

条件付き書き込みは、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) または [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) リクエストに使用できます。

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

## オブジェクトのダウンロードに関するトラブルシューティング
<a name="download-objects-troubleshooting"></a>

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

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

オブジェクトにアクセスしようとしたときに 404 NoSuchKey エラーが発生した場合は、AWS re:Post 情報センターの「[Amazon S3 で発生する 404 NoSuchKey エラーのトラブルシューティング方法を教えてください](https://repost.aws/knowledge-center/404-error-nosuchkey-s3)」を参照してください。