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

AWS::OpsWorks::Stack

AWS OpsWorks スタックを作成します。AWS OpsWorks スタックは、まとめて管理するインスタンスのセットを表します。通常は、PHP アプリケーションの提供のように共通の用途があります。

構文

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

JSON

Copy
{ "Type" : "AWS::OpsWorks::Stack", "Properties" : { "AgentVersion" : String, "Attributes" : { String:String, ... }, "ChefConfiguration" : { ChefConfiguration }, "CloneAppIds" : [ String, ... ], "ClonePermissions" : Boolean, "ConfigurationManager" : { StackConfigurationManager }, "CustomCookbooksSource" : { Source }, "CustomJson" : JSON, "DefaultAvailabilityZone" : String, "DefaultInstanceProfileArn" : String, "DefaultOs" : String, "DefaultRootDeviceType" : String, "DefaultSshKeyName" : String, "DefaultSubnetId" : String, "EcsClusterArn" : String, "ElasticIps" : [ ElasticIp, ... ], "HostnameTheme" : String, "Name" : String, "RdsDbInstances" : [ RdsDbInstance, ... ], "ServiceRoleArn" : String, "SourceStackId" : String, "Tags" : [ Tags, ... ], "UseCustomCookbooks" : Boolean, "UseOpsworksSecurityGroups" : Boolean, "VpcId" : String } }

YAML

Copy
Type: "AWS::OpsWorks::Stack" Properties: AgentVersion: String Attributes: String:String ChefConfiguration: ChefConfiguration CloneAppIds: - 文字列 ClonePermissions: Boolean ConfigurationManager: StackConfigurationManager CustomCookbooksSource: Source CustomJson: JSON DefaultAvailabilityZone: String DefaultInstanceProfileArn: String DefaultOs: String DefaultRootDeviceType: String DefaultSshKeyName: String DefaultSubnetId: String EcsClusterArn: String ElasticIps: - ElasticIp HostnameTheme: String Name: String RdsDbInstances: - RdsDbInstance ServiceRoleArn: String SourceStackId: String Tags: - Tags UseCustomCookbooks: Boolean UseOpsworksSecurityGroups: Boolean VpcId: String

プロパティ

AgentVersion

使用する AWS OpsWorks エージェントのバージョン。エージェントは、そのサービスとのやり取りを行うほか、ライフサイクルイベントに応じたインスタンスでの Chef 実行の開始などのタスクを処理します。有効な値については、「AgentVersion」パラメーター (「CreateStack」アクション (AWS OpsWorks Stacks API Reference)) を参照してください。

Required: No

Type: String

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

Attributes

スタック属性バッグに追加するユーザー定義のキーと値のペア (複数可)。

Required: No

: キーと値のペアのリスト

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

ChefConfiguration

Chef 設定について説明します。詳細については、AWS OpsWorks Stacks API Referenceの「CreateStack ChefConfiguration」パラメーターを参照してください。

注記

Berkshelf を有効にするには、Berkshelf をサポートしている ConfigurationManager プロパティの Chef バージョンを選択する必要があります。

Required: No

タイプ: AWS OpsWorks ChefConfiguration タイプ

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

CloneAppIds

AWS OpsWorks スタックをクローンしている場合は、ソーススタックからの AWS OpsWorks アプリケーションスタック ID のリストにクローンされたスタックが含まれるようにします。

Required: No

Type: List of String values

更新に伴う要件: 置換

ClonePermissions

AWS OpsWorks スタックをクローンする場合、ソーススタックのアクセス権限をクローンするかどうかを示します。

Required: No

Type: Boolean

更新に伴う要件: 置換

ConfigurationManager

設定マネージャーについて説明します。スタックを作成するときは、設定マネージャを使用して Chef バージョンを指定します。サポートされている Chef バージョンについては、AWS OpsWorks Stacks API Referenceの「CreateStack ConfigurationManager」パラメーターを参照してください。

Required: No

タイプ: AWS OpsWorks StackConfigurationManager のタイプ

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

CustomCookbooksSource

リポジトリからクックブックを取得するために必要な情報を保持します。

Required: No

タイプ: AWS OpsWorks Source タイプ

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

CustomJson

ユーザー定義カスタム JSON オブジェクト。カスタム JSON は、対応するデフォルトのスタック設定の JSON 値を上書きするために使用されます。詳細については、AWS OpsWorks Stacks API Referenceの「CreateStack」を参照してください。

重要

AWS CloudFormation は、Boolean 型や数値型の属性も含め、すべての JSON 属性を文字列として送信します。ブール値や数値を受け取るレシピは、文字列を受け取ったうえで、ブール値または数値として解釈するように変更を加える必要があります。

