

AWS Data Pipeline は新規顧客には利用できなくなりました。の既存のお客様は、通常どおりサービスを AWS Data Pipeline 引き続き使用できます。[詳細はこちら](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

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

# リソース
<a name="dp-object-resources"></a>

 AWS Data Pipeline リソースオブジェクトは次のとおりです。

**Topics**
+ [Ec2Resource](dp-object-ec2resource.md)
+ [EmrCluster](dp-object-emrcluster.md)
+ [HttpProxy](dp-object-httpproxy.md)

# Ec2Resource
<a name="dp-object-ec2resource"></a>

パイプラインアクティビティによって定義された作業を実行する Amazon EC2 インスタンス。

AWS Data Pipeline は、Amazon EC2 インスタンスの IMDSv2 をサポートするようになりました。これにより、セッション指向の方法を使用して、インスタンスからメタデータ情報を取得するときに認証をより適切に処理できます。セッションは、Amazon EC2 インスタンスで実行されているソフトウェアが、ローカルに保存されている Amazon EC2 インスタンスのメタデータと認証情報にアクセスするために使用する一連のリクエストを開始および終了します。ソフトウェアは IMDSv2 への単純な HTTP PUT リクエストでセッションを開始します。IMDSv2 は、Amazon EC2 インスタンスで実行されているソフトウェアにシークレットトークンを返します。このトークンをパスワードとして使用して、IMDSv2 にメタデータと認証情報をリクエストします。

**注記**  
Amazon EC2 インスタンスに IMDSv2 を使用するには、デフォルトの AMI は IMDSv2 と互換性がないため、設定を変更する必要があります。次の SSM パラメータ経由で取得できる新しい AMI バージョンを指定できます。`/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-ebs`

インスタンスを指定しない場合に が AWS Data Pipeline 作成するデフォルトの Amazon EC2 インスタンスについては、「」を参照してください[AWSリージョン別のデフォルトのAmazon EC2インスタンス](dp-ec2-default-instance-types.md)。

## 例
<a name="ec2resource-example"></a>

**EC2-Classic**

**重要**  
2013 年 12 月 4 日より前に作成された AWS アカウントのみが EC2-Classic プラットフォームをサポートしています。これらのアカウントのいずれかがある場合、VPC ではなく EC2-Classic ネットワークでパイプラインの EC2Resource オブジェクトを作成するオプションがあることがあります。VPC ですべてのパイプラインのリソースを作成することを強くお勧めします。さらに、EC2-Classic に既存のリソースがある場合は、それらを VPC に移行することをお勧めします。

次のオブジェクト例では、オプションフィールドをいくつか設定し、EC2-Classic で EC2 インスタンスを起動します。

```
{
  "id" : "MyEC2Resource",
  "type" : "Ec2Resource",
  "actionOnTaskFailure" : "terminate",
  "actionOnResourceFailure" : "retryAll",
  "maximumRetries" : "1",
  "instanceType" : "m5.large",
  "securityGroups" : [
    "test-group",
    "default"
  ],
  "keyPair" : "my-key-pair"
}
```

**EC2-VPC**

次のオブジェクト例では、オプションフィールドをいくつか設定し、デフォルト以外の VPC で EC2 インスタンスを起動します。

```
{
  "id" : "MyEC2Resource",
  "type" : "Ec2Resource",
  "actionOnTaskFailure" : "terminate",
  "actionOnResourceFailure" : "retryAll",
  "maximumRetries" : "1",
  "instanceType" : "m5.large",
  "securityGroupIds" : [
    "sg-12345678",
    "sg-12345678"
  ],
  "subnetId": "subnet-12345678",
  "associatePublicIpAddress": "true",
  "keyPair" : "my-key-pair"
}
```

## 構文
<a name="ec2resource-syntax"></a>


****  

| 必須フィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| resourceRole | Amazon EC2 インスタンスがアクセスできるリソースを制御する IAM ロール。 | String | 
| ロール | が EC2 インスタンスの作成 AWS Data Pipeline に使用する IAM ロール。 | String | 

 


****  

| オブジェクト呼び出しフィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| スケジュール |  このオブジェクトは、スケジュール期間の実行中に呼び出されます。 このオブジェクトの依存関係の実行順序を設定するには、別のオブジェクトへのスケジュール参照を指定します。これは、次のいずれかの方法で行うことができます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/datapipeline/latest/DeveloperGuide/dp-object-ec2resource.html)  | 参照オブジェクト ("schedule":\$1"ref":"myScheduleId"\$1 など) | 

 


****  

| オプションのフィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| actionOnResourceFailure | このリソースに対するリソースの失敗後に実行されるアクション。有効な値は、"retryall" および "retrynone" です。 | String | 
| actionOnTaskFailure | このリソースに対するタスクの失敗後に実行されるアクション。有効な値は "continue" または "terminate" です。 | String | 
| associatePublicIpAddress | インスタンスにパブリック IP アドレスを割り当てるかどうかを示します インスタンスが Amazon EC2 または Amazon VPC にある場合、デフォルト値は true です。それ以外の場合、デフォルト値は false です。 | ブール値 | 
| attemptStatus | リモートアクティビティから最も最近報告されたステータス。 | String | 
| attemptTimeout | リモートの作業完了のタイムアウト。設定された場合、指定された開始時間内に完了しなかったリモートアクティビティを再試行することができます。 | Period | 
| availabilityZone | Amazon EC2 インスタンスの起動場所となるアベイラビリティーゾーン。 | String | 
| disableIMDSv1 | デフォルト値は false で、IMDSv1 と IMDSv2 の両方を有効にします。true に設定すると、IMDSv1 を無効にし、IMDSv2 のみを提供します。 | ブール値 | 
| failureAndRerunMode | 依存関係が失敗または再実行されたときのコンシューマーノードの動作を示します。 | 一覧表 | 
| httpProxy | クライアントが AWS サービスへの接続に使用するプロキシホスト。 | 参照オブジェクト ( "httpProxy":\$1"ref":"myHttpProxyId"\$1 など) | 
| imageId | インスタンスに使用する AMI の ID。デフォルトでは、 は HVM AMI 仮想化タイプ AWS Data Pipeline を使用します。使用される AMI ID はリージョン別になります。選択した HVM AMI を指定して、デフォルトの AMI を上書きすることができます。AMI タイプの詳細については、「Amazon EC2 ユーザーガイド」の「[Linux AMI 仮想化タイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)」および「[Linux AMI の検索](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html)」を参照してください。  | String | 
| initTimeout | リソースが起動するまでの待機時間。 | Period | 
| instanceCount | 廃止済み。 | 整数 | 
| instanceType | 起動する Amazon EC2 インスタンスのタイプ。 | String | 
| keyPair | キーペアの名前。キーペアを指定せずに Amazon EC2 インスタンスを起動すると、ログオンできません。 | String | 
| lateAfterTimeout | オブジェクトが完了しなければならない、パイプライン開始からの経過時間。スケジュールタイプが ondemand に設定されていない場合にのみトリガーされます。 | Period | 
| maxActiveInstances | コンポーネントで同時にアクティブになるインスタンスの最大数。再実行はアクティブなインスタンスの数にはカウントされません。 | 整数 | 
| maximumRetries | 失敗時の最大再試行回数。 | 整数 | 
| minInstanceCount | 廃止済み。 | 整数 | 
| onFail | 現在のオブジェクトが失敗したときに実行するアクション。 | 参照オブジェクト ( "onFail":\$1"ref":"myActionId"\$1 など) | 
| onLateAction | オブジェクトが予定されていないか、まだ実行中の場合にトリガーされるアクション。 | 参照オブジェクト ("onLateAction":\$1"ref":"myActionId"\$1 など) | 
| onSuccess | 現在のオブジェクトが成功したときに実行するアクション。 | 参照オブジェクト ( "onSuccess":\$1"ref":"myActionId"\$1 など) | 
| parent | スロットの継承元となる現在のオブジェクトの親。 | 参照オブジェクト ( "parent":\$1"ref":"myBaseObjectId"\$1 など) | 
| pipelineLogUri | パイプラインのログをアップロードするための Amazon S3 URI ('s3://BucketName/Key/' など)。 | String | 
| リージョン |  Amazon EC2 インスタンスを実行する必要のあるリージョンのコード。デフォルトでは、インスタンスはパイプラインと同じリージョンで実行されます。依存するデータセットと同じリージョンでインスタンスを実行することもできます。 | 一覧表 | 
| reportProgressTimeout | reportProgress へのリモート作業の連続した呼び出しのタイムアウト。設定された場合、指定された期間の進捗状況を報告しないリモートアクティビティは停止されたと見なし、再試行できます。 | Period | 
| retryDelay | 2 回の再試行の間のタイムアウト期間。 | Period | 
| runAsUser | TaskRunner を実行するユーザー。 | String | 
| runsOn | このフィールドはこのオブジェクトでは使用できません。 | 参照オブジェクト ("runsOn":\$1"ref":"myResourceId"\$1 など) | 
| scheduleType |  スケジュールタイプでは、パイプライン定義のオブジェクトを間隔の最初にスケジュールするか、間隔の最後に、またはオンデマンドでスケジュールするかを指定できます。 値は次のとおりです。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/datapipeline/latest/DeveloperGuide/dp-object-ec2resource.html)  | 一覧表 | 
| securityGroupIds | リソースプールのインスタンスに使用する 1 つ以上の Amazon EC2 セキュリティグループの ID。 | String | 
| securityGroups | リソースプールのインスタンスに使用する 1 つ以上の Amazon EC2 セキュリティグループ。 | String | 
| spotBidPrice | スポットインスタンスの 1 時間あたりの最大金額 (ドル) であり、0 より大きく 20.00 より小さい 10 進値です。 | String | 
| subnetId | インスタンスを起動する Amazon EC2 サブネットの ID。 | String | 
| terminateAfter | リソースを終了するまでの時間数。 | Period | 
| useOnDemandOnLastAttempt | スポットインスタンスをリクエストする最後の試行では、スポットインスタンスではなくオンデマンドインスタンスのリクエストを作成します。これにより、以前の試行がすべて失敗した場合に、最後の試行は中断されません。 | ブール値 | 
| workerGroup | このフィールドはこのオブジェクトでは使用できません。 | String | 

 


