メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::EMR::Cluster

AWS::EMR::Cluster リソースは、EC2 インスタンスのコレクションである Amazon EMR クラスターを作成し、大量のデータを処理および分析するためのビッグデータフレームワークを実行できるようにします。詳細については、Amazon EMR 管理ガイドAmazon EMR クラスターの計画を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

Copy
{ "Type" : "AWS::EMR::Cluster", "Properties" : { "AdditionalInfo" : JSON object, "Applications" : [ Applications, ... ], "AutoScalingRole" : String, "BootstrapActions" [ Bootstrap Actions, ... ], "Configurations" : [ Configurations, ... ], "CustomAmiId" : String, "Instances" : JobFlowInstancesConfig, "JobFlowRole" : String, "LogUri" : String, "Name" : String, "ReleaseLabel" : String, "ScaleDownBehavior" : String, "SecurityConfiguration" : String, "ServiceRole" : String, "Tags" : [ Resource Tag, ... ], "VisibleToAllUsers" : Boolean } }

YAML

Copy
Type: "AWS::EMR::Cluster" Properties: AdditionalInfo: JSON object Applications: - Applications AutoScalingRole: String BootstrapActions: - Bootstrap Actions Configurations: - Configurations CustomAmiId: String Instances: JobFlowInstancesConfig JobFlowRole: String LogUri: String Name: String ReleaseLabel: String ScaleDownBehavior: String SecurityConfiguration: String ServiceRole: String Tags: - Resource Tag VisibleToAllUsers: Boolean

プロパティ

注記

各プロパティの制約と有効な値の詳細については、Amazon EMR API Referenceクラスターデータタイプを参照してください。

AdditionalInfo

選択する追加の機能。高度な用途のみを対象としています。 これは、サードパーティベンダーがテスト目的で使用するサードパーティアプリケーションに関するメタ情報です。

Required: No

Type: JSON object

更新に伴う要件: 置換

Applications

クラスターでデプロイするソフトウェアアプリケーションと、これらのアプリケーションに Amazon EMR から渡す引数。

Required: No

Amazon EMR クラスターアプリケーションType: リスト

更新に伴う要件: 置換

AutoScalingRole

自動スケーリングポリシーの AWS Identity and Access Management (IAM) ロール。デフォルトのロールは EMR_AutoScaling_DefaultRole です。IAM ロールは、インスタンスグループで Amazon EC2 インスタンスを起動および終了するために自動スケーリング機能が必要とするアクセス許可を提供します。

Required: No

Type: String

更新に伴う要件: 置換

BootstrapActions

クラスターでアプリケーションを起動する前に Amazon EMR で実行するブートストラップアクションのリスト。

Required: No

Amazon EMR クラスターの BootstrapActionConfigType: リスト

更新に伴う要件: 置換

Configurations

Amazon EMR クラスターのソフトウェア設定。

Required: No

Amazon EMR クラスターの設定Type: リスト

更新に伴う要件: 置換

CustomAmiId

EMR が所有する AMI の代わりに、クラスタ用のカスタム Amazon Linux AMI を指定します。 詳細については、Amazon EMR 管理ガイド の「カスタム AMI の使用」を参照してください。

Required: No

Type: String

更新に伴う要件: 置換

: "CustomAmiId" : "ami-7fb3bc69"

Instances

Amazon EMR クラスターでジョブを実行する EC2 インスタンスを設定します。

Required: Yes

Type: Amazon EMR クラスターの JobFlowInstancesConfig

更新に伴う要件: 一時的な中断。

JobFlowRole

インスタンスプロファイル、および EC2 ロールとも呼ばれます。使用するロールに関連付けられたインスタンスプロファイルを受け入れます。クラスターのすべての EC2 インスタンスはこのロールを引き受けます。詳細については、Amazon EMR 管理ガイドAmazon EMR の IAM ロールの作成と使用を参照してください。

Required: Yes

Type: String

更新に伴う要件: 置換

LogUri

Amazon EMR がジョブフローのログファイルを書き込む先の S3バケットの場所。値を指定しない場合、Amazon EMR はログファイルを書き込みません。

Required: No

Type: String

更新に伴う要件: 置換

Name

Amazon EMR クラスターの名前。

Required: Yes

Type: String

更新に伴う要件: 置換

ReleaseLabel

Amazon EMRソフトウェアのリリースラベル。リリースは、Amazon EMR クラスターにインストールして設定できるソフトウェアアプリケーションおよびコンポーネントのセットです。詳細については、Amazon EMR Release Guideの「About Amazon EMR Releases」参照してください。

現在、AWS CloudFormation は Amazon EMR 4.0 以降のソフトウェアリリースのみをサポートしています。

Required: Conditional。Applications プロパティを指定する場合は、このプロパティを指定する必要があります。

