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

AWS::OpsWorks::Layer

AWS OpsWorks Layer を作成します。たとえば、インストールするパッケージとアプリケーション、そしてその設定方法を Layer によって定義します。

構文

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

JSON

Copy
{ "Type": "AWS::OpsWorks::Layer", "Properties": { "Attributes" : { String:String }, "AutoAssignElasticIps" : Boolean, "AutoAssignPublicIps" : Boolean, "CustomInstanceProfileArn" : String, "CustomJson" : JSON object, "CustomRecipes" : Recipes, "CustomSecurityGroupIds" : [ String, ... ], "EnableAutoHealing" : Boolean, "InstallUpdatesOnBoot" : Boolean, "LifecycleEventConfiguration" : LifeCycleEventConfiguration, "LoadBasedAutoScaling" : LoadBasedAutoScaling, "Name" : String, "Packages" : [ String, ... ], "Shortname" : String, "StackId" : String, "Tags" : [ Tags, ... ], "Type" : String, "VolumeConfigurations" : [ VolumeConfiguration, ... ] } }

YAML

Copy
Type: "AWS::OpsWorks::Layer" Properties: Attributes: String:String AutoAssignElasticIps: Boolean AutoAssignPublicIps: Boolean CustomInstanceProfileArn: String CustomRecipes: Recipes CustomJson: JSON object CustomSecurityGroupIds: - 文字列 EnableAutoHealing: Boolean InstallUpdatesOnBoot: Boolean LifecycleEventConfiguration: LifeCycleEventConfiguration LoadBasedAutoScaling: LoadBasedAutoScaling Name: String Packages: - 文字列 Shortname: String StackId: String Tags: - Tags Type: String VolumeConfigurations: - VolumeConfiguration

プロパティ

Attributes

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

Required: No

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

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

AutoAssignElasticIps

この Layer の Amazon EC2 インスタンスに Elastic IP アドレスを自動的に割り当てるかどうか。

Required: Yes

Type: Boolean

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

AutoAssignPublicIps

VPC 内で実行中の AWS OpsWorks スタックに関して、この Layer の Amazon EC2 インスタンスにパブリック IP アドレスを自動的に割り当てるかどうか。

Required: Yes

Type: Boolean

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

CustomInstanceProfileArn

この Layer の Amazon EC2 インスタンスに使用する IAM インスタンスプロファイルの Amazon リソースネーム (ARN)。

Required: No

Type: String

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

CustomJson

AWS OpsWorks がレイヤーのインスタンスにインストールするカスタムのスタック設定およびデプロイ属性。詳細については、AWS OpsWorks Stacks API ReferenceCreateLayer アクションの CustomJson パラメーターを参照してください。

Required: No

Type: JSON object

CustomRecipes

この Layer のカスタムイベントレシピ。

Required: No

タイプ: AWS OpsWorks Recipes タイプ

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

CustomSecurityGroupIds

この Layer のカスタムセキュリティグループ ID。

Required: No

Type: List of String values

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

EnableAutoHealing

切断またはタイムアウトした Amazon EC2 インスタンスを自動的に復旧させるかどうか。

Required: Yes

Type: Boolean

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

InstallUpdatesOnBoot

オペレーティングシステムとパッケージの更新をインスタンスの起動時にインストールするかどうか。

Required: No

Type: Boolean

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

LifecycleEventConfiguration

AWS OpsWorks Layer のライフサイクルイベント。

Required: No

タイプ: AWS OpsWorks Layer LifeCycleConfiguration

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

LoadBasedAutoScaling

AWS OpsWorks layer の負荷ベースのスケーリング設定。

Required: No

タイプ: AWS OpsWorks LoadBasedAutoScaling タイプ

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

Name

AWS OpsWorks Layer の名前。

Required: Yes

Type: String

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

Packages

この Layer のパッケージ。

Required: No

Type: List of String values

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

Shortname

Layer の短い名前。AWS OpsWorks および Chef レシピによって内部的に使用されます。アプリケーションファイルのインストール先ディレクトリの名前としても使用されます。

この名前の最大文字数は 200 文字で、使用できる文字は英数字、"-"、"_"、"." に限定されます。

重要

Layer の置き換えが必要になるようなプロパティを更新する場合は、短い名前を新たに指定する必要があります。複数の Layer に同じ短い名前を指定することはできません。

