AWS::OpsWorks::Layer - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::OpsWorks::Layer

创建层有关更多信息,请参阅如何创建层

注意

仅当堆栈没有非自定义层类型的现有层时,才应将 CreateLayer 用于该类型,例如 PHP 应用程序服务器。一个堆栈最多可以包含每个非自定义层的一个实例;如果您尝试创建第二个实例,CreateLayer 将失败。堆栈可以具有任意数量的自定义层,因此您可以根据需要为该层类型调用多次 CreateLayer

必需权限:要使用此操作,IAM 用户必须具有堆栈的“管理权限”级别,或者具有明确授予权限的附加策略。有关用户权限的更多信息,请参阅管理用户权限

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::OpsWorks::Layer", "Properties" : { "Attributes" : {Key : Value, ...}, "AutoAssignElasticIps" : Boolean, "AutoAssignPublicIps" : Boolean, "CustomInstanceProfileArn" : String, "CustomJson" : Json, "CustomRecipes" : Recipes, "CustomSecurityGroupIds" : [ String, ... ], "EnableAutoHealing" : Boolean, "InstallUpdatesOnBoot" : Boolean, "LifecycleEventConfiguration" : LifecycleEventConfiguration, "LoadBasedAutoScaling" : LoadBasedAutoScaling, "Name" : String, "Packages" : [ String, ... ], "Shortname" : String, "StackId" : String, "Tags" : [ Tag, ... ], "Type" : String, "UseEbsOptimizedInstances" : Boolean, "VolumeConfigurations" : [ VolumeConfiguration, ... ] } }

属性

Attributes

要添加到堆栈属性的一个或多个用户定义的键/值对。

要创建集群层,请将 EcsClusterArn 属性设置为集群的 ARN。

必需:否

类型:字符串的映射

Update requires: No interruption

AutoAssignElasticIps

是否自动将弹性 IP 地址分配给此层的实例。有关更多信息,请参阅如何编辑层

必需:是

类型:布尔值

Update requires: No interruption

AutoAssignPublicIps

对于在 VPC 中运行的堆栈,是否自动将公有 IP 地址分配给此层的实例。有关更多信息,请参阅如何编辑层

必需:是

类型:布尔值

Update requires: No interruption

CustomInstanceProfileArn

IAM 配置文件(用于此层的 EC2 实例)的 ARN。有关 IAM ARN 的更多信息,请参阅使用标识符

必需:否

类型:字符串

Update requires: No interruption

CustomJson

一个 JSON 格式的字符串,其中包含要安装在此层的实例上的自定义堆栈配置和部署属性。有关更多信息,请参阅使用自定义 JSON。截止 AWS CLI 1.7.42 版之前的版本支持此功能。

必需:否

类型:Json

Update requires: No interruption

CustomRecipes

一个用于指定层自定义配方的 LayerCustomRecipes 对象。

必需:否

类型配方

Update requires: No interruption

CustomSecurityGroupIds

包含层的自定义安全组 ID 的数组。

必需:否

类型:字符串列表

Update requires: No interruption

EnableAutoHealing

此层是否禁用自动修复。

必需:是

类型:布尔值

Update requires: No interruption

InstallUpdatesOnBoot

是否在实例启动时安装操作系统和软件包更新。默认值是 true.要控制安装更新的时间,请将此值设置为 false。然后,您必须手动更新您的实例,方法为使用 CreateDeployment 运行 update_dependencies 堆栈命令,或者在实例上手动运行 yum (Amazon Linux) 或 apt-get (Ubuntu)。

注意

为确保您的实例拥有最新的安全更新,我们强烈建议您使用默认值 true

必需:否

类型:布尔值

Update requires: No interruption

LifecycleEventConfiguration

可用于配置 Shutdown 事件以指定执行超时并启用或禁用 Elastic Load Balancer 连接耗尽的 LifeCycleEventConfiguration 对象。

必需:否

类型LifecycleEventConfiguration

Update requires: No interruption

LoadBasedAutoScaling

AWS OpsWorks 层的基于负载的扩展配置。

必需:否

类型LoadBasedAutoScaling

Update requires: No interruption

Name

控制台使用的层名称。

必需:是

类型:字符串

Update requires: No interruption

Packages

用于描述层软件包的 Package 对象的数组。

必需:否

类型:字符串列表

Update requires: No interruption

Shortname

仅对自定义层使用此参数来指定层的短名称,该名称由 AWS OpsWorks Stacks 和 Chef 配方在内部使用。短名称也用作安装应用程序文件的目录的名称。它最多可以包含 200 个字符,仅限于字母数字字符、“-”、“_”和“.”。

内置层的短名称由 AWS OpsWorks Stacks 定义。有关更多信息,请参阅层参考

必需:是

类型:字符串

Update requires: No interruption

StackId

层堆栈 ID。

必需:是

类型:字符串

Update requires: Replacement

Tags

指定一组或多组标签(键/值对),以便与此 AWS OpsWorks 层关联。使用标签来管理您的资源。

必需:否

类型Tag 的列表

Update requires: No interruption

Type

层类型。一个堆栈不能具有相同类型的多个内置层。它可以具有任何数量的自定义层。内置层在 Chef 12 堆栈中不可用。

必需:是

类型:字符串

允许的值aws-flow-ruby | custom | db-master | ecs-cluster | java-app | lb | memcached | monitoring-master | nodejs-app | php-app | rails-app | web

Update requires: Replacement

UseEbsOptimizedInstances

是否使用 Amazon EBS 优化实例。

必需:否

类型:布尔值

Update requires: No interruption

VolumeConfigurations

一个 VolumeConfigurations 对象,用于描述层的 Amazon EBS 卷。

必需:否

类型VolumeConfiguration 的列表

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 资源名称。例如:

{ "Ref": "myLayer" }

对于 AWS OpsWorks 层 myLayerRef 返回 AWS OpsWorks 层 ID。

For more information about using the Ref function, see Ref.

示例

AWS OpsWorks PHP 层

以下代码段创建与 myStack AWS OpsWorks Stack 关联的 AWS OpsWorks PHP 层。该层依赖于 myApp AWS OpsWorks 应用程序。

JSON

"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

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 层

以下代码段创建一个基于负载的自动扩展 AWS OpsWorks PHP 层,该层与 myStack AWS OpsWorks Stack 关联。

JSON

"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

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

{ "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

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

另请参阅