

# オブジェクトのアップロード
<a name="upload-objects"></a>

Amazon S3 にファイルをアップロードすると、S3 *オブジェクト*として保存されます。オブジェクトは、オブジェクトを記述するファイルデータとメタデータから構成されます。バケット内のオブジェクトの数に制限はありません。Amazon S3 バケットにファイルをアップロードするには、バケットに対する書き込みアクセス許可が必要です。アクセス許可の詳細については、[Amazon S3 用 Identity and Access Management](security-iam.md) を参照してください。

ファイルタイプ (イメージ、バックアップ、データ、ムービーなど) を問わず、各種のファイルを S3 バケットにアップロードできます。Amazon S3 コンソールを使用すると、アップロードできるファイルの最大サイズが 160 GB になります。160 GB を超えるファイルをアップロードするには、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用します。

バージョニングが有効なバケットに既に存在するキー名の付いたオブジェクトをアップロードした場合、Amazon S3 は既存のオブジェクトを置き換える代わりにオブジェクトの別バージョンを作成します。バージョニングを有効にする方法の詳細については、「[バケットでのバージョニングの有効化](manage-versioning-examples.md)」を参照してください。

 アップロードするデータのサイズに応じて、Amazon S3 には以下のオプションが用意されています。
+ **AWS SDK、REST API、または AWS CLI** を使用して 1 回のオペレーションでオブジェクトをアップロードする — 1 回の `PUT` オペレーションでは、最大 5 GB の単一のオブジェクトをアップロードできます。
+ **Amazon S3 コンソールを使用して 1 つのオブジェクトをアップロードする**** — **Amazon S3 コンソールでは、最大 160 GB のオブジェクトをアップロードできます。
+ **AWS SDK、REST API、または AWS CLI を使用してオブジェクトをいくつかに分けてアップロードする**** — ** マルチパートアップロード API を使用すると、最大 50 TB のサイズの単一の大容量オブジェクトをアップロードできます。

  マルチパートアップロード API オペレーションは大容量オブジェクトのアップロードを効率よく行えるように設計されています。1 つのオブジェクトをいくつかに分けてアップロードできます。オブジェクトのパートは、単独で、任意の順序で、または並行してアップロードできます。マルチパートアップロードは 5 MB～50 TB のオブジェクトで使用できます。詳細については、「[Amazon S3 でのマルチパートアップロードを使用したオブジェクトのアップロードとコピー](mpuoverview.md)」を参照してください。

5 TB を超えるファイルをアップロードするには、Java v1/v2、Python、または AWS CLI SDK で S3 Transfer Manager を使用します。最高のパフォーマンスを得るには、これらの SDK で最新の AWS 共通ランタイム (CRT) を使用します。これは、リソース使用率を向上させるために最適化されています。

メモリストリームから大きなオブジェクトをアップロードする場合、CRT は各パートを最大 5 GB までメモリにバッファリングし、割り当てられたメモリによって全体的なスループットを制限します。Java SDK の `maxNativeMemoryLimitInBytes` などの設定オプションを使用して CRT メモリ制限を調整できます。ディスクからのアップロードの場合、CRT は中間パートバッファリングではなく直接ディスクストリーミングに自動的に切り替え、メモリ使用量を改善します。この動作は大きなオブジェクトに対しては自動的に有効になりますが、AWS CLI の `should_stream` や Java SDK の `CRT_MEMORY_BUFFER_DISABLED` などのリクエストパラメータを介して小さなファイルに対して有効にすることもできます。

オブジェクトをアップロードすると、そのオブジェクトは、デフォルトでは Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用して自動的に暗号化されます。ダウンロードすると、オブジェクトは復号化されます。詳細については、「[Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定](bucket-encryption.md)」および「[暗号化によるデータの保護](UsingEncryption.md)」を参照してください。

