AWS CloudFormation
User Guide (API 版本 2010-05-15)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

AWS::OpsWorks::Stack

创建 AWS OpsWorks 堆栈。AWS OpsWorks 堆栈表示要共同管理的一组实例,通常由于它们具有共同用途(例如为 PHP 应用程序提供服务)。

语法

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

JSON

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

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 运行以响应生命周期事件)。有关有效值的信息,请参阅 AWS OpsWorks Stacks API Reference 中的 CreateStack 操作的 AgentVersion 参数。

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 源类型

更新要求无需中断

CustomJson

用户定义的自定义 JSON 对象。自定义 JSON 用于覆盖对应默认堆栈配置 JSON 值。有关更多信息,请参阅 AWS OpsWorks Stacks API Reference 中的 CreateStack

重要

AWS CloudFormation 以字符串形式提交所有 JSON 属性,包括任何布尔值或数值属性。如果您有需要布尔值或数值的配方,则必须修改配方以接受字符串并将这些字符串解释为布尔值或数值。

Required: No

Type: JSON object

更新要求无需中断

DefaultAvailabilityZone

堆栈的默认可用区,必须处于指定区域中。

Required: No

Type: String

更新要求无需中断

DefaultInstanceProfileArn

作为堆栈的所有 IAM 实例的默认配置文件的 Amazon EC2 实例配置文件 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 堆栈注册的弹性 IP 地址的列表。

注意

如果您指定向另一个 AWS OpsWorks 堆栈注册的某个 IP 地址,AWS CloudFormation 将在注册该 IP 地址之前取消注册现有关联。

Required: No

Type: AWS OpsWorks 堆栈 ElasticIp 列表

更新要求无需中断

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) 数据库实例。

注意

如果您指定向另一个 AWS OpsWorks 堆栈注册的某个数据库实例,AWS CloudFormation 将在注册该数据库实例之前取消注册现有关联。

Required: No

Type: AWS OpsWorks 堆栈 RdsDbInstance 列表

更新要求无需中断

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 资源标签

更新要求无需中断

UseCustomCookbooks

堆栈是否使用自定义食谱。

Required: No

Type: Boolean

更新要求无需中断

UseOpsworksSecurityGroups

是否将 AWS OpsWorks 内置安全组与堆栈的层关联。

Required: No

Type: Boolean

更新要求无需中断

VpcId

启动堆栈的 VPC的 ID 必须处于指定区域中。所有实例都在该 VPC 中启动。如果您指定了该属性,则必须指定 DefaultSubnetId 属性。

Required: No

Type: String

更新要求替换

返回值

Ref

当该资源的逻辑 ID 提供给 Ref内部函数时,Ref 将返回资源名称。 示例:

{ "Ref": "myStack" }

对于 AWS OpsWorks 堆栈 myStackRef 返回 AWS OpsWorks 堆栈 ID。

有关使用 Ref 功能的更多信息,请参阅参考

模板示例

以下代码段创建一个 AWS OpsWorks 堆栈,该堆栈使用您首次使用 AWS OpsWorks 之后被创建的默认服务角色和 Amazon EC2 角色:

JSON

"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

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

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

附加信息