Required: Yes

Type: String

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

StackId

この Layer が関連付けられる AWS OpsWorks スタックの ID。

Required: Yes

Type: String

更新に伴う要件: 置換

Tags

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

Required: No

Type: AWS CloudFormation Resource Tags

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

Type

Layer タイプ。1 つのスタックに、同じタイプの複数の Layer を割り当てることはできません。ただし、custom タイプは例外です。指定できる custom タイプの数に制限はありません。詳細については、AWS OpsWorks Stacks API Referenceの「CreateLayer」を参照してください。

重要

Layer の置き換えが必要になるようなプロパティを更新する場合、custom タイプがなければ、新しいタイプを指定する必要があります。指定できる custom タイプの数に制限はありません。

Required: Yes

Type: String

更新に伴う要件: 置換

VolumeConfigurations

この Layer の Amazon EBS ボリュームを表します。

Required: No

: AWS OpsWorks VolumeConfiguration タイプ のリスト

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

戻り値

参照番号

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

Copy
{ "Ref": "myLayer" }

AWS OpsWorks Layer myLayer に関して、Ref は、AWS OpsWorks Layer ID を返します。

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

テンプレートの例

AWS OpsWorks PHP Layer

次のスニペットは、myStack AWS OpsWorks スタックに関連付けられた AWS OpsWorks PHP Layer を作成します。この Layer は、myApp AWS OpsWorks アプリケーションに依存します。

JSON

Copy
"myLayer": { "Type": "AWS::OpsWorks::Layer", "DependsOn": "myApp", "Properties": { "StackId": {"Ref": "myStack"}, "Type": "php-app", "Shortname" : "php-app", "EnableAutoHealing" : "true", "AutoAssignElasticIps" : "false", "AutoAssignPublicIps" : "true", "Name": "MyPHPApp" } }

YAML

Copy
myLayer: Type: "AWS::OpsWorks::Layer" DependsOn: "myApp" Properties: StackId: Ref: "myStack" Type: "php-app" Shortname: "php-app" EnableAutoHealing: "true" AutoAssignElasticIps: "false" AutoAssignPublicIps: "true" Name: "MyPHPApp"

負荷ベースの Auto Scaling Layer

次のスニペットでは、myStackAWS OpsWorks スタックに関連付けられた負荷ベースの自動スケーリング AWS OpsWorks PHP layer を作成します。

JSON

Copy
"myLayer": { "Type": "AWS::OpsWorks::Layer", "DependsOn": "myApp", "Properties": { "StackId": {"Ref": "myStack"}, "Type": "php-app", "Shortname" : "php-app", "EnableAutoHealing" : "true", "AutoAssignElasticIps" : "false", "AutoAssignPublicIps" : "true", "Name": "MyPHPApp", "LoadBasedAutoScaling" : { "Enable" : "true", "UpScaling" : { "InstanceCount" : 1, "ThresholdsWaitTime" : 1, "IgnoreMetricsTime" : 1, "CpuThreshold" : 70.0, "MemoryThreshold" : 30.0, "LoadThreshold" : 0.7 }, "DownScaling" : { "InstanceCount" : 1, "ThresholdsWaitTime" : 1, "IgnoreMetricsTime" : 1, "CpuThreshold" : 30.0, "MemoryThreshold" : 70.0, "LoadThreshold" : 0.3 } } } }

YAML

Copy
myLayer: Type: "AWS::OpsWorks::Layer" DependsOn: "myApp" Properties: StackId: Ref: "myStack" Type: "php-app" Shortname: "php-app" EnableAutoHealing: "true" AutoAssignElasticIps: "false" AutoAssignPublicIps: "true" Name: "MyPHPApp" LoadBasedAutoScaling: Enable: "true" UpScaling: InstanceCount: 1 ThresholdsWaitTime: 1 IgnoreMetricsTime: 1 CpuThreshold: 70 MemoryThreshold: 30 LoadThreshold: 0.7 DownScaling: InstanceCount: 1 ThresholdsWaitTime: 1 IgnoreMetricsTime: 1 CpuThreshold: 30 MemoryThreshold: 70 LoadThreshold: 0.3

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

次の完全なテンプレートの例では、パラメータ値を参照する 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

以下の資料も参照してください。