オブジェクトをアップロードするときに、別の種類のデフォルト暗号化を使用する場合は、S3 `PUT` リクエストで AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を指定するか、SSE-KMS を使用してデータを暗号化するように送信先バケットのデフォルトの暗号化設定を設定することもできます。SSE-KMS に関する詳細は、「[AWS KMS (SSE−KMS) によるサーバー側の暗号化の指定](specifying-kms-encryption.md)」を参照してください。別のアカウントが所有している KMS キーを使用する場合は、そのキーを使用するアクセス許可が必要です。KMS キーのクロスアカウント権限の詳細については、**「AWS Key Management Service デベロッパーガイド」の「[他のアカウントで使用できる KMS キーを作成する](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)」を参照してください。

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

## オブジェクトのアップロード
<a name="upload-objects-procedure"></a>

### S3 コンソールの使用
<a name="upload-objects-by-drag-and-drop"></a>

この手順では、コンソールを使用してオブジェクトおよびフォルダを Amazon S3 バケットにアップロードする方法について説明します。

オブジェクトをアップロードする場合、オブジェクトキー名はファイル名および任意のプレフィックスになります。Amazon S3 コンソールでは、フォルダを作成してオブジェクトを整理できます。Amazon S3 では、フォルダはオブジェクトキー名に表示されるプレフィックスとして表されます。Amazon S3 コンソールのフォルダに個々のオブジェクトをアップロードする場合、フォルダ名はオブジェクトキー名に含まれます。

例えば、「`sample1.jpg`」という名前のオブジェクトを「`backup`」という名前のフォルダにアップロードすると、キー名は「`backup/sample1.jpg`」になります。ただし、オブジェクトはコンソールの `sample1.jpg` フォルダ内で `backup` として表示されます。有効なキー名の詳細については、[オブジェクトメタデータの使用](UsingMetadata.md) を参照してください。

**注記**  
Amazon S3 コンソールでオブジェクトの名前を変更したり、**ストレージクラス**、**暗号化**、または**メタデータ**などのプロパティを変更したりすると、新しいオブジェクトが作成され、古いオブジェクトが置き換えられます。S3 バージョニングが有効になっている場合は、オブジェクトの新しいバージョンが作成され、既存のオブジェクトが古いバージョンになります。また、プロパティを変更するロールは、新しいオブジェクト (またはオブジェクトのバージョン) の所有者になります。

フォルダをアップロードすると、Amazon S3 は、そのフォルダからすべてのファイルとサブフォルダをバケットにアップロードします。その後、アップロードしたファイルの名前とフォルダの名前を組み合わせたオブジェクトキー名が割り当てられます。例えば、`/images` と `sample1.jpg` の 2 つのファイルを含む `sample2.jpg` というフォルダをアップロードすると、Amazon S3 はファイルのアップロード後に、対応するキー名である `images/sample1.jpg` と `images/sample2.jpg` を割り当てます。キー名にはプレフィックスとしてフォルダ名が含まれています。Amazon S3 コンソールには、最後の `/` に続くキー名の部分のみが表示されます。例えば、`images` フォルダ内では `images/sample1.jpg` オブジェクトと `images/sample2.jpg` オブジェクトが `sample1.jpg` および `sample2.jpg` として表示されます。<a name="upload-files-folders"></a>

**フォルダとファイルを S3 バケットにアップロードするには**

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

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

1. [**Buckets (バケット)**] リストで、フォルダやファイルのアップロード先のバケットの名前を選択します。

1. [**Upload (アップロード)**] を選択します。

1. [**Upload**] (アップロード) ウィンドウで、次のいずれかの操作を行います。
   + ファイルとフォルダを [**Upload**] (アップロード) ウィンドウにドラッグアンドドロップします。
   + **[ファイルの追加]** または **[フォルダの追加]** を選択し、アップロードするファイルまたはフォルダを選択して **[開く]** を選択します。

1. バージョニングを有効にするには、[**Destination**] (送信先) で [**Enable Bucket Versioning**] (バケットバージョニングを有効化) を選択します。

