【问题标题】:How To Specify AMI in CloudFormation?如何在 CloudFormation 中指定 AMI?
【发布时间】:2019-10-10 08:51:43
【问题描述】:

我的任务是基本的 - 我想使用 CloudFormation 设置一个 EC2 实例,其中包含我喜欢的一些任意 AMI。但是,由于某种原因,这并不像只输入我想要的图像的 ID 号那么简单。

正如我们在他们的tutorial CloudFormation template 中看到的,对于 ImageId 部分,他们拥有:

Properties:
    ImageId: !FindInMap [ AWSRegionArch2AMI, !Ref 'AWS::Region' , !FindInMap [ AWSInstanceType2Arch, !Ref InstanceType, Arch ] ]

在可用的 EC2 映像中搜索时,我没有看到任何名为“AWSRegionArch2AMI”的东西,所以我不知道为什么这个关键字能够指定他们想要的 AMI 并允许这个模板运行。

例如,假设我想让我的 CloudFormation 模板使用这个流行的、公开可用的 AMI 创建一个实例:

Red Hat Enterprise Linux 8 (HVM),SSD 卷类型 - ami-08949fb6466dd2cf3

我应该在 ImageId 字段中指定什么以使 CloudFormation 使用此 AMI?

此外,为什么使用这些复杂的编程参数而不是仅仅使用 UID 来指示我想要的图像是标准的?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-cloudformation


    【解决方案1】:

    简答:没有需要通过这个查找过程。如果您计划在单个区域中运行,使用单个 AMI,那么将 AMI 指定为参数并直接使用它是完全合理的。

    但是,AWS 示例必须能够在多个区域中运行,因为 AWS 有使用这些不同区域的客户。为此,它定义了映射(在 example templateMappings 部分中,可用于从实例类型转换为 AMI。


    编辑:这是我当前使用的模板的摘录,该模板将 AMI 作为参数传递(默认)。它采用 JSON 格式,省略了很多内容,但应该为您提供正在发生的事情的要点:

    "Parameters" : {
        "AmiId" : {
            "Description" : "The ID of the AMI to use for the EC2 instance",
            "Default": "ami-059f4aad319ff1bc3",
            "Type": "String"
        }
    
    
    "Resources" : {
    
        "EC2Instance" : {
            "Type" : "AWS::EC2::Instance",
            "Properties" : {
                "ImageId" : { "Ref" : "AmiId" },
    

    【讨论】:

      猜你喜欢
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 2014-02-18
      • 2017-03-12
      相关资源
      最近更新 更多