

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

# データを Simple Storage Service (Amazon S3) にアップロードする
<a name="emr-plan-upload-s3"></a>

Simple Storage Service (Amazon S3) バケットにファイルをアップロードする方法については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットにオブジェクトを追加する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PuttingAnObjectInABucket.html)」を参照してください。Hadoop での Simple Storage Service (Amazon S3) の使用の詳細については、[http://wiki.apache.org/hadoop/AmazonS3](http://wiki.apache.org/hadoop2/AmazonS3) を参照してください。

**Topics**
+ [Amazon S3 バケットの作成と設定](#create-s3-bucket-input)
+ [Simple Storage Service (Amazon S3) 用のマルチパートアップロードを設定する](#Config_Multipart)
+ [ベストプラクティス](#emr-bucket-bestpractices)
+ [Amazon S3 Express One Zone にデータをアップロードする](emr-express-one-zone.md)

## Amazon S3 バケットの作成と設定
<a name="create-s3-bucket-input"></a>

Amazon EMR は、Amazon S3 AWS SDK for Java で を使用して、入力データ、ログファイル、および出力データを保存します。Simple Storage Service (Amazon S3) は、これらのストレージロケーションを*バケット*として参照します。バケットには、Simple Storage Service (Amazon S3) と DNS の要件に従って一定の制約と制限があります。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットの制約と制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)」を参照してください。

このセクションでは、Amazon S3 AWS マネジメントコンソール を使用して Amazon S3 バケットのアクセス許可を作成して設定する方法について説明します。また、Simple Storage Service (Amazon S3) API または AWS CLIを使用して、Simple Storage Service (Amazon S3) バケットのアクセス許可を作成および設定できます。変更と共に curl を使用して、Simple Storage Service (Amazon S3) の適切な認証パラメータを渡すこともできます。

以下のリソースを参照してください。
+ コンソールを使用してバケットを作成する方法については、「*Simple Storage Service (Amazon S3) ユーザーガイド*」の「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html)」を参照してください。
+ を使用してバケットを作成および操作するには AWS CLI、「Amazon [S3 ユーザーガイド」の「 で高レベルの S3 コマンドを使用する AWS Command Line Interface](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-s3-commands.html)」を参照してください。 *Amazon S3 *
+ SDK を使用してバケットを作成する方法については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットを作成する例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-get-location-example.html)」を参照してください。
+ curl を使用してバケットを操作する方法については、「[curl 用の Simple Storage Service (Amazon S3) 認証ツール](https://aws.amazon.com/code/amazon-s3-authentication-tool-for-curl/)」を参照してください。
+ リージョンの詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットへのアクセス](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html#access-bucket-intro)」を参照してください。
+ Amazon S3 Access Points を使用してバケットで作業する方法については、「*Simple Storage Service (Amazon S3) ユーザーガイド*の「[アクセスポイントでのバケット形式のエイリアスの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-alias.html)」を参照してください。Simple Storage Service (Amazon S3) バケット名の代わりに、Amazon S3 Access Points と Amazon S3 Access Points のエイリアスを合わせて簡単に使用できます。Simple Storage Service (Amazon S3) アクセスポイントのエイリアスは、既存アプリケーションと新しいアプリケーションの両方 (Spark、Hive、Presto など) に使用できます。

**注記**  
バケットのロギングを有効にした場合、有効になるのはバケットアクセスログのみです。Amazon EMR クラスターログは有効にはなりません。

バケットの作成中またはそれ以降に、アプリケーションに応じてバケットにアクセスするための適切なアクセス許可を設定できます。一般的に、お客様自身（オーナー）に読み書きのアクセス、認証されたユーザーに対しては読み込みアクセスを付与します。

クラスターを作成するには、必要な Simple Storage Service (Amazon S3) バケットが存在していなければなりません。クラスターで参照される必要なスクリプトまたはデータはすべて、Simple Storage Service (Amazon S3) にアップロードする必要があります。

## Simple Storage Service (Amazon S3) 用のマルチパートアップロードを設定する
<a name="Config_Multipart"></a>

Amazon EMR は AWS SDK for Java による Amazon S3 マルチパートアップロードをサポートしています。マルチパートアップロードを使用すると、単一のオブジェクトをパートのセットとしてアップロードすることができます。これらのオブジェクトパートは、任意の順序で個別にアップロードできます。いずれかのパートの送信が失敗すると、他のパートに影響を与えることなくそのパートを再送することができます。オブジェクトのすべてのパートがアップロードされたら、Simple Storage Service (Amazon S3) はこれらのパートを組み立ててオブジェクトを作成します。

詳細については、[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)の*マルチパートアップロードの概要*を参照してください。

さらに、Amazon EMR には、失敗したマルチパートアップロードのパートのクリーンアップをより正確に制御できるプロパティも用意されています。

マルチパートアップロードのための Amazon EMR の設定プロパティを次の表で説明します。これらは、`core-site` 設定分類を使用して設定することができます。詳細については、「*Amazon EMR リリースガイド*」の「[アプリケーションの設定](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/configure-apps.html)」を参照してください。


| 設定パラメータ名 | デフォルトの値 | 説明 | 
| --- | --- | --- | 
| fs.s3n.multipart.uploads.enabled | true | マルチパートアップロードを有効にするかどうかを示すブールタイプ。EMRFS の整合性のあるビューが有効になっていると、マルチパートアップロードがデフォルトで有効になっており、この値を false に設定しても無視されます。 | 
| fs.s3n.multipart.uploads.split.size | 134217728 | マルチパートアップロードが有効になっている場合に、EMRFS で新しいパートのアップロードを開始する前に、パートの最大サイズ (バイト単位) を指定します。最小値は `5242880` (5 MB) です。指定した値が小さい場合は、`5242880` が使用されます。最大数は `5368709120` (5 GB) です。指定した値が大きい場合は、`5368709120` が使用されます。<br />EMRFS のクライアント側で暗号化が無効になっていて、Simple Storage Service (Amazon S3) 向けに最適化されたコミッターも無効になっている場合は、この値によって、EMRFS でファイルのアップロードに `PutObject` リクエストではなくマルチパートアップロードを使用するようになるまでの、許容されるデータファイルの最大サイズも制御されます。詳細については、「」を参照してください。 | 
| fs.s3n.ssl.enabled | true | http と https のどちらを使用するかを示すブールタイプです。 | 
| fs.s3.buckets.create.enabled | false | バケットが存在しない場合に作成する必要があるかどうかを示すブールタイプです。false に設定すると、CreateBucket 操作で例外が発生します。 | 
| fs.s3.multipart.clean.enabled | false | 未完了のマルチパートアップロードの定期的なバックグラウンドクリーンアップを有効にするかどうかを示すブールタイプです。 | 
| fs.s3.multipart.clean.age.threshold | 604800 | マルチパートアップロードがクリーンアップの対象となるまでの最小期間 (秒単位) を指定する long 型です。デフォルトは 1 週間です。 | 
| fs.s3.multipart.clean.jitter.max | 10000 | 次回クリーンアップをスケジュールする前の 15 分間の固定遅延に追加するランダムのジッター遅延時間 (秒単位) の最大数を指定する整数型です。 | 

### マルチパートアップロードの無効化
<a name="emr-dev-multipart-upload"></a>

------
#### [ Console ]

**コンソールでマルチパートアップロードを無効にするには**

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

1. 左側のナビゲーションペインの **[EMR on EC2]** で、**[クラスター]** を選択し、**[クラスターの作成]** を選択します

1. **[ソフトウェアの設定]** の下で、次の設定を入力します: `classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false]`。

1. クラスターに適用するその他のオプションを選択します。

1. クラスターを起動するには、**[クラスターの作成]** を選択します。

------
#### [ CLI ]

**を使用してマルチパートアップロードを無効にするには AWS CLI**

この手順では、 AWS CLIを使用してマルチパートアップロードを無効にする方法を説明します。マルチパートアップロードを無効にするには、`create-cluster` コマンドを入力し、`--bootstrap-actions` パラメータを指定します。

1. 次の内容で `myConfig.json` ファイルを作成してコマンドを実行するのと同じディレクトリに保存します。

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "fs.s3n.multipart.uploads.enabled": "false"
       }
     }
   ]
   ```

1. 次のコマンドを入力し、{{myKey}} を EC2 キーペアの名前に置き換えます。
**注記**  
読みやすくするために、Linux 行連続文字 (\\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

   ```
   1. aws emr create-cluster --name "{{Test cluster}}" \
   2. --release-label {{emr-7.13.0}} --applications Name={{Hive}} Name={{Pig}} \
   3. --use-default-roles --ec2-attributes KeyName={{myKey}} --instance-type {{m5.xlarge}} \
   4. --instance-count {{3}} --configurations file://myConfig.json
   ```

------
#### [ API ]

**API を使用してマルチパートアップロードを無効にするには**
+ プログラムによる Simple Storage Service (Amazon S3) マルチパートアップロードについては、「*Amazon Simple Storage Service ユーザーガイド*」の「[マルチパートアップロードに AWS SDK for Java を使用する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMPDotJavaAPI.html)」を参照してください。

   AWS SDK for Java の詳細については、[AWS 「 SDK for Java](https://aws.amazon.com/sdkforjava/)」を参照してください。

------

## ベストプラクティス
<a name="emr-bucket-bestpractices"></a>

EMR クラスターで Simple Storage Service (Amazon S3) バケットを使用するための推奨事項を次に示します。

### バージョニングの有効化
<a name="emr-enable-versioning"></a>

バージョニングは、Amazon S3 バケット用の推奨設定です。バージョニングを有効にすると、データが誤って削除または上書きされても復元できます。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「[バージョニングの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)」を参照してください。

### 失敗したマルチパートアップロードをクリーンアップする
<a name="emr-multipart-cleanup"></a>

EMR クラスターコンポーネントは、Amazon S3 API で AWS SDK for Java を介したマルチパートアップロードを使用して、デフォルトでログファイルと出力データを Amazon S3 に書き込みます。 APIs Amazon EMR を使用した、この設定に関連するプロパティの変更の詳細については、「[Simple Storage Service (Amazon S3) 用のマルチパートアップロードを設定する](#Config_Multipart)」を参照してください。大きなファイルのアップロードでは、Simple Storage Service (Amazon S3) マルチパートアップロードが未完了になることがあります。マルチパートアップロードを正常に完了できないと、進行中のマルチパートアップロードによって継続的にバケットが使用され、ストレージ料金が発生します。過剰なファイルストレージを避けるために以下のオプションをお勧めします。
+ Amazon EMR で使用するバケットについては、Simple Storage Service (Amazon S3) でライフサイクル設定ルールを使用して、アップロードの開始日から 3 日後に未完了のマルチパートアップロードを削除します。ライフサイクル設定ルールを使用すると、オブジェクトのストレージクラスと有効期限を制御できます。詳細については、「[オブジェクトのライフサイクル管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)」および「[バケットライフサイクルポリシーを使用した不完全なマルチパートアップロードの中止](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)」を参照してください。
+ `fs.s3.multipart.clean.enabled` を `true` に設定し、他のクリーンアップパラメータをチューニングすることで、Amazon EMR のマルチパートクリーンアップ機能を有効にします。この機能は、大容量、大規模、および稼働時間が限られているクラスターで便利です。この場合は、ライフサイクル設定ルールの `DaysAfterIntitiation` パラメータが、最小に設定しても長すぎるため、Simple Storage Service (Amazon S3) ストレージでスパイクを発生させています。Amazon EMR のマルチパートクリーンアップでは、より正確に制御できます。詳細については、「[Simple Storage Service (Amazon S3) 用のマルチパートアップロードを設定する](#Config_Multipart)」を参照してください。

### バージョンマーカーを管理する
<a name="w2aac28c11c17c11b7c11b9"></a>

Simple Storage Service (Amazon S3) でライフサイクル設定ルールを有効にして、Amazon EMR で使用するバージョニング対応バケットについて期限切れのオブジェクト削除マーカーを削除することをお勧めします。バージョニング対応のバケットからオブジェクトを削除すると、削除マーカーが作成されます。オブジェクトの以前のバージョンすべてがその後有効期限切れになると、有効期限が切れたオブジェクトの削除マーカー 1 つがバケット内に残ります。これらの削除マーカーに対する料金はかかりませんが、期限切れのマーカーを削除すると LIST リクエストのパフォーマンスが向上する可能性があります。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「[バージョニングが有効なバケットのライフサイクル設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-bucket-with-versioning.html)」を参照してください。

### パフォーマンスに関するベストプラクティス
<a name="w2aac28c11c17c11b7c11c11"></a>

EMR クラスターやこれらのクラスターのアプリケーションでは、使い方やワークロードに応じて、バケットに対する多数のリクエストが発生することがあります。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[リクエスト率とパフォーマンスに関する考慮事項](https://docs.aws.amazon.com/AmazonS3/latest/userguide/request-rate-perf-considerations.html)」を参照してください。