AWS CloudFormation参数的指南

234 阅读2分钟

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等,你可以在这里阅读更多信息。