****  

| 実行時フィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| @activeInstances | 現在スケジュールされているアクティブなインスタンスオブジェクトのリスト。 | 参照オブジェクト ("activeInstances":\$1"ref":"myRunnableObjectId"\$1 など) | 
| @actualEndTime | このオブジェクトの実行が終了した時刻。 | DateTime | 
| @actualStartTime | このオブジェクトの実行が開始された時刻。 | DateTime | 
| cancellationReason | このオブジェクトがキャンセルされた場合の cancellationReason。 | String | 
| @cascadeFailedOn | オブジェクトが失敗した依存関係のチェーンの説明。 | 参照オブジェクト ("cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 など) | 
| emrStepLog | Amazon EMR アクティビティの試行でのみ使用可能なステップログ。 | String | 
| errorId | このオブジェクトが失敗した場合はエラー ID。 | String | 
| errorMessage | このオブジェクトが失敗した場合はエラーメッセージ。 | String | 
| errorStackTrace | このオブジェクトが失敗した場合は、エラースタックトレース。 | String | 
| @failureReason | リソースの失敗の理由。 | String | 
| @finishedTime | このオブジェクトが実行を終了した時刻。 | DateTime | 
| hadoopJobLog | Amazon EMR アクティビティで試みることができる Hadoop ジョブのログ。 | String | 
| @healthStatus | 終了状態に達した最後のオブジェクトインスタンスの成功または失敗を反映する、オブジェクトのヘルスステータス。 | String | 
| @healthStatusFromInstanceId | 終了状態に達した最後のインスタンスオブジェクトの ID。 | String | 
| @healthStatusUpdatedTime | ヘルス状態が最後に更新された時間。 | DateTime | 
| hostname | タスクの試行を取得したクライアントのホスト名。 | String | 
| @lastDeactivatedTime | このオブジェクトが最後に非アクティブ化された時刻。 | DateTime | 
| @latestCompletedRunTime | 実行が完了した最後の実行の時刻。 | DateTime | 
| @latestRunTime | 実行がスケジュールされた最後の実行の時刻。 | DateTime | 
| @nextRunTime | 次回にスケジュールされた実行の時刻。 | DateTime | 
| reportProgressTime | リモートアクティビティで進捗状況が報告された最新の時刻。 | DateTime | 
| @scheduledEndTime | オブジェクトの予定された終了時刻。 | DateTime | 
| @scheduledStartTime | オブジェクトの予定された開始時刻。 | DateTime | 
| @status | このオブジェクトのステータス。 | String | 
| @version | オブジェクトが作成されたパイプラインのバージョン。 | String | 
| @waitingOn | このオブジェクトが待機している依存関係のリストの説明。 | 参照オブジェクト ( "waitingOn":\$1"ref":"myRunnableObjectId"\$1 など) | 

 


****  

| システムフィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| @error | 形式が正しくないオブジェクトを説明するエラー。 | String | 
| @pipelineId | このオブジェクトが属するパイプラインの ID。 | String | 
| @sphere | ライフサイクル内のオブジェクトの場所です。コンポーネントオブジェクトにより、試行オブジェクトを実行するインスタンスオブジェクトが発生します。 | String | 

# EmrCluster
<a name="dp-object-emrcluster"></a>

Amazon EMR クラスターの設定を表します。このオブジェクトは、[EmrActivity](dp-object-emractivity.md) および [HadoopActivity](dp-object-hadoopactivity.md) によってクラスターを起動するために使用されます。

**Topics**
+ [スケジューラ](#emrcluster-schedulers)
+ [Amazon EMR リリースバージョン](#dp-emrcluster-release-versions)
+ [Amazon EMR の許可](#w2aac52c17b9c11)
+ [構文](#emrcluster-syntax)
+ [例](emrcluster-example.md)
+ [以下の資料も参照してください。](#emrcluster-seealso)

## スケジューラ
<a name="emrcluster-schedulers"></a>

スケジューラーは、Hadoop クラスター内のリソースの割り当てとジョブの優先順位付けを指定する方法を提供します。管理者またはユーザーは、ユーザーおよびアプリケーションのクラス別のスケジューラーを選択できます。スケジューラーは、キューを使用してユーザーおよびアプリケーションにリソースを割り当てることができます。キューは、クラスターを作成する際に設定します。次に、特定のタイプの作業やユーザー間の優先順位を設定できます。これにより、クラスターのリソースが効率的に使用され、複数のユーザーから作業をクラスターに送信できるようになります。次の 3 種類のスケジューラーを使用できます。
+ [FairScheduler](https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler.html) – 長期間にわたってリソースの均等なスケジュールを試みます。
+ [CapacityScheduler](https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html) – キューを使用し、クラスター管理者がさまざまな優先順位とリソース割り当てのキューにユーザーを割り当てられるようにします。
+ Default – クラスターで使用されます。サイトで設定可能です。

## Amazon EMR リリースバージョン
<a name="dp-emrcluster-release-versions"></a>

Amazon EMR リリースは、ビッグデータエコシステムからの一連のオープンソースのアプリケーションです。各リリースは異なるビッグデータアプリケーション、コンポーネント、および機能で構成され、クラスターを作成するときに Amazon EMR でインストールして設定することを選択します。リリースラベルを使用してリリースバージョンを指定します。リリースラベルの形式は `emr-x.x.x` です。例えば、`emr-5.30.0`。リリースラベル `emr-4.0.0` 以降に基づく Amazon EMR クラスターでは、`releaseLabel` プロパティを使用して、`EmrCluster` オブジェクトのリリースラベルを指定します。以前のバージョンでは、`amiVersion` プロパティを使用しています。

**重要**  
リリースバージョン 5.22.0 以降を使用して作成されたすべての Amazon EMR クラスターでは、[署名バージョン 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) を使用して Amazon S3 へのリクエストを認証します。以前の一部のリリースバージョンでは、署名バージョン 2 を使用しています。署名バージョン 2 のサポートは中止されています。詳細については、「[Amazon S3 更新 - SigV2 の非推奨期間の延長および変更](https://aws.amazon.com/blogs/aws/amazon-s3-update-sigv2-deprecation-period-extended-modified/)」を参照してください。署名バージョン 4 をサポートする Amazon EMR リリースバージョンを使用することを強くお勧めします。EMR 4.7.x から始まる以前のバージョンのリリースでは、そのシリーズの最新リリースが署名バージョン 4 をサポートするように更新されています。以前のバージョンの EMR リリースを使用する場合は、そのシリーズの最新リリースを使用することをお勧めします。また、EMR 4.7.0 より前のリリースは使用しないでください。

### 考慮事項と制約事項
<a name="dp-emrcluster-considerations"></a>

#### 最新バージョンの Task Runner の使用
<a name="dp-task-runner-latest"></a>

リリースラベルを使用して自己管理型 `EmrCluster` オブジェクトを使用している場合は、最新の Task Runner を使用します。Task Runner の詳細については、「[Task Runnerの操作](dp-using-task-runner.md)」を参照してください。Amazon EMR 設定のすべての分類に対してプロパティ値を設定できます。詳細については、Amazon EMR リリース ガイドの[アプリケーションの設定](https://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html)、[EmrConfiguration](dp-object-emrconfiguration.md)、およびオブジェクトリファレンスの [プロパティ](dp-object-property.md) を参照してください。

#### IMDSv2 のサポート
<a name="dp-emr-imdsv2-support"></a>

以前は、IMDSv1 のみ AWS Data Pipeline をサポートしていました。は、Amazon EMR 5.23.1、5.27.1、5.32 以降、および Amazon EMR 6.2 以降の IMDSv2 AWS Data Pipeline をサポートするようになりました。IMDSv2 では、セッション指向の方法を使用して、インスタンスからメタデータ情報を取得する際の認証をより適切に処理できます。TaskRunner-2.0 を使用してユーザーマネージドリソースを作成して、IMDSv2 呼び出しを行うようにインスタンスを設定する必要があります。

#### Amazon EMR 5.32 以降と Amazon EMR 6.x
<a name="dp-emr-6-classpath"></a>

Amazon EMR 5.32 以降と 6.x リリースシリーズでは Hadoop バージョン 3.x が使用されており、Hadoop バージョン 2.x と比較して Hadoop のクラスパスの評価方法に重要な変更が導入されました。Joda-Time のような一般的なライブラリがクラスパスから削除されました。

[EmrActivity](dp-object-emractivity.md) または [HadoopActivity](dp-object-hadoopactivity.md) が Hadoop 3.x で削除されたライブラリに依存関係を持つ Jar ファイルを実行すると、ステップがエラー `java.lang.NoClassDefFoundError` または `java.lang.ClassNotFoundException` で失敗します。これは、Amazon EMR 5.x リリースバージョンを使用して問題なく実行された Jar ファイルで発生する可能性があります。

この問題を解決するには、`EmrActivity` または `HadoopActivity` を開始する前に、`EmrCluster` オブジェクトで Hadoop クラスパスに Jar ファイルの依存関係をコピーする必要があります。これを行うために bash スクリプトが提供されています。bash スクリプトは次の場所で使用できます。ここで、*MyRegion* は`EmrCluster`オブジェクトが実行される AWS リージョンです。例: `us-west-2`。

```
s3://datapipeline-MyRegion/MyRegion/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh
```

スクリプトを実行する方法は、 `EmrActivity`が管理するリソースで `HadoopActivity` を実行する AWS Data Pipeline か、セルフマネージドリソースで を実行するかによって異なります。

によって管理されるリソースを使用する場合は AWS Data Pipeline、 `EmrCluster` オブジェクト`bootstrapAction`に を追加します。`bootstrapAction` は、引数としてコピーするスクリプトと Jar ファイルを指定します。`EmrCluster` オブジェクトごとに最大 255 個の `bootstrapAction` フィールドを追加できます。また、ブートストラップアクションがすでに存在する `EmrCluster` オブジェクトに `bootstrapAction` フィールドを追加できます。

このスクリプトをブートストラップアクションとして指定するには、次の構文を使用します。ここで、`JarFileRegion` は Jar ファイルが保存されているリージョンであり、各 *MyJarFile*n** は、Hadoop クラスパスにコピーする Jar ファイルの Amazon S3 の絶対パスです。デフォルトで Hadoop クラスパスにある Jar ファイルを指定しないでください。

```
s3://datapipeline-MyRegion/MyRegion/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,JarFileRegion,MyJarFile1,MyJarFile2[, ...]
```

次の例では、Amazon S3 の 2 つの Jar ファイル (`my-jar-file.jar` と `emr-dynamodb-tool-4.14.0-jar-with-dependencies.jar`) をコピーするブートストラップアクションを指定します。この例で使用しているリージョンは、us-west-2 です。

```
{
  "id" : "MyEmrCluster",
  "type" : "EmrCluster",
  "keyPair" : "my-key-pair",
  "masterInstanceType" : "m5.xlarge",
  "coreInstanceType" : "m5.xlarge",
  "coreInstanceCount" : "2",
  "taskInstanceType" : "m5.xlarge",
  "taskInstanceCount": "2",
  "bootstrapAction" : ["s3://datapipeline-us-west-2/us-west-2/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,us-west-2,s3://path/to/my-jar-file.jar,s3://dynamodb-dpl-us-west-2/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar"]
}
```

新しい `bootstrapAction` への変更を有効にするには、パイプラインを保存してアクティブ化する必要があります。

セルフマネージドリソースを使用する場合は、スクリプトをクラスターインスタンスにダウンロードし、SSH を使用してコマンドラインからそのスクリプトを実行できます。スクリプトは、`/etc/hadoop/conf/shellprofile.d` という名前のディレクトリを作成し、そのディレクトリ内に `datapipeline-jars.sh` という名前のファイルを作成します。コマンドライン引数として指定された jar ファイルは、スクリプトで作成された `/home/hadoop/datapipeline_jars` という名前のディレクトリにコピーされます。クラスターの設定が異なる場合は、ダウンロード後にスクリプトを適切に変更してください。

コマンドラインでスクリプトを実行するための構文は、前の例で示した `bootstrapAction` の使用と若干異なります。次の例に示すように、引数の間にはカンマではなくスペースを使用します。

```
./copy-jars-to-hadoop-classpath.sh us-west-2 s3://path/to/my-jar-file.jar s3://dynamodb-dpl-us-west-2/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar
```

## Amazon EMR の許可
<a name="w2aac52c17b9c11"></a>

カスタム IAM ロールを作成する場合は、クラスターが作業を実行するために必要な最小限の許可を慎重に検討します。Amazon S3 のファイルや Amazon RDS、Amazon Redshift、DynamoDB のデータなど、必要なリソースへのアクセス権を確実に付与します。`visibleToAllUsers` を False に設定する場合は、そのために必要なアクセス権限がロールに必要です。`DataPipelineDefaultRole` には、これらのアクセス権限がないことに注意してください。`EmrCluster` オブジェクトのロールとして `DefaultDataPipelineResourceRole` と `DataPipelineDefaultRole` のロールの結合を指定するか、この目的で独自のロールを作成する必要があります。

## 構文
<a name="emrcluster-syntax"></a>


****  

| オブジェクト呼び出しフィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| スケジュール | このオブジェクトは、スケジュール期間の実行中に呼び出されます。このオブジェクトの依存関係の実行順序を設定するために、別のオブジェクトへのスケジュール参照を指定します。この要件を満たすには、オブジェクトのスケジュールを明示的に設定できます。たとえば、"schedule": \$1"ref": "DefaultSchedule"\$1 と指定します。ほとんどの場合、すべてのオブジェクトがそのスケジュールを継承するように、スケジュール参照をデフォルトのパイプラインオブジェクトに配置することをお勧めします。または、パイプラインにスケジュールのツリー (マスタースケジュール内のスケジュール) がある場合は、スケジュール参照がある親オブジェクトを作成できます。オプションのスケジュール設定の例については、「[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)」を参照してください。 | 参照オブジェクト ( "schedule":\$1"ref":"myScheduleId"\$1 など) | 

 


****  

| オプションのフィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| actionOnResourceFailure | このリソースに対するリソースの失敗後に実行されるアクション。有効な値は retryall (指定した期間内にクラスターに対してすべてのタスクを再試行する) と retrynone です。 | String | 
| actionOnTaskFailure | このリソースに対するタスクの失敗後に実行されるアクション。有効な値は "continue"（クラスターを終了しない）と "terminate" です。 | String | 
| additionalMasterSecurityGroupIds | EMR クラスターの追加マスターセキュリティグループの ID (sg-01XXXX6a の形式)。詳細については、Amazon EMR 管理ガイドの [Amazon EMR の追加セキュリティグループ](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-additional-sec-groups.html)を参照してください。 | String | 
| additionalSlaveSecurityGroupIds | EMR クラスターの追加スレーブセキュリティグループの ID（sg-01XXXX6a の形式）。 | String | 
| amiVersion | クラスターノードをインストールするために Amazon EMR で使用する Amazon マシンイメージ (AMI) のバージョン。詳細については、[「Amazon EMR Management Guide」](https://docs.aws.amazon.com/emr/latest/ManagementGuide/)(Amazon EMR 管理ガイド) を参照してください。 | String | 
| アプリケーション | カンマ区切りの引数を指定してクラスターにインストールするアプリケーション。Hive と Pig がデフォルトでインストールされます。このパラメータは Amazon EMR バージョン 4.0 以降でのみ適用できます。 | String | 
| attemptStatus | リモートアクティビティから最も最近報告されたステータス。 | String | 
| attemptTimeout | リモートの作業完了のタイムアウト。設定された場合、設定された開始時間内に完了しなかったリモートアクティビティを再試行することができます。 | Period | 
| availabilityZone | クラスターを実行するアベイラビリティーゾーン。 | String | 
| bootstrapAction | クラスターの開始時に実行するアクション。カンマで区切って引数を指定できます。アクションを複数（最大 255 個）指定するには、bootstrapAction フィールドを複数追加します。ブートストラップアクションを使用しないでクラスターを開始するのが、デフォルトの動作です。 | String | 
| 設定 | Amazon EMR クラスターの設定。このパラメータは Amazon EMR バージョン 4.0 以降でのみ適用できます。 | 参照オブジェクト ("configuration":\$1"ref":"myEmrConfigurationId"\$1 など) | 
| coreInstanceBidPrice | 最大スポット料金は、Amazon EC2 インスタンスに対して支払うスポット料金です。入札価格が指定されている場合、Amazon EMR では、インスタンスグループのスポットインスタンスが使用されます。USD で指定。 | String | 
| coreInstanceCount | クラスターに使用するコアノードの数。 | 整数 | 
| coreInstanceType | コアノードに使用する Amazon EC2 インスタンスのタイプ。「[Amazon EMR クラスターでサポートされるAmazon EC2インスタンス](dp-emr-supported-instance-types.md)」を参照してください。 | String | 
| coreGroupConfiguration | Amazon EMR クラスターのコアインスタンスグループの設定。このパラメータは Amazon EMR バージョン 4.0 以降でのみ適用できます。 | 参照オブジェクト (“configuration”: \$1“ref”: “myEmrConfigurationId”\$1 など) | 
| coreEbsConfiguration | Amazon EMR クラスターのコアグループの各コアノードにアタッチされる Amazon EBS ボリュームの設定。詳細については、「Amazon EC2 ユーザーガイド」の「[EBS 最適化をサポートするインスタンスタイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html)」を参照してください。 | 参照オブジェクト (“coreEbsConfiguration”: \$1“ref”: “myEbsConfiguration”\$1 など) | 
| customAmiId | Amazon EMR リリースバージョン 5.7.0 以降にのみ適用されます。Amazon EMR が Amazon EC2 インスタンスをプロビジョンするときに使用するカスタム AMI の AMI ID を指定します。クラスターノード設定をカスタマイズするために、ブートストラップアクションの代わりに使用することもできます。詳細については、Amazon EMR 管理ガイドの次のトピックを参照してください。[カスタム AMI の使用](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html) | String | 
| EbsBlockDeviceConfig |  インスタンスグループに関連付けられている、要求された Amazon EBS ブロックデバイスの設定。指定したボリューム数をインスタンスグループ内の各インスタンスに関連付けるための `volumesPerInstance` と `volumeSpecification` が含まれます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/datapipeline/latest/DeveloperGuide/dp-object-emrcluster.html)  | 参照オブジェクト (“EbsBlockDeviceConfig”: \$1“ref”: “myEbsBlockDeviceConfig”\$1 など) | 
| emrManagedMasterSecurityGroupId | Amazon EMR クラスターのマスターセキュリティグループの識別子 (sg-01XXXX6a の形式)。詳細については、Amazon EMR 管理ガイドで[セキュリティグループの設定](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-groups.html)を参照してください。 | String | 
| emrManagedSlaveSecurityGroupId | Amazon EMR クラスターのスレーブセキュリティグループの ID (sg-01XXXX6a の形式)。 | String | 
| enableDebugging | Amazon EMR クラスターでのデバッグを有効にします。 | String | 
| failureAndRerunMode | 依存関係が失敗または再実行されたときのコンシューマーノードの動作を示します。 | 一覧表 | 
| hadoopSchedulerType | クラスターのスケジューラータイプ。有効なタイプは、 PARALLEL\$1FAIR\$1SCHEDULING、 PARALLEL\$1CAPACITY\$1SCHEDULING、 DEFAULT\$1SCHEDULER です。 | 一覧表 | 
| httpProxy | クライアントが AWS サービスに接続するために使用するプロキシホスト。 | 参照オブジェクト ("httpProxy":\$1"ref":"myHttpProxyId"\$1 など) | 
| initTimeout | リソースが起動するまでの待機時間。 | Period | 
| keyPair | Amazon EMR クラスターのマスターノードにログインするときに使用する Amazon EC2 キーペア。 | String | 
| lateAfterTimeout | オブジェクトが完了しなければならない、パイプライン開始からの経過時間。スケジュールタイプが ondemand に設定されていない場合にのみトリガーされます。 | Period | 
| masterInstanceBidPrice | 最大スポット料金は、Amazon EC2 インスタンスに対して支払うスポット料金です。0～20.00 の 10 進数のみ (排他的) です。USD で指定。この値を設定すると、Amazon EMR クラスターマスターノードのスポットインスタンスが有効になります。入札価格が指定されている場合、Amazon EMR では、インスタンスグループのスポットインスタンスが使用されます。 | String | 
| masterInstanceType | マスターノードに使用する Amazon EC2 インスタンスのタイプ。「[Amazon EMR クラスターでサポートされるAmazon EC2インスタンス](dp-emr-supported-instance-types.md)」を参照してください。 | String | 
| masterGroupConfiguration | Amazon EMR クラスターのマスターインスタンスグループの設定。このパラメータは Amazon EMR バージョン 4.0 以降でのみ適用できます。 | 参照オブジェクト (“configuration”: \$1“ref”: “myEmrConfigurationId”\$1 など) | 
| masterEbsConfiguration | Amazon EMR クラスターのマスターグループの各マスターノードにアタッチされる Amazon EBS ボリュームの設定。詳細については、「Amazon EC2 ユーザーガイド」の「[EBS 最適化をサポートするインスタンスタイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html)」を参照してください。 | 参照オブジェクト (“masterEbsConfiguration”: \$1“ref”: “myEbsConfiguration”\$1 など) | 
| maxActiveInstances | コンポーネントで同時にアクティブになるインスタンスの最大数。再実行はアクティブなインスタンスの数にはカウントされません。 | 整数 | 
| maximumRetries | 失敗時の最大再試行回数。 | 整数 | 
| onFail | 現在のオブジェクトが失敗したときに実行するアクション。 | 参照オブジェクト ("onFail":\$1"ref":"myActionId"\$1 など) | 
| onLateAction | オブジェクトが予定されていないか、まだ完了していない場合にトリガーされるアクション。 | 参照オブジェクト ("onLateAction":\$1"ref":"myActionId"\$1 など) | 
| onSuccess | 現在のオブジェクトが成功したときに実行するアクション。 | 参照オブジェクト ("onSuccess":\$1"ref":"myActionId"\$1 など) | 
| parent | スロットの継承元となる現在のオブジェクトの親。 | 参照オブジェクト ("parent":\$1"ref":"myBaseObjectId"\$1 など) | 
| pipelineLogUri | パイプラインのログをアップロードするための Amazon S3 URI (s3://BucketName/Key/ など)。 | String | 
| リージョン | Amazon EMR クラスターを実行するリージョンのコード。デフォルトでは、クラスターはパイプラインと同じリージョンで実行されます。依存するデータセットと同じリージョンでクラスターを実行することもできます。 | 一覧表 | 
| releaseLabel | EMR クラスター用のリリースラベル。 | String | 
| reportProgressTimeout | reportProgress へのリモート作業の連続した呼び出しのタイムアウト。設定された場合、指定された期間の進捗状況を報告しないリモートアクティビティは停止されたと見なし、再試行できます。 | Period | 
| resourceRole | が Amazon EMR クラスターの作成 AWS Data Pipeline に使用する IAM ロール。デフォルトのロールは DataPipelineDefaultRole です。 | String | 
| retryDelay | 2 回の再試行の間のタイムアウト期間。 | Period | 
| ロール | EC2 ノードを作成するために Amazon EMR に渡される IAM ロール。 | String | 
| runsOn | このフィールドはこのオブジェクトでは使用できません。 | 参照オブジェクト ("runsOn":\$1"ref":"myResourceId"\$1 など) | 
| securityConfiguration | クラスターに適用される EMR セキュリティ設定の識別子。このパラメータは Amazon EMR バージョン 4.8.0 以降でのみ適用できます。 | String | 
| serviceAccessSecurityGroupId | Amazon EMR クラスターのサービスアクセスセキュリティグループの ID。 | 文字列。形式は sg-01XXXX6a です (例: sg-1234abcd)。 | 
| scheduleType | スケジュールタイプでは、パイプライン定義のオブジェクトを間隔の最初にスケジュールするか、間隔の最後にスケジュールするかを指定できます。値は、cron、ondemand、および timeseries です。timeseries スケジューリングでは、インスタンスを各間隔の最後にスケジュールします。cron スケジューリングでは、インスタンスを各間隔の最初にスケジュールします。ondemand スケジュールにより、アクティベーションごとに 1 回パイプラインを実行することができます。パイプラインを再実行するために、クローンしたり再作成したりする必要はありません。ondemand スケジュールを使用する場合は、デフォルトオブジェクトで指定し、パイプラインのオブジェクトに対して指定される唯一の scheduleType である必要があります。ondemand パイプラインを使用するには、それ以降の実行ごとに、ActivatePipeline オペレーションを呼び出します。 | 一覧表 | 
| subnetId | Amazon EMR クラスターを起動するサブネットの ID。 | String | 
| supportedProducts | Amazon EMR クラスターにサードパーティーソフトウェアをインストールするパラメータ (Hadoop のサードパーティーディストリビューションなど)。 | String | 
| taskInstanceBidPrice | 最大スポット料金は、 EC2 インスタンスに対して支払うスポット料金です。0～20.00 の 10 進数のみ。USD で指定。入札価格が指定されている場合、Amazon EMR では、インスタンスグループのスポットインスタンスが使用されます。 | String | 
| taskInstanceCount | Amazon EMR クラスターで使用するタスクノードの数。 | 整数 | 
| taskInstanceType | タスクノードに使用する Amazon EC2 インスタンスのタイプ。 | String | 
| taskGroupConfiguration | Amazon EMR クラスターのタスクインスタンスグループの設定。このパラメータは Amazon EMR バージョン 4.0 以降でのみ適用できます。 | 参照オブジェクト (“configuration”: \$1“ref”: “myEmrConfigurationId”\$1 など) | 
| taskEbsConfiguration | Amazon EMR クラスターのタスクグループの各タスクノードにアタッチされる Amazon EBS ボリュームの設定。詳細については、「Amazon EC2 ユーザーガイド」の「[EBS 最適化をサポートするインスタンスタイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html)」を参照してください。 | 参照オブジェクト (“taskEbsConfiguration”: \$1“ref”: “myEbsConfiguration”\$1 など) | 
| terminateAfter | これらの多くの時間が経過した後でリソースを終了します。 | 整数 | 
| VolumeSpecification |   Amazon EMR クラスター内の Amazon EC2 インスタンスにアタッチされた Amazon EBS ボリュームに要求される Amazon EBS ボリューム仕様 (ボリュームタイプ、IOPS、サイズ (GiB) など)。ノードは、コア、マスター、またはタスクノードです。 `VolumeSpecification` には以下が含まれます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/datapipeline/latest/DeveloperGuide/dp-object-emrcluster.html)  | 参照オブジェクト (“VolumeSpecification”: \$1“ref”: “myVolumeSpecification”\$1 など) | 
| useOnDemandOnLastAttempt | リソースをリクエストする最後の試行で、スポットインスタンスではなくオンデマンドインスタンスのリクエストを作成します。これにより、以前の試行がすべて失敗した場合に、最後の試行は中断されません。 | ブール値 | 
| workerGroup | このオブジェクトで使用できないフィールド。 | String | 

 


****  

| 実行時フィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| @activeInstances | 現在スケジュールされているアクティブなインスタンスオブジェクトのリスト。 | 参照オブジェクト ("activeInstances":\$1"ref":"myRunnableObjectId"\$1 など) | 
| @actualEndTime | このオブジェクトの実行が終了した時刻。 | DateTime | 
| @actualStartTime | このオブジェクトの実行が開始された時刻。 | DateTime | 
| cancellationReason | このオブジェクトがキャンセルされた場合の cancellationReason。 | String | 
| @cascadeFailedOn | オブジェクトが失敗した依存関係のチェーンの説明。 | 参照オブジェクト ("cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 など) | 
| emrStepLog | Amazon EMR アクティビティの試行でのみ使用可能なステップログ。 | String | 
| errorId | このオブジェクトが失敗した場合はエラー ID。 | String | 
| errorMessage | このオブジェクトが失敗した場合はエラーメッセージ。 | String | 
| errorStackTrace | このオブジェクトが失敗した場合は、エラースタックトレース。 | String | 
| @failureReason | リソースの失敗の理由。 | String | 
| @finishedTime | このオブジェクトが実行を終了した時刻。 | DateTime | 
| hadoopJobLog | Amazon EMR アクティビティで試みることができる Hadoop ジョブのログ。 | String | 
| @healthStatus | 終了状態に達した最後のオブジェクトインスタンスの成功または失敗を反映する、オブジェクトのヘルスステータス。 | String | 
| @healthStatusFromInstanceId | 終了状態に達した最後のインスタンスオブジェクトの ID。 | String | 
| @healthStatusUpdatedTime | ヘルス状態が最後に更新された時間。 | DateTime | 
| hostname | タスクの試行を取得したクライアントのホスト名。 | String | 
| @lastDeactivatedTime | このオブジェクトが最後に非アクティブ化された時刻。 | DateTime | 
| @latestCompletedRunTime | 実行が完了した最後の実行の時刻。 | DateTime | 
| @latestRunTime | 実行がスケジュールされた最後の実行の時刻。 | DateTime | 
| @nextRunTime | 次回にスケジュールされた実行の時刻。 | DateTime | 
| reportProgressTime | リモートアクティビティで進捗状況が報告された最新の時刻。 | DateTime | 
| @scheduledEndTime | オブジェクトの予定された終了時刻。 | DateTime | 
| @scheduledStartTime | オブジェクトの予定された開始時刻。 | DateTime | 
| @status | このオブジェクトのステータス。 | String | 
| @version | オブジェクトが作成されたパイプラインのバージョン。 | String | 
| @waitingOn | このオブジェクトが待機している依存関係のリストの説明。 | 参照オブジェクト ("waitingOn":\$1"ref":"myRunnableObjectId"\$1 など) | 

 


****  

| システムフィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| @error | 形式が正しくないオブジェクトを説明するエラー。 | String | 
| @pipelineId | このオブジェクトが属するパイプラインの ID。 | String | 
| @sphere | ライフサイクル内のオブジェクトの場所です。コンポーネントオブジェクトにより、試行オブジェクトを実行するインスタンスオブジェクトが発生します。 | String | 

# 例
<a name="emrcluster-example"></a>

以下は、このオブジェクト型の例です。

**Topics**
+ [hadoopVersion を使用した Amazon EMR クラスターの起動](emrcluster-example-launch.md)
+ [リリースラベル emr-4.x 以降の Amazon EMR クラスターの起動](emrcluster-example-release-label.md)
+ [Amazon EMR クラスターへの追加のソフトウェアのインストール](emrcluster-example-install-software.md)
+ [3.xリリースでのサーバー側暗号化の無効化](emrcluster-example1-disable-encryption.md)
+ [4.xリリースでのサーバー側暗号化の無効化](emrcluster-example2-disable-encryption.md)
+ [Hadoop KMS の ACL の設定と HDFS での暗号化ゾーンの作成](emrcluster-example-hadoop-kms.md)
+ [カスタム IAM ロールを指定する](emrcluster-example-custom-iam-roles.md)
+ [AWS SDK for Java での EmrCluster リソースの使用](emrcluster-example-java.md)
+ [プライベートサブネットでの Amazon EMR クラスターの設定](emrcluster-example-private-subnet.md)
+ [クラスターノードに EBS ボリュームをアタッチする](emrcluster-example-ebs.md)

# hadoopVersion を使用した Amazon EMR クラスターの起動
<a name="emrcluster-example-launch"></a>

**Example**  <a name="example1"></a>
以下の例では、AMI バージョン 1.0 と Hadoop 0.20 を使用して Amazon EMR クラスターを起動します。  

```
{
  "id" : "MyEmrCluster",
  "type" : "EmrCluster",
  "hadoopVersion" : "0.20",
  "keyPair" : "my-key-pair",
  "masterInstanceType" : "m3.xlarge",
  "coreInstanceType" : "m3.xlarge",
  "coreInstanceCount" : "10",
  "taskInstanceType" : "m3.xlarge",
  "taskInstanceCount": "10",
  "bootstrapAction" : ["s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,arg1,arg2,arg3","s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop/configure-other-stuff,arg1,arg2"]
}
```

# リリースラベル emr-4.x 以降の Amazon EMR クラスターの起動
<a name="emrcluster-example-release-label"></a>

**Example**  
次の例では、新しい `releaseLabel` フィールドを使用して Amazon EMR クラスターを起動します。  

```
{
  "id" : "MyEmrCluster",
  "type" : "EmrCluster",
  "keyPair" : "my-key-pair",
  "masterInstanceType" : "m3.xlarge",
  "coreInstanceType" : "m3.xlarge",
  "coreInstanceCount" : "10",
  "taskInstanceType" : "m3.xlarge",
  "taskInstanceCount": "10",
  "releaseLabel": "emr-4.1.0",
  "applications": ["spark", "hive", "pig"],
  "configuration": {"ref":"myConfiguration"}  
}
```

# Amazon EMR クラスターへの追加のソフトウェアのインストール
<a name="emrcluster-example-install-software"></a>

**Example**  <a name="example2"></a>
`EmrCluster` には、Amazon EMR クラスターにサードパーティーソフトウェアをインストールする `supportedProducts` フィールドが用意されています。これにより、MapR など、Hadoop のカスタムディストリビューションをインストールできます。サードパーティソフトウェアは、カンマ区切りの引数リストとして指定します。以下の例は、`EmrCluster` の `supportedProducts` フィールドを使用して、Karmasphere Analytics をインストールしたカスタム MapR M3 エディションクラスターを作成し、そこで `EmrActivity` オブジェクトを実行する方法を示しています。  

```
{
    "id": "MyEmrActivity",
    "type": "EmrActivity",
    "schedule": {"ref": "ResourcePeriod"},
    "runsOn": {"ref": "MyEmrCluster"},
    "postStepCommand": "echo Ending job >> /mnt/var/log/stepCommand.txt",    
    "preStepCommand": "echo Starting job > /mnt/var/log/stepCommand.txt",
    "step": "/home/hadoop/contrib/streaming/hadoop-streaming.jar,-input,s3n://elasticmapreduce/samples/wordcount/input,-output, \
     hdfs:///output32113/,-mapper,s3n://elasticmapreduce/samples/wordcount/wordSplitter.py,-reducer,aggregate"
  },
  {    
    "id": "MyEmrCluster",
    "type": "EmrCluster",
    "schedule": {"ref": "ResourcePeriod"},
    "supportedProducts": ["mapr,--edition,m3,--version,1.2,--key1,value1","karmasphere-enterprise-utility"],
    "masterInstanceType": "m3.xlarge",
    "taskInstanceType": "m3.xlarge"
}
```

# 3.xリリースでのサーバー側暗号化の無効化
<a name="emrcluster-example1-disable-encryption"></a>

**Example**  <a name="example3"></a>
によって作成された Hadoop バージョン 2.x の`EmrCluster`アクティビティは、デフォルトでサーバー側の暗号化 AWS Data Pipeline を有効にします。サーバー側の暗号化を無効にするには、クラスターオブジェクト定義でブートストラップアクションを指定する必要があります。  
次の例では、サーバー側の暗号化を無効にして `EmrCluster` アクティビティを作成します。  

```
{  
   "id":"NoSSEEmrCluster",
   "type":"EmrCluster",
   "hadoopVersion":"2.x",
   "keyPair":"my-key-pair",
   "masterInstanceType":"m3.xlarge",
   "coreInstanceType":"m3.large",
   "coreInstanceCount":"10",
   "taskInstanceType":"m3.large",
   "taskInstanceCount":"10",
   "bootstrapAction":["s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-e, fs.s3.enableServerSideEncryption=false"]
}
```

# 4.xリリースでのサーバー側暗号化の無効化
<a name="emrcluster-example2-disable-encryption"></a>

**Example**  <a name="example4"></a>
`EmrConfiguration` オブジェクトを使用してサーバー側の暗号化を無効にする必要があります。  
次の例では、サーバー側の暗号化を無効にして `EmrCluster` アクティビティを作成します。  

```
   {
      "name": "ReleaseLabelCluster",
      "releaseLabel": "emr-4.1.0",
      "applications": ["spark", "hive", "pig"],
      "id": "myResourceId",
      "type": "EmrCluster",
      "configuration": {
        "ref": "disableSSE"
      }
    },
    {
      "name": "disableSSE",
      "id": "disableSSE",
      "type": "EmrConfiguration",
      "classification": "emrfs-site",
      "property": [{
        "ref": "enableServerSideEncryption"
      }
      ]
    },
    {
      "name": "enableServerSideEncryption",
      "id": "enableServerSideEncryption",
      "type": "Property",
      "key": "fs.s3.enableServerSideEncryption",
      "value": "false"
    }
```

# Hadoop KMS の ACL の設定と HDFS での暗号化ゾーンの作成
<a name="emrcluster-example-hadoop-kms"></a>

**Example**  <a name="example5"></a>
次のオブジェクトは、Hadoop KMS 用の ACL を作成し、暗号化ゾーンと該当する暗号化キーを HDFS で作成します。  

```
{
      "name": "kmsAcls",
      "id": "kmsAcls",
      "type": "EmrConfiguration",
      "classification": "hadoop-kms-acls",
      "property": [
        {"ref":"kmsBlacklist"},
        {"ref":"kmsAcl"}
      ]
    },
    {
      "name": "hdfsEncryptionZone",
      "id": "hdfsEncryptionZone",
      "type": "EmrConfiguration",
      "classification": "hdfs-encryption-zones",
      "property": [
        {"ref":"hdfsPath1"},
        {"ref":"hdfsPath2"}
      ]
    },
    {
      "name": "kmsBlacklist",
      "id": "kmsBlacklist",
      "type": "Property",
      "key": "hadoop.kms.blacklist.CREATE",
      "value": "foo,myBannedUser"
    },
    {
      "name": "kmsAcl",
      "id": "kmsAcl",
      "type": "Property",
      "key": "hadoop.kms.acl.ROLLOVER",
      "value": "myAllowedUser"
    },
    {
      "name": "hdfsPath1",
      "id": "hdfsPath1",
      "type": "Property",
      "key": "/myHDFSPath1",
      "value": "path1_key"
    },
    {
      "name": "hdfsPath2",
      "id": "hdfsPath2",
      "type": "Property",
      "key": "/myHDFSPath2",
      "value": "path2_key"
    }
```

# カスタム IAM ロールを指定する
<a name="emrcluster-example-custom-iam-roles"></a>

**Example**  <a name="example6"></a>
デフォルトでは、 は Amazon EMR サービスロール`DataPipelineDefaultRole`として を渡し、ユーザーに代わってリソースを作成するための Amazon EC2 インスタンスプロファイル`DataPipelineDefaultResourceRole`として を AWS Data Pipeline 渡します。ただし、カスタム Amazon EMR サービスロールとカスタムインスタンスプロファイルを作成し、代わりに使用できます。 AWS Data Pipeline には、カスタムロールを使用してクラスターを作成するのに十分なアクセス許可が必要であり、 を信頼されたエンティティ AWS Data Pipeline として追加する必要があります。  
次のオブジェクト例では、Amazon EMR クラスターのカスタムロールを指定します。  

```
{  
   "id":"MyEmrCluster",
   "type":"EmrCluster",
   "hadoopVersion":"2.x",
   "keyPair":"my-key-pair",
   "masterInstanceType":"m3.xlarge",
   "coreInstanceType":"m3.large",
   "coreInstanceCount":"10",
   "taskInstanceType":"m3.large",
   "taskInstanceCount":"10",
   "role":"emrServiceRole",
   "resourceRole":"emrInstanceProfile"
}
```

# AWS SDK for Java での EmrCluster リソースの使用
<a name="emrcluster-example-java"></a>

**Example**  <a name="example7"></a>
次の例では、`EmrCluster` と `EmrActivity` を使用して Amazon EMR 4.x クラスターを作成し、Java SDK を使用して Spark ステップを実行する方法を示します。  

```
public class dataPipelineEmr4 {

  public static void main(String[] args) {
    
	AWSCredentials credentials = null;
	credentials = new ProfileCredentialsProvider("/path/to/AwsCredentials.properties","default").getCredentials();
	DataPipelineClient dp = new DataPipelineClient(credentials);
	CreatePipelineRequest createPipeline = new CreatePipelineRequest().withName("EMR4SDK").withUniqueId("unique");
	CreatePipelineResult createPipelineResult = dp.createPipeline(createPipeline);
	String pipelineId = createPipelineResult.getPipelineId();
    
	PipelineObject emrCluster = new PipelineObject()
	    .withName("EmrClusterObj")
	    .withId("EmrClusterObj")
	    .withFields(
			new Field().withKey("releaseLabel").withStringValue("emr-4.1.0"),
			new Field().withKey("coreInstanceCount").withStringValue("3"),
			new Field().withKey("applications").withStringValue("spark"),
			new Field().withKey("applications").withStringValue("Presto-Sandbox"),
			new Field().withKey("type").withStringValue("EmrCluster"),
			new Field().withKey("keyPair").withStringValue("myKeyName"),
			new Field().withKey("masterInstanceType").withStringValue("m3.xlarge"),
			new Field().withKey("coreInstanceType").withStringValue("m3.xlarge")        
			);
  
	PipelineObject emrActivity = new PipelineObject()
	    .withName("EmrActivityObj")
	    .withId("EmrActivityObj")
	    .withFields(
			new Field().withKey("step").withStringValue("command-runner.jar,spark-submit,--executor-memory,1g,--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/lib/spark-examples.jar,10"),
			new Field().withKey("runsOn").withRefValue("EmrClusterObj"),
			new Field().withKey("type").withStringValue("EmrActivity")
			);
      
	PipelineObject schedule = new PipelineObject()
	    .withName("Every 15 Minutes")
	    .withId("DefaultSchedule")
	    .withFields(
			new Field().withKey("type").withStringValue("Schedule"),
			new Field().withKey("period").withStringValue("15 Minutes"),
			new Field().withKey("startAt").withStringValue("FIRST_ACTIVATION_DATE_TIME")
			);
      
	PipelineObject defaultObject = new PipelineObject()
	    .withName("Default")
	    .withId("Default")
	    .withFields(
			new Field().withKey("failureAndRerunMode").withStringValue("CASCADE"),
			new Field().withKey("schedule").withRefValue("DefaultSchedule"),
			new Field().withKey("resourceRole").withStringValue("DataPipelineDefaultResourceRole"),
			new Field().withKey("role").withStringValue("DataPipelineDefaultRole"),
			new Field().withKey("pipelineLogUri").withStringValue("s3://myLogUri"),
			new Field().withKey("scheduleType").withStringValue("cron")
			);     
      
	List<PipelineObject> pipelineObjects = new ArrayList<PipelineObject>();
    
	pipelineObjects.add(emrActivity);
	pipelineObjects.add(emrCluster);
	pipelineObjects.add(defaultObject);
	pipelineObjects.add(schedule);
    
	PutPipelineDefinitionRequest putPipelineDefintion = new PutPipelineDefinitionRequest()
	    .withPipelineId(pipelineId)
	    .withPipelineObjects(pipelineObjects);
    
	PutPipelineDefinitionResult putPipelineResult = dp.putPipelineDefinition(putPipelineDefintion);
	System.out.println(putPipelineResult);
    
	ActivatePipelineRequest activatePipelineReq = new ActivatePipelineRequest()
	    .withPipelineId(pipelineId);
	ActivatePipelineResult activatePipelineRes = dp.activatePipeline(activatePipelineReq);
	
      System.out.println(activatePipelineRes);
      System.out.println(pipelineId);
    
    }

}
```

# プライベートサブネットでの Amazon EMR クラスターの設定
<a name="emrcluster-example-private-subnet"></a>

**Example**  <a name="example8"></a>
この例には、VPC のプライベートサブネット内でクラスターを起動する設定が含まれています。詳細については、*Amazon EMR 管理ガイド*の [VPC で Amazon EMR クラスターを起動する](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-vpc-launching-job-flows.html)を参照してください。この設定はオプションです。この設定は、`EmrCluster` オブジェクトを使用する任意のパイプラインで使用できます。  
プライベートサブネットで Amazon EMR クラスターを起動するには `SubnetId`、`emrManagedMasterSecurityGroupId`、`emrManagedSlaveSecurityGroupId`、および `serviceAccessSecurityGroupId` を `EmrCluster` 設定で指定します。  

```
{
  "objects": [
    {
      "output": {
        "ref": "S3BackupLocation"
      },
      "input": {
        "ref": "DDBSourceTable"
      },
      "maximumRetries": "2",
      "name": "TableBackupActivity",
      "step": "s3://dynamodb-emr-#{myDDBRegion}/emr-ddb-storage-handler/2.1.0/emr-ddb-2.1.0.jar,org.apache.hadoop.dynamodb.tools.DynamoDbExport,#{output.directoryPath},#{input.tableName},#{input.readThroughputPercent}",
      "id": "TableBackupActivity",
      "runsOn": {
        "ref": "EmrClusterForBackup"
      },
      "type": "EmrActivity",
      "resizeClusterBeforeRunning": "false"
    },
    {
      "readThroughputPercent": "#{myDDBReadThroughputRatio}",
      "name": "DDBSourceTable",
      "id": "DDBSourceTable",
      "type": "DynamoDBDataNode",
      "tableName": "#{myDDBTableName}"
    },
    {
      "directoryPath": "#{myOutputS3Loc}/#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}",
      "name": "S3BackupLocation",
      "id": "S3BackupLocation",
      "type": "S3DataNode"
    },
    {
      "name": "EmrClusterForBackup",
      "coreInstanceCount": "1",
      "taskInstanceCount": "1",
      "taskInstanceType": "m4.xlarge",
      "coreInstanceType": "m4.xlarge",
      "releaseLabel": "emr-4.7.0",
      "masterInstanceType": "m4.xlarge",
      "id": "EmrClusterForBackup",
      "subnetId": "#{mySubnetId}",
      "emrManagedMasterSecurityGroupId": "#{myMasterSecurityGroup}",
      "emrManagedSlaveSecurityGroupId": "#{mySlaveSecurityGroup}",
      "serviceAccessSecurityGroupId": "#{myServiceAccessSecurityGroup}",
      "region": "#{myDDBRegion}",
      "type": "EmrCluster",
      "keyPair": "user-key-pair"
    },
    {
      "failureAndRerunMode": "CASCADE",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "#{myPipelineLogUri}",
      "scheduleType": "ONDEMAND",
      "name": "Default",
      "id": "Default"
    }
  ],
  "parameters": [
    {
      "description": "Output S3 folder",
      "id": "myOutputS3Loc",
      "type": "AWS::S3::ObjectKey"
    },
    {
      "description": "Source DynamoDB table name",
      "id": "myDDBTableName",
      "type": "String"
    },
    {
      "default": "0.25",
      "watermark": "Enter value between 0.1-1.0",
      "description": "DynamoDB read throughput ratio",
      "id": "myDDBReadThroughputRatio",
      "type": "Double"
    },
    {
      "default": "us-east-1",
      "watermark": "us-east-1",
      "description": "Region of the DynamoDB table",
      "id": "myDDBRegion",
      "type": "String"
    }
  ],
  "values": {
     "myDDBRegion": "us-east-1",
      "myDDBTableName": "ddb_table",
      "myDDBReadThroughputRatio": "0.25",
      "myOutputS3Loc": "s3://s3_path",
      "mySubnetId": "subnet_id",
      "myServiceAccessSecurityGroup":  "service access security group",
      "mySlaveSecurityGroup": "slave security group",
      "myMasterSecurityGroup": "master security group",
      "myPipelineLogUri": "s3://s3_path"
  }
}
```

# クラスターノードに EBS ボリュームをアタッチする
<a name="emrcluster-example-ebs"></a>

**Example**  <a name="example8"></a>
EBS ボリュームは、パイプライン内の EMR クラスターの任意のノードタイプにアタッチできます。EBS ボリュームをノードにアタッチするには、`coreEbsConfiguration`、`masterEbsConfiguration`、および `TaskEbsConfiguration` を `EmrCluster` 設定で使用します。  
この Amazon EMR クラスターの例では、マスター、タスク、およびコアノードで Amazon EBS ボリュームを使用します。詳細については、*Amazon EMR 管理ガイド*の[Amazon EMR での Amazon EBS ボリューム](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-storage.html)を参照してください。  
これら設定はオプションです。これらの設定は、`EmrCluster` オブジェクトを使用する任意のパイプラインで使用できます。  
パイプラインで、`EmrCluster` オブジェクト設定をクリックします。次に [**マスター EBS 設定**]、[**コア EBS 設定**]、または [**タスク EBS 設定**] を選択し、次の例のような設定詳細を入力します。  

```
{
  "objects": [
    {
      "output": {
        "ref": "S3BackupLocation"
      },
      "input": {
        "ref": "DDBSourceTable"
      },
      "maximumRetries": "2",
      "name": "TableBackupActivity",
      "step": "s3://dynamodb-emr-#{myDDBRegion}/emr-ddb-storage-handler/2.1.0/emr-ddb-2.1.0.jar,org.apache.hadoop.dynamodb.tools.DynamoDbExport,#{output.directoryPath},#{input.tableName},#{input.readThroughputPercent}",
      "id": "TableBackupActivity",
      "runsOn": {
        "ref": "EmrClusterForBackup"
      },
      "type": "EmrActivity",
      "resizeClusterBeforeRunning": "false"
    },
    {
      "readThroughputPercent": "#{myDDBReadThroughputRatio}",
      "name": "DDBSourceTable",
      "id": "DDBSourceTable",
      "type": "DynamoDBDataNode",
      "tableName": "#{myDDBTableName}"
    },
    {
      "directoryPath": "#{myOutputS3Loc}/#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}",
      "name": "S3BackupLocation",
      "id": "S3BackupLocation",
      "type": "S3DataNode"
    },
    {
      "name": "EmrClusterForBackup",
      "coreInstanceCount": "1",
      "taskInstanceCount": "1",
      "taskInstanceType": "m4.xlarge",
      "coreInstanceType": "m4.xlarge",
      "releaseLabel": "emr-4.7.0",
      "masterInstanceType": "m4.xlarge",
      "id": "EmrClusterForBackup",
      "subnetId": "#{mySubnetId}",
      "emrManagedMasterSecurityGroupId": "#{myMasterSecurityGroup}",
      "emrManagedSlaveSecurityGroupId": "#{mySlaveSecurityGroup}",
      "region": "#{myDDBRegion}",
      "type": "EmrCluster",
      "coreEbsConfiguration": {
        "ref": "EBSConfiguration"
      },
      "masterEbsConfiguration": {
        "ref": "EBSConfiguration"
      },
      "taskEbsConfiguration": {
        "ref": "EBSConfiguration"
      },
      "keyPair": "user-key-pair"
    },
    {
       "name": "EBSConfiguration",
        "id": "EBSConfiguration",
        "ebsOptimized": "true",
        "ebsBlockDeviceConfig" : [
            { "ref": "EbsBlockDeviceConfig" }
        ],
        "type": "EbsConfiguration"
    },
    {
        "name": "EbsBlockDeviceConfig",
        "id": "EbsBlockDeviceConfig",
        "type": "EbsBlockDeviceConfig",
        "volumesPerInstance" : "2",
        "volumeSpecification" : {
            "ref": "VolumeSpecification"
        }
    },
    {
      "name": "VolumeSpecification",
      "id": "VolumeSpecification",
      "type": "VolumeSpecification",
      "sizeInGB": "500",
      "volumeType": "io1",
      "iops": "1000"
    },
    {
      "failureAndRerunMode": "CASCADE",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "#{myPipelineLogUri}",
      "scheduleType": "ONDEMAND",
      "name": "Default",
      "id": "Default"
    }
  ],
  "parameters": [
    {
      "description": "Output S3 folder",
      "id": "myOutputS3Loc",
      "type": "AWS::S3::ObjectKey"
    },
    {
      "description": "Source DynamoDB table name",
      "id": "myDDBTableName",
      "type": "String"
    },
    {
      "default": "0.25",
      "watermark": "Enter value between 0.1-1.0",
      "description": "DynamoDB read throughput ratio",
      "id": "myDDBReadThroughputRatio",
      "type": "Double"
    },
    {
      "default": "us-east-1",
      "watermark": "us-east-1",
      "description": "Region of the DynamoDB table",
      "id": "myDDBRegion",
      "type": "String"
    }
  ],
  "values": {
     "myDDBRegion": "us-east-1",
      "myDDBTableName": "ddb_table",
      "myDDBReadThroughputRatio": "0.25",
      "myOutputS3Loc": "s3://s3_path",
      "mySubnetId": "subnet_id",
      "mySlaveSecurityGroup": "slave security group",
      "myMasterSecurityGroup": "master security group",
      "myPipelineLogUri": "s3://s3_path"
  }
}
```

## 以下の資料も参照してください。
<a name="emrcluster-seealso"></a>
+ [EmrActivity](dp-object-emractivity.md)

# HttpProxy
<a name="dp-object-httpproxy"></a>

HttpProxy では、ユーザー独自のプロキシを設定し、Task Runner がそのプロキシを通じて AWS Data Pipeline サービスにアクセスできるようにします。この情報を使用して、実行中の Task Runner を設定する必要はありません。

## Task Runner での HttpProxy の例
<a name="example9"></a>

次のパイプライン定義は、`HttpProxy` オブジェクトを示しています。

```
{
  "objects": [
    {
      "schedule": {
        "ref": "Once"
      },
      "pipelineLogUri": "s3://myDPLogUri/path",
      "name": "Default",
      "id": "Default"
    },
    {
      "name": "test_proxy",
      "hostname": "hostname",
      "port": "port",
      "username": "username",
      "*password": "password",
      "windowsDomain": "windowsDomain",
      "type": "HttpProxy",
      "id": "test_proxy",
    },
    {
      "name": "ShellCommand",
      "id": "ShellCommand",
      "runsOn": {
        "ref": "Resource"
      },
      "type": "ShellCommandActivity",
      "command": "echo 'hello world' "
    },
    {
      "period": "1 day",
      "startDateTime": "2013-03-09T00:00:00",
      "name": "Once",
      "id": "Once",
      "endDateTime": "2013-03-10T00:00:00",
      "type": "Schedule"
    },
    {
      "role": "dataPipelineRole",
      "httpProxy": {
        "ref": "test_proxy"
      },
      "actionOnResourceFailure": "retrynone",
      "maximumRetries": "0",
      "type": "Ec2Resource",
      "terminateAfter": "10 minutes",
      "resourceRole": "resourceRole",
      "name": "Resource",
      "actionOnTaskFailure": "terminate",
      "securityGroups": "securityGroups",
      "keyPair": "keyPair",
      "id": "Resource",
      "region": "us-east-1"
    }
  ],
  "parameters": []
}
```

## 構文
<a name="httpproxy-slots"></a>


****  

| 必須フィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| hostname | クライアントが AWS サービスへの接続に使用するプロキシのホスト。 | String | 
| port | クライアントが AWS サービスへの接続に使用するプロキシホストのポート。 | String | 

 


****  

| オプションのフィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| parent | スロットの継承元となる現在のオブジェクトの親。 | 参照オブジェクト ("parent":\$1"ref":"myBaseObjectId"\$1 など) | 
| \$1パスワード | プロキシ用のパスワード。 | String | 
| s3NoProxy | Amazon S3 への接続時に HTTP プロキシを無効にします。 | ブール値 | 
| username | プロキシ用のユーザー名。 | String | 
| windowsDomain | NTLMプロキシ用のWindowsドメイン名。 | String | 
| windowsWorkgroup | NTLM プロキシ用の Windows ワークグループ名。 | String | 

 


****  

| 実行時フィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| @version | オブジェクトが作成されたパイプラインのバージョン。 | String | 

 


****  

| システムフィールド | 説明 | スロットタイプ | 
| --- | --- | --- | 
| @error | 形式が正しくないオブジェクトを説明するエラー。 | String | 
| @pipelineId | このオブジェクトが属するパイプラインの ID。 | String | 
| @sphere | オブジェクトの球は、ライフサイクルにおける場所を示します。コンポーネントオブジェクトにより、試行オブジェクトを実行するインスタンスオブジェクトが発生します。 | String | 