【问题标题】:How to find AMI ID of CentOS 7 image in AWS Marketplace?如何在 AWS Marketplace 中查找 CentOS 7 映像的 AMI ID?
【发布时间】:2017-04-11 16:22:48
【问题描述】:

我通过登录 AWS 站点、点击“启动”按钮并按照禁止的步骤来启动 EC2 实例。现在我想从 Ansible 脚本启动实例,为此我(我认为我)需要我希望启动的图像的 AMI ID。

问题是我从“市场”启动图像,但找不到 AMI ID。特别是我使用的是 Centos 7 图像。这个在网页界面很容易找到,只要去市场搜索“centos”,我想要的图像是第一个找到的,但是提供的关于图像的信息似乎不包括我的AMI ID需要从脚本启动它。解决方法是手动启动映像,然后在检查正在运行的映像时,会给出 AMI ID。但是有没有更简单的方法可以找到它?

【问题讨论】:

  • 它在市场上,在“管理您的软件订阅”下吗?
  • 它似乎也没有显示在那里 - 除了它显示我正在运行的实例,它将显示 ami id。但我想在运行之前找到它。
  • 这是一个非常令人沮丧的问题 - 我不敢相信在启动实例之前无法直接在 AWS 网站上查看 AMI ID。
  • 我是您在谷歌搜索 Terraform 特定问题后来到这里的,请参阅答案stackoverflow.com/a/56401124/117471

标签: amazon-web-services amazon-ec2 centos7 amazon-ami


【解决方案1】:

CentOS 将他们的 AMI 产品代码发布到他们的wiki。 wiki 为最新的 CentOS 7 AMI 提供以下信息:

  • 所有者:aws-marketplace
  • 产品编号:aw0evgkw8e5c1q413zgy5pjce

使用此信息,我们可以使用 AWS CLI 查询 describe-images

示例:

aws ec2 describe-images \
    --owners 'aws-marketplace' \
    --filters 'Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce' \
    --query 'sort_by(Images, &CreationDate)[-1].[ImageId]' \
    --output 'text'

输出:

ami-6d1c2007

此查询返回单个 AMI ID,通过按创建日期对集合进行排序,然后选择集合中的最后一个(最近的)元素来选择。

根据 CentOS wiki,multiple AMI ids may be associated with a product key,所以虽然这个查询目前只会返回一个 AMI,因为目前只存在一个匹配这个产品的......将来如果出于任何原因为此产品代码创建一个新的 AMI这个查询将返回它。

【讨论】:

  • 请注意,我最初访问 wiki 页面以获取 AMI ID,但它们已过时,并且我的 cloudFormation 模板错误提到“未授权图像”。我必须使用 AWS CLI 和此处的查询来获取最新的 7.x 映像 ID 值。
  • 不是可靠的解决方案,但您也可以在创建 VM 时在 ui 中搜索。按左侧的“centos 和免费”复选框过滤(我看到 19 个更新日期的选项)。
  • 谢谢,这可要了我的命。
  • 天啊,我找到了我想用 Ansible (aws.amazon.com/marketplace/pp/…) 开发的市场 CentOS 映像。除了 AMI,您可能需要的所有信息。 2 小时寻找合适的 AMI 是亚马逊的笑话!我还没有找到合适的 ami 号码。太令人沮丧了。
  • 新产品代码:47k9ia2igxpcce2bzo8u3kj03 (centos 8) 和 cvugziknvmxgqna9noibqnnsy (centos 7)
【解决方案2】:

签入page

AWS 一直在更改“aws 市场”用户界面。现在(2020)我们在 AWS Marketplace 本身的“配置此软件”页面中获得 ami id。

步骤:

  1. Search 并找到图像。点击图片。
  2. 点击右上角“继续订阅”
  3. 在下一个窗口中,点击“继续配置”
  4. 在下一个窗口中,找到找到的 Ami ID。我们可以更改软件版本以获得不同的 ami Id。

【讨论】:

【解决方案3】:

如果您正在寻找所有 Centos7 图像

$ aws ec2 describe-images \
      --owners aws-marketplace \
      --filters Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce \
      --query 'Images[*].[CreationDate,Name,ImageId]' \
      --filters "Name=name,Values=CentOS Linux 7*" \
      --region us-west-2 \
      --output table \
  | sort -r
|  2018-06-13T15:58:14.000Z|  CentOS Linux 7 x86_64 HVM EBS ENA 1805_01-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-77ec9308.4  |  ami-3ecc8f46  |
|  2018-05-17T09:30:44.000Z|  CentOS Linux 7 x86_64 HVM EBS ENA 1804_2-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-55a2322a.4   |  ami-5490ed2c  |
|  2018-04-04T00:11:39.000Z|  CentOS Linux 7 x86_64 HVM EBS ENA 1803_01-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-8274d6ff.4  |  ami-0ebdd976  |
|  2017-12-05T14:49:18.000Z|  CentOS Linux 7 x86_64 HVM EBS 1708_11.01-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-95096eef.4   |  ami-b63ae0ce  |

添加可用于 RedHat 的类似查询

aws ec2 describe-images \
    --owners 309956199498 \
    --query 'Images[*].[CreationDate,Name,ImageId]' \
    --filters "Name=name,Values=RHEL-7.?*GA*" \
    --region us-east-1 \
    --output table \
  | sort -r
|  2018-03-23T20:42:08.000Z |  RHEL-7.5_HVM_GA-20180322-x86_64-1-Hourly2-GP2  |  ami-6871a115 |
|  2017-08-08T15:37:31.000Z |  RHEL-7.4_HVM_GA-20170808-x86_64-2-Hourly2-GP2  |  ami-c998b6b2 |
|  2017-07-24T15:44:39.000Z |  RHEL-7.4_HVM_GA-20170724-x86_64-1-Hourly2-GP2  |  ami-cdc999b6 |
|  2016-10-26T22:32:29.000Z |  RHEL-7.3_HVM_GA-20161026-x86_64-1-Hourly2-GP2  |  ami-b63769a1 |
|  2015-11-12T21:06:58.000Z |  RHEL-7.2_HVM_GA-20151112-x86_64-1-Hourly2-GP2  |  ami-2051294a |
|  2015-02-25T20:24:23.000Z |  RHEL-7.1_HVM_GA-20150225-x86_64-1-Hourly2-GP2  |  ami-12663b7a |
|  2015-02-09T22:54:40.000Z |  RHEL-7.0_HVM_GA-20150209-x86_64-1-Hourly2-GP2  |  ami-60a1e808 |
|  2014-10-17T20:29:24.000Z |  RHEL-7.0_HVM_GA-20141017-x86_64-1-Hourly2-GP2  |  ami-a8d369c0 |
|  2014-05-28T19:17:11.000Z |  RHEL-7.0_GA_HVM-x86_64-3-Hourly2               
|  ami-785bae10 |

【讨论】:

    【解决方案4】:

    我在这里使用了其他答案作为在 Terraform 中测试 AMI 查找的好方法。

    使用...

    aws ec2 describe-images \
        --owners aws-marketplace \
        --filters '[
            {"Name": "name",                "Values": ["CentOS Linux 7*"]},
            {"Name": "virtualization-type", "Values": ["hvm"]},
            {"Name": "architecture",        "Values": ["x86_64"]},
            {"Name": "image-type",          "Values": ["machine"]}
        ]' \
        --query 'sort_by(Images, &CreationDate)[-1]' \
        --region us-east-1 \
        --output json
    

    ...让我有机会尝试和错误查找

    data "aws_ami" "centos" {
      most_recent = true
      owners      = ["aws-marketplace"]
    
      filter {
        name   = "virtualization-type"
        values = ["hvm"]
      }
    
      filter {
        name   = "architecture"
        values = ["x86_64"]
      }
    
      filter {
        name   = "image-type"
        values = ["machine"]
      }
    
      filter {
        name   = "name"
        values = ["CentOS Linux 7*"]
      }
    }
    
    resource "aws_launch_configuration" "launch_configuration" {
      name_prefix = "${var.name}-"
    
      image_id = "${data.aws_ami.centos.image_id}"
      instance_type        = "t2.nano"
      iam_instance_profile = "${aws_iam_instance_profile.instance_profile.name}"
      security_groups      = ["${aws_security_group.lc_security_group.id}"]
    
      user_data = "${data.template_file.user_data.rendered}"
    
      lifecycle {
        create_before_destroy = true
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 1970-01-01
      • 2020-06-24
      • 2019-05-25
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      相关资源
      最近更新 更多