Amazon cloudformation 将自定义AMI添加到参数列表中

Amazon cloudformation 将自定义AMI添加到参数列表中,amazon-cloudformation,Amazon Cloudformation,cloudformation模板的这一部分按预期工作: Parameters: LatestAmiId: Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: /aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-ebs 如果我只保留1个SSM参数值(如上图所示),则此操作有效。但是如何允许自定义AMI和默认AMI一起使用呢?很

cloudformation模板的这一部分按预期工作:

Parameters:
  LatestAmiId:
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    Default: /aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-ebs

如果我只保留1个SSM参数值(如上图所示),则此操作有效。但是如何允许自定义AMI和默认AMI一起使用呢?

很遗憾,您不能这样做,因为
AMI-XXadfa6e17bbca4XX
不是
AWS::SSM::Parameter::Value
的类型

您需要有两个独立的参数,例如
LatestAmiId
LatestAmiId2
,以及它们各自的类型。然后使用模板中的条件在用户选择的模板之间进行选择

Parameters:
  LatestAmiId:
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    Default: /aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-ebs
    AllowedValues:
      - /aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-ebs
      - ami-XXadfa6e17bbca4XX
  MySpotFleet:
    Type: 'AWS::EC2::SpotFleet'
    Properties:
      SpotFleetRequestConfigData:
        LaunchSpecifications:
          - ImageId: !Ref LatestAmiId