Required: No

Type: JSON object

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

DefaultAvailabilityZone

スタックのデフォルトのアベイラビリティーゾーン。指定したリージョンに存在する必要があります。

Required: No

Type: String

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

DefaultInstanceProfileArn

すべてのスタックの Amazon EC2 インスタンスに使用されるデフォルトのプロファイルである IAM インスタンスプロファイルの Amazon リソースネーム (ARN)。

Required: Yes

Type: String

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

DefaultOs

スタックのデフォルトのオペレーティング システム。詳細については、AWS OpsWorks Stacks API Referenceの「CreateStack」を参照してください。

Required: No

Type: String

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

DefaultRootDeviceType

デフォルトのルートデバイスのタイプ。この値は、スタック内のすべてのインスタンスにデフォルトで使用されますが、インスタンスの作成時にオーバーライドすることができます。詳細については、AWS OpsWorks Stacks API Referenceの「CreateStack」を参照してください。

Required: No

Type: String

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

DefaultSshKeyName

スタックのインスタンスのデフォルトの SSH キー。この値は、インスタンスを作成または更新するときにオーバーライドすることができます。

Required: No

Type: String

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

DefaultSubnetId

スタックのデフォルトのサブネット ID。インスタンスの作成時に別のサブネット ID を指定しない限り、すべてのインスタンスはこのサブネットで起動します。

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

Type: String

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

EcsClusterArn

AWS OpsWorks スタックに登録される Amazon Elastic Container Service (Amazon ECS) クラスターの Amazon リソースネーム (ARN)。

注記

別の AWS OpsWorks スタックに登録されているクラスターを指定する場合、AWS CloudFormation はクラスターを登録する前に既存の関係を登録解除します。

Required: No

Type: String

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

ElasticIps

AWS OpsWorks スタックに登録する Elastic IP アドレスのリスト。

注記

別の AWS OpsWorks スタックに登録されている IP アドレスを指定する場合、AWS CloudFormation は IP アドレスを登録する前に既存の関係を登録解除します。

Required: No

AWS OpsWorks スタックの ElasticIpType: リスト

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

HostnameTheme

スタックのホスト名のテーマ。スペースはアンダースコアで置き換えられます。スタックのインスタンスのホスト名を生成する際にテーマが使用されます。詳細については、AWS OpsWorks Stacks API Referenceの「CreateStack」を参照してください。

Required: No

Type: String

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

Name

AWS OpsWorks スタックの名前。

Required: Yes

Type: String

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

RdsDbInstances

AWS OpsWorks スタックに登録する Amazon Relational Database Service (Amazon RDS) DB インスタンス。

注記

別の AWS OpsWorks スタックに登録されている DB インスタンスを指定する場合、AWS CloudFormation は DB インスタンスを登録する前に既存の関係を登録解除します。

Required: No

AWS OpsWorks スタックの RdsDbInstanceType: リスト

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

ServiceRoleArn

AWS OpsWorks がお客様に代わって AWS リソースを扱う際に使用する AWS Identity and Access Management (IAM) ロール。既存の IAM ロールの Amazon リソースネーム (ARN) を指定する必要があります。

Required: Yes

Type: String

更新に伴う要件: 置換

SourceStackId

AWS OpsWorks スタックをクローンする場合の、クローンするソース AWS OpsWorks スタックのスタック ID。

Required: No

Type: String

更新に伴う要件: 置換

Tags

AWS OpsWorks スタックに関連付ける任意のタグのセット (キーと値のペア) を指定します。タグを使ってリソースを管理します。

Required: No

Type: AWS CloudFormation Resource Tags

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

UseCustomCookbooks

カスタムクックブックをスタックで使用するかどうか。

Required: No

Type: Boolean

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

UseOpsworksSecurityGroups

AWS OpsWorks の組み込みセキュリティグループとスタックのレイヤーを関連付けるかどうか。

Required: No

Type: Boolean

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

VpcId

スタックの起動先となる VPC の ID。指定したリージョンに存在する必要があります。すべてのインスタンスはこの VPC で起動します。このプロパティを指定する場合は、DefaultSubnetId プロパティを指定する必要があります。

Required: No

Type: String

更新に伴う要件: 置換

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref によりリソース名が返されます。 例:

Copy
{ "Ref": "myStack" }

AWS OpsWorks スタック myStack に、Ref は、AWS OpsWorks スタックの ID を返します。

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

テンプレートの例

次のスニペットは、デフォルトのサービスロールと Amazon EC2 ロールを使用する AWS OpsWorks スタックを作成する例です。これらのロールは、AWS OpsWorks の初回使用後に作成されます。

