在AWS Marketplace中如何找到CentOS 7镜像的AMI ID?

30

我一直通过登录AWS网站、点击“启动”按钮并遵循规定的步骤来启动EC2实例。现在,我想从Ansible脚本启动实例,为此我(认为我)需要所需镜像的AMI ID。

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


它在市场上吗,在“管理软件订阅”下面? - Michael - sqlbot
2
它似乎也没有显示 - 除了显示我的运行实例,这将显示AMI ID。但我想在运行之前找到它。 - bandjalong
3
这是一个非常令人沮丧的问题 - 我无法相信在启动实例之前,AWS网站上没有直接查看AMI ID的方式。 - John Humphreys
如果您是通过谷歌搜索 Terraform 相关问题而来到这里的,请查看以下答案:https://dev59.com/ElkR5IYBdhLWcg3wygHp#56401124 - Bruno Bronosky
4个回答

55

CentOS将他们的AMI产品代码发布到他们的维基页面上。该维基页面为最新的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的说法,一个产品密钥可能与多个AMI ID相关联,因此尽管此查询当前只返回单个AMI,因为当前仅存在一个匹配此产品的AMI…但如果将来出于任何原因为此产品代码创建了新的AMI,则此查询将返回该新AMI。


1
请注意,我最初去了维基页面获取AMI ID,但它们已过时,我的CloudFormation模板错误显示“未授权的镜像”。我必须使用此处的AWS CLI查询来获取最新的7.x镜像ID值。 - Justin C
6
天啊,我找到了想要用Ansible创建的市场CentOS镜像( https://aws.amazon.com/marketplace/pp/Centosorg-CentOS-7-x8664-with-Updates-HVM/B00O7WM7QW )!所有你需要的信息都有,除了AMI。花了2个小时去寻找合适的AMI简直是个笑话,亚马逊!我还是没有找到一个合适的AMI编号,太令人沮丧了。 - englishPete
3
新产品代码:47k9ia2igxpcce2bzo8u3kj03(CentOS 8)和cvugziknvmxgqna9noibqnnsy(CentOS 7)。 - Denis V
1
@DenisV提到的新产品代码来自https://wiki.centos.org/Cloud/AWS。 - Yanal-Yves Fargialla
如何解决“无法定位凭据。您可以通过运行“aws configure”来配置凭据。”的aws-marketplace所有者问题? - Roman Newaza
显示剩余2条评论

11

请查看此页面

或者

AWS已经改变了“AWS Marketplace”的用户界面。现在(2022),我们可以在AWS Marketplace本身的“配置此软件”页面中获取AMI ID。

步骤:

  1. 搜索并定位镜像。 点击图像。
  2. 在右上方,单击“继续订阅”
  3. 在下一个窗口中,单击“继续配置”
  4. 在下一个窗口中,找到所需的AMI ID。 我们可以更改软件版本以获得不同的AMI ID。

@Vigneshwar提供的链接是旧的配置文件。根据https://wiki.centos.org/Cloud/AWS,有一个新的配置文件可用(https://aws.amazon.com/marketplace/pp/prodview-foff247vr2zfw)。请注意,“By centos.org”与“By Amazon Web Services”的区别。 - Yanal-Yves Fargialla

9
如果你正在寻找所有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 |

5
我在这里使用其他答案来测试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
  }
}

它不再工作了:错误:您的查询未返回任何结果。请更改您的搜索条件并重试。 - Roman Newaza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接