Type: String

更新に伴う要件: 置換

ScaleDownBehavior

自動スケールインアクティビティが発生するかインスタンスグループのサイズが変更された場合に、どのように個々の EC2 インスタンスが終了するかを示します。詳細については、Amazon EMR API Reference のクラスターを参照してください。

Required: No

Type: String

更新に伴う要件: 置換

SecurityConfiguration

クラスターに適用されたセキュリティ設定の名前。

Required: No

Type: String

更新に伴う要件: 置換

ServiceRole

Amazon EMR がユーザーの代わりに AWS リソースにアクセスするために引き受ける IAM ロール。詳細については、Amazon EMR 管理ガイドAmazon EMR の IAM ロールを設定するを参照してください。

Required: Yes

Type: String

更新に伴う要件: 置換

Tags

Amazon EMR クラスターを識別するために役立つ任意のタグのセット (キーと値のペア)。

Required: No

Type: AWS CloudFormation Resource Tags

更新に伴う要件: 中断はありません。

VisibleToAllUsers

クラスターのインスタンスを AWS アカウントのすべての IAM ユーザーに表示するかどうかを指定します。true を指定すると、すべての IAM ユーザーはインスタンスの表示と、インスタンスの管理 (アクセス権限がある場合) が可能です。false を指定すると、クラスターを作成した IAM ユーザーのみがクラスターを表示および管理できます。

Required: No

Type: Boolean

更新に伴う要件: 中断はありません。

デフォルト値: false

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref によりクラスター ID (j-1ABCD123AB1A など) が返されます。

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

MasterPublicDNS

マスターノード (インスタンス) のパブリック DNS 名 (ec2-12-123-123-123.us-west-2.compute.amazonaws.com など)。

Fn::GetAtt の使用の詳細については、「Fn::GetAtt」を参照してください。

2 つのコアノードを使用したクラスターの作成

次の例では、1 つのマスターノードと 2 つのコアノードで構成される Amazon EMR クラスターを作成します。指定された IAM ロールは、Amazon EMR により提供されたデフォルトロールです。この例では、デフォルトの VPC とサブネットの AWS リージョンでクラスターが起動されることも前提としています。これらがない場合は、クラスターの VPC とサブネットを指定するために Ec2SubnetId プロパティを使用します。それ以外の場合、AWS CloudFormation はクラスターを起動できず、次のメッセージを返します ElasticMapReduce Cluster failed to stabilize

JSON

Copy
"TestCluster": { "Type": "AWS::EMR::Cluster", "Properties": { "Instances": { "MasterInstanceGroup": { "InstanceCount": 1, "InstanceType": "m3.xlarge", "Market": "ON_DEMAND", "Name": "Master" }, "CoreInstanceGroup": { "InstanceCount": 2, "InstanceType": "m3.xlarge", "Market": "ON_DEMAND", "Name": "Core" }, "TerminationProtected" : true }, "Name": "TestCluster", "JobFlowRole": "EMR_EC2_DefaultRole", "ServiceRole": "EMR_DefaultRole", "ReleaseLabel": "emr-4.2.0", "Tags": [ { "Key": "IsTest", "Value": "True" } ] } }

YAML

Copy
TestCluster: Type: "AWS::EMR::Cluster" Properties: Instances: MasterInstanceGroup: InstanceCount: 1 InstanceType: "m3.xlarge" Market: "ON_DEMAND" Name: "Master" CoreInstanceGroup: InstanceCount: 2 InstanceType: "m3.xlarge" Market: "ON_DEMAND" Name: "Core" TerminationProtected: true Name: "TestCluster" JobFlowRole: "EMR_EC2_DefaultRole" ServiceRole: "EMR_DefaultRole" ReleaseLabel: "emr-4.2.0" Tags: - Key: "IsTest" Value: "True"

ブートストラップアクションを使用したクラスターの作成

次の例では、ブートストラップアクションで Amazon EMR クラスターを作成します。

JSON

Copy
"TestCluster": { "Type": "AWS::EMR::Cluster", "Properties": { "BootstrapActions": [{ "Name": "SomeBootStrapAction", "ScriptBootstrapAction": { "Path": "/path/to/s3" } }], "Instances": { "MasterInstanceGroup": { "InstanceCount": 1, "InstanceType": "m3.xlarge", "Market": "ON_DEMAND", "Name": "Master" }, "CoreInstanceGroup": { "InstanceCount": 2, "InstanceType": "m3.xlarge", "Market": "ON_DEMAND", "Name": "Core" }, "TerminationProtected": true }, "Name": "TestCluster", "JobFlowRole": "EMR_EC2_DefaultRole", "ScaleDownBehavior": "TERMINATE_AT_TASK_COMPLETION", "ServiceRole": "EMR_DefaultRole", "ReleaseLabel": "emr-4.2.0", "Tags": [ { "Key": "IsTest", "Value": "True" } ] } }