JSON

Copy
"myStack" : { "Type" : "AWS::OpsWorks::Stack", "Properties" : { "Name" : {"Ref":"OpsWorksStackName"}, "ServiceRoleArn" : { "Fn::Join": ["", ["arn:aws:iam::", {"Ref":"AWS::AccountId"}, ":role/aws-opsworks-service-role"]] }, "DefaultInstanceProfileArn" : { "Fn::Join": ["", ["arn:aws:iam::", {"Ref":"AWS::AccountId"}, ":instance-profile/aws-opsworks-ec2-role"]] }, "DefaultSshKeyName" : {"Ref":"KeyName"} } }

YAML

Copy
myStack: Type: "AWS::OpsWorks::Stack" Properties: Name: Ref: "OpsWorksStackName" ServiceRoleArn: Fn::Join: - "" - - "arn:aws:iam::" - Ref: "AWS::AccountId" - ":role/aws-opsworks-service-role" DefaultInstanceProfileArn: Fn::Join: - "" - - "arn:aws:iam::" - Ref: "AWS::AccountId" - ":instance-profile/aws-opsworks-ec2-role" DefaultSshKeyName: Ref: "KeyName"

レイヤーとスタックのタグを指定する

次の完全なテンプレートの例では、パラメータ値を参照する AWS OpsWorks レイヤーとスタックのタグを指定します。

JSON

Copy
{ "Resources": { "ServiceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ { "Ref": "OpsServicePrincipal" } ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "opsworks-service", "PolicyDocument": { "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "iam:PassRole", "cloudwatch:GetMetricStatistics", "elasticloadbalancing:*" ], "Resource": "*" } ] } } ] } }, "OpsWorksEC2Role": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ { "Ref": "Ec2ServicePrincipal" } ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "InstanceRole": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksEC2Role" } ] } }, "myStack": { "Type": "AWS::OpsWorks::Stack", "Properties": { "Name": "TestStack", "ServiceRoleArn": { "Fn::GetAtt": [ "ServiceRole", "Arn" ] }, "DefaultInstanceProfileArn": { "Fn::GetAtt": [ "InstanceRole", "Arn" ] }, "Tags": [ { "Key": { "Ref": "StackKey" }, "Value": { "Ref": "StackValue" } } ] } }, "myLayer": { "Type": "AWS::OpsWorks::Layer", "Properties": { "EnableAutoHealing": "true", "AutoAssignElasticIps": "false", "AutoAssignPublicIps": "true", "StackId": { "Ref": "myStack" }, "Type": "custom", "Shortname": "shortname", "Name": "name", "Tags": [ { "Key": { "Ref": "LayerKey" }, "Value": { "Ref": "LayerValue" } } ] } } }, "Parameters": { "StackKey": { "Type": "String" }, "LayerKey": { "Type": "String" }, "StackValue": { "Type": "String" }, "LayerValue": { "Type": "String" }, "OpsServicePrincipal": { "Type": "String" }, "Ec2ServicePrincipal": { "Type": "String" } } }

YAML

Copy
Resources: ServiceRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: - !Ref OpsServicePrincipal Action: - 'sts:AssumeRole' Path: / Policies: - PolicyName: opsworks-service PolicyDocument: Statement: - Effect: Allow Action: - 'ec2:*' - 'iam:PassRole' - 'cloudwatch:GetMetricStatistics' - 'elasticloadbalancing:*' Resource: '*' OpsWorksEC2Role: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: - !Ref Ec2ServicePrincipal Action: - 'sts:AssumeRole' Path: / InstanceRole: Type: 'AWS::IAM::InstanceProfile' Properties: Path: / Roles: - !Ref OpsWorksEC2Role myStack: Type: 'AWS::OpsWorks::Stack' Properties: Name: TestStack ServiceRoleArn: !GetAtt - ServiceRole - Arn DefaultInstanceProfileArn: !GetAtt - InstanceRole - Arn Tags: - Key: !Ref StackKey Value: !Ref StackValue myLayer: Type: 'AWS::OpsWorks::Layer' Properties: EnableAutoHealing: 'true' AutoAssignElasticIps: 'false' AutoAssignPublicIps: 'true' StackId: !Ref myStack Type: custom Shortname: shortname Name: name Tags: - Key: !Ref LayerKey Value: !Ref LayerValue Parameters: StackKey: Type: String LayerKey: Type: String StackValue: Type: String LayerValue: Type: String OpsServicePrincipal: Type: String Ec2ServicePrincipal: Type: String

追加情報