AWS CloudFormation模板可以包含参数。参数可以在CloudFormation模板中用来指代在使用CloudFormation模板创建新堆栈时提供的值。 这意味着同一个CloudFormation模板可以用来创建多个堆栈,这些堆栈在使用参数的地方都有变化。
参数部分
CloudFormation参数在CloudFormation模板中被定义在自己的部分中。 下面是一个包含参数和资源部分的CloudFormation模板大纲的例子:
Parameters:
Resources:
这个例子不包含任何实际的参数定义。我将在本教程的后面展示这样的例子。
参数示例
下面是一个AWS CloudFormation参数的例子:
Parameters:
BucketNameParam:
Description: Name of the bucket
Type: String
Resources:
MyS3Bucket:
Type: "AWS::S3::Bucket"
Properties:
AccessControl: PublicRead
BucketName: !Ref BucketNameParam
这个CloudFormation模板包含名为BucketNameParam 的CloudFormation参数。该参数在S3桶资源定义的Resources 部分的BucketName 属性中被引用下来。
引用一个参数
要引用CloudFormation模板的Parameters 部分中定义的参数,您可以使用CloudFormation内置关键字(函数),命名为!Ref 。因此,要引用一个名为MyParameter 的参数的值,你要写:
!Ref MyParameter
默认参数值
一个CloudFormation参数可以有一个默认值。这个默认值被用作参数值,以防用户在使用定义了参数的CloudFormation模板创建堆栈时没有提供值。或者,AWS网络控制台将向用户建议默认值,因此在创建CloudFormation堆栈时,填写参数变得更加容易。
下面是一个使用指定默认值的参数的CloudFormation模板的例子:
Parameters:
BucketNameParam:
Description: Name of the bucket
Type: String
Default: PrimaryUploadBucket
Resources:
MyS3Bucket:
Type: "AWS::S3::Bucket"
Properties:
AccessControl: PublicRead
BucketName: !Ref BucketNameParam
更多参数功能
AWS CloudFormation参数还有几个特点,如MaxValue,MinValue等,你可以在这里阅读更多信息。