YAML

Copy
TestCluster: Type: "AWS::EMR::Cluster" Properties: BootstrapActions: - Name: "SomeBootStrapAction" ScriptBootstrapAction: Path: "/path/to/s3" Instances: MasterInstanceGroup: InstanceCount: 1 InstanceType: "m3.xlarge" Market: "ON_DEMAND" Name: "Master" CoreInstanceGroup: InstanceCount: 2 InstanceType: "m3.xlarge" Market: "ON_DEMAND" Name: "Core" TerminationProtected: true Name: "TestCluster" JobFlowRole: "EMR_EC2_DefaultRole" ScaleDownBehavior: "TERMINATE_AT_TASK_COMPLETION" ServiceRole: "EMR_DefaultRole" ReleaseLabel: "emr-4.2.0" Tags: - Key: "IsTest" Value: "True"

カスタム AMI を使用したクラスタの作成

次のサンプルテンプレートでは、Amazon EMR クラスタを作成するときにカスタム Amazon Linux AMI を指定できます。

JSON

Copy
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters" : { "CustomAmiId" : { "Type" : "String" }, "InstanceType" : { "Type" : "String" }, "ReleaseLabel" : { "Type" : "String" }, "SubnetId" : { "Type" : "String" }, "TerminationProtected" : { "Type" : "String", "Default" : "false" }, "ElasticMapReducePrincipal" : { "Type" : "String" }, "Ec2Principal" : { "Type" : "String" } }, "Resources": { "cluster": { "Type": "AWS::EMR::Cluster", "Properties": { "CustomAmiId" : {"Ref" : "CustomAmiId"}, "Instances": { "MasterInstanceGroup": { "InstanceCount": 1, "InstanceType": {"Ref" : "InstanceType"}, "Market": "ON_DEMAND", "Name": "cfnMaster" }, "CoreInstanceGroup": { "InstanceCount": 1, "InstanceType": {"Ref" : "InstanceType"}, "Market": "ON_DEMAND", "Name": "cfnCore" }, "TerminationProtected" : {"Ref" : "TerminationProtected"}, "Ec2SubnetId" : {"Ref" : "SubnetId"} }, "Name": "CFNtest", "JobFlowRole" : {"Ref": "emrEc2InstanceProfile"}, "ServiceRole" : {"Ref": "emrRole"}, "ReleaseLabel" : {"Ref" : "ReleaseLabel"}, "VisibleToAllUsers" : true, "Tags": [ { "Key": "key1", "Value": "value1" } ] } }, "emrRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": {"Ref" : "ElasticMapReducePrincipal"} }, "Action": "sts:AssumeRole" } ] }, "Path": "/", "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole"] } }, "emrEc2Role": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": {"Ref" : "Ec2Principal"} }, "Action": "sts:AssumeRole" } ] }, "Path": "/", "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role"] } }, "emrEc2InstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "emrEc2Role" } ] } } } }

YAML

Copy
AWSTemplateFormatVersion: 2010-09-09 Parameters: CustomAmiId: Type: String InstanceType: Type: String ReleaseLabel: Type: String SubnetId: Type: String TerminationProtected: Type: String Default: 'false' ElasticMapReducePrincipal: Type: String Ec2Principal: Type: String Resources: cluster: Type: 'AWS::EMR::Cluster' Properties: CustomAmiId: !Ref CustomAmiId Instances: MasterInstanceGroup: InstanceCount: 1 InstanceType: !Ref InstanceType Market: ON_DEMAND Name: cfnMaster CoreInstanceGroup: InstanceCount: 1 InstanceType: !Ref InstanceType Market: ON_DEMAND Name: cfnCore TerminationProtected: !Ref TerminationProtected Ec2SubnetId: !Ref SubnetId Name: CFNtest JobFlowRole: !Ref emrEc2InstanceProfile ServiceRole: !Ref emrRole ReleaseLabel: !Ref ReleaseLabel VisibleToAllUsers: true Tags: - Key: key1 Value: value1 emrRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2008-10-17 Statement: - Sid: '' Effect: Allow Principal: Service: !Ref ElasticMapReducePrincipal Action: 'sts:AssumeRole' Path: / ManagedPolicyArns: - 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole' emrEc2Role: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2008-10-17 Statement: - Sid: '' Effect: Allow Principal: Service: !Ref Ec2Principal Action: 'sts:AssumeRole' Path: / ManagedPolicyArns: - 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role' emrEc2InstanceProfile: Type: 'AWS::IAM::InstanceProfile' Properties: Path: / Roles: - !Ref emrEc2Role

このページの内容: