映射到 CloudFormation 中的字符串的自定义下拉列表值

Kod*_*der 2 aws-cloudformation

我是 CloudFormation 模板的新手。我想创建一个带有值为“小”、“中”“大”的下拉菜单的参数。选择后,小必须映射到“t2.micro”,中必须映射到“t2.medium”,大必须映射到“t2.large” ”。

我知道我可以直接下拉诸如“t2.micro”之类的值,但我希望有用户友好的选项来映射到确切的实例类型字符串。

这是我到目前为止所拥有的:

Resources:
  MicroInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref InstanceType
      KeyName: ec2kp
      ImageId: ami-081c1b4c6y2d4594e
Parameters:
  InstanceType: 
    Description: 'Size of instance'
    Type: String
    Default: 'Small(Use for Dev)'
    AllowedValues: [Small(Use for Dev), Medium(Use For Test), Big(Use For Prod)]
Run Code Online (Sandbox Code Playgroud)

Cas*_*Roy 5

你最好的选择是使用Mappings,你可以有这样的东西

Parameters:
  InstanceType: 
    Description: 'Size of instance'
    Type: String
    Default: 'Small(Use for Dev)'
    AllowedValues: [Small(Use for Dev), Medium(Use For Test), Big(Use For Prod)]

Mappings:
  InstanceType:
    "Small(Use for Dev)":
      value: "t2.micro"
    "Medium(Use For Test)":
      value: "t2.medium"
    "Big(Use For Prod)":
      value: "t2.large"

Resources:
  MicroInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !FindInMap
        - InstanceType
        - !Ref InstanceType
        - value
      KeyName: ec2kp
      ImageId: ami-081c1b4c6y2d4594e
Run Code Online (Sandbox Code Playgroud)

关键是使用!FindInMap具有语法的函数!FindInMap [ MapName, TopLevelKey, SecondLevelKey ]

AWS CloudFormation MappingsAWS CloudFormation Fn::FindInMap中的一些参考

希望能帮助到你