1. 追加のアップロードオプションを設定せずにリストされたファイルとフォルダをアップロードするには、ページの下部で [**Upload**] (アップロード) を選択します。

   Amazon S3 はオブジェクトとフォルダをアップロードします。アップロードが完了すると、**[アップロード: ステータス]** ページに成功のメッセージが表示されます。<a name="configure-additional-properties"></a>

**追加のオブジェクトプロパティを設定するには**

1. アクセスコントロールリストの許可を変更するには、**[Permissions]** (許可) を選択します。

1. **[Access control list (ACL)]** (アクセスコントロールリスト (ACL) で、許可を編集します。

   オブジェクトのアクセス許可については、[S3 コンソールを使用した、オブジェクトの ACL アクセス権限の設定](managing-acls.md#set-object-permissions) を参照してください。アップロードするすべてのファイルについて、オブジェクトの読み取りアクセスをパブリック (世界中のすべてのユーザー) に付与できます。ただし、パブリック読み取りアクセスのデフォルト設定を変更しないことをお勧めします。パブリック読み取りアクセス権限の付与は、バケットがウェブサイトなどに使用されるなど、ユースケースの小さいサブセットに適用されます。オブジェクトをアップロードした後で、オブジェクトの許可をいつでも変更できます。

1. その他の追加プロパティを設定するには、**[Properties]** (プロパティ) を選択します。

1. **[ストレージクラス]** で、アップロードするファイルのストレージクラスを選択します。

   ストレージクラスの詳細については、[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md) を参照してください。

1. オブジェクトの暗号化設定を更新するには、[**Server−side encryption settings**] (サーバー側の暗号化設定) で、次の操作を行います。

   1. **[Specify an encryption key]** (暗号化キーを指定する) を選択します。

   1. **[暗号化設定]** で、**[デフォルトの暗号化にバケット設定を使用する]** または **[デフォルトの暗号化にバケット設定を上書きする]** を選択します。

   1. **[デフォルトの暗号化にバケット設定を上書きする]** を選択した場合は、次の暗号化設定を設定する必要があります。
      + Amazon S3 管理のキーを使用してアップロードされたファイルを暗号化するには、**[Amazon S3 マネージドキー (SSE−S3)]** を選択します。

        詳細については、「[Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)](UsingServerSideEncryption.md)」を参照してください。
      + AWS Key Management Service (AWS KMS) に保存されているキーを使用してアップロード済みファイルを暗号化するには、**AWS Key Management Service キー (SSE−KMS)** を選択します。次に、**AWS KMS キー**について、以下のいずれかのオプションを選択します。
        + 使用可能な KMS キーのリストから選択するには、**[AWS KMS keys から選択する]** を選択し、使用可能なキーのリストから自分の **KMS** キーを選択します。

          AWS マネージドキー (`aws/s3`) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、*AWS Key Management Serviceデベロッパーガイド*の「[カスタマーキーと AWS キー](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)」を参照してください。
        + KMS キー ARN を入力するには、**[AWS KMS key ARN を入力]** を選択し、表示されるフィールドに KMS キー ARN を入力します。
        + AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、**[KMS キーを作成]** を選択します。

          AWS KMS key の作成の詳細については、**「AWS Key Management Service デベロッパーガイド」の「[キーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)」を参照してください。
**重要**  
バケットと同じ AWS リージョン で使用可能な KMS キーのみを使用できます。Amazon S3 コンソールには、バケットと同じリージョンで最初の 100 個の KMS キーしか表示されません。リストに存在しない KMS キーを使用するには、KMS キー ARN を入力する必要があります。別のアカウントが所有している KMS キーを使用する場合は、まずそのキーを使用するアクセス許可が必要であり、次に KMS キー ARN を入力する必要があります。  
Amazon S3 では、対称暗号化 KMS キーのみがサポートされ、非対称暗号化 KMS キーはサポートされません。詳細については、*AWS Key Management Service デベロッパーガイド*の「[Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)」(対称および非対称 KMS キーの識別) を参照してください。

1. 追加のチェックサムを使用するには、**[On]** (オン) を選択します。次に、**[Checksum function]** (チェックサム関数) で、使用する関数を選択します。Amazon S3 は、オブジェクト全体を受け取った後、チェックサム値を計算して保存します。**[Precalculated value]** (事前計算された値) ボックスを使用して、事前計算された値を指定できます。その場合、Amazon S3 は、指定した値と計算した値を比較します。2 つの値が一致しない場合、Amazon S3 はエラーを生成します。

   追加のチェックサムを使用すると、データの検証に使用するチェックサムアルゴリズムを指定できます。追加のチェックサムの詳細については、「[Amazon S3 でのオブジェクトの整合性のチェック](checking-object-integrity.md)」を参照してください。

1. アップロードするすべてのオブジェクトにタグを追加するには、[**Add tag (タグの追加)**] を選択します。**[キー]** フィールドにタグ名を入力します。タグの値を入力します。

   オブジェクトのタグ付けにより、ストレージを分類する方法が提供されます。各タグはキーと値のペアです。キーとタグ値は大文字と小文字が区別されます。オブジェクトごとに最大 10 個のタグを持つことができます。タグキーには最大 128 個の Unicode 文字、タグ値には最大 255 個の Unicode 文字を使用できます。オブジェクトタグの詳細については、[タグを使用したオブジェクトの分類](object-tagging.md)を参照してください。

1. メタデータを追加するには、[**Add metadata**] (メタデータの追加) を選択します。

   1. [**Type**] (タイプ) で、[**System defined**] (システム定義) または [**User defined**] (ユーザー定義) を選択します。

      システム定義のメタデータの場合は、**Content−Type** や **Content−Disposition** などの一般的な HTTP ヘッダーを選択できます。システム定義のメタデータのリストと値を追加できるかどうかについては、[システムで定義されたオブジェクトメタデータ](UsingMetadata.md#SysMetadata) を参照してください。プレフィックス `x-amz-meta-` で始まるメタデータはすべてユーザー定義のメタデータとして扱われます。ユーザー定義メタデータはオブジェクトと共に保存され、オブジェクトのダウンロード時に返されます。キーと値の両方が US−ASCII 標準に従っている必要があります。ユーザー定義メタデータのサイズは最大 2 KB です。システム定義メタデータとユーザー定義メタデータの詳細については、[オブジェクトメタデータの使用](UsingMetadata.md) を参照してください。

   1. [**Key**] (キー) で、キーを選択します。

   1. キーの値を入力します。

1. オブジェクトをアップロードするには、[**Upload**] (アップロード) を選択します。

   Amazon S3 はオブジェクトをアップロードします。アップロードが完了すると、[**Upload: status**] (アップロード: ステータス) ページに成功のメッセージが表示されます。

1. [**終了**] を選択します。

### AWS CLI の使用
<a name="UploadObjSingleOpCLI"></a>

単一のオペレーションで、最大 5 GB のオブジェクトをアップロードする `PUT` リクエストを送信できます。詳細については、[https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html#examples](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html#examples)*AWS CLI コマンドリファレンス*での例を参照してください。

### REST API の使用
<a name="UploadObjSingleOpREST"></a>

REST リクエストを送信してオブジェクトをアップロードできます。`PUT` リクエストを送信して 1 回のオペレーションでデータをアップロードできます。詳細については、「[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)」を参照してください。

### AWS SDK の使用
<a name="UploadInSingleOp"></a>

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

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

## 同じキー名を持つオブジェクトのアップロードを禁止する
<a name="upload-objects-with-same-key-name"></a>

アップロード時の条件付き書き込みオペレーションを使用して、バケット内にオブジェクトが存在するかどうかを確認してからオブジェクトを作成できるようになりました。これにより、既存のデータの上書きを阻止できます。条件付き書き込みでは、アップロードする際にバケット内に同じキー名を持つ既存のオブジェクトが存在しないことを検証します。

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

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