我该如何获取 AWS Marketplace AMI 的所有者 ID?

17

我正在使用 Terraform 获取官方的 CentOS AMI:

data "aws_ami" "centos" {
  most_recent = true
  owners = ["679593333241"] # Centos.org
  filter {
    name   = "name"
    values = ["CentOS Linux 7 x86_64 HVM EBS 1708_01-*"]
  }
}

我需要拥有者ID,而在这种情况下我找到它的方法是无目的地谷歌搜索,直到某篇文章上有它(他们没有说他们是如何得到它的)。

我在ami的市场页面上找不到所有者ID。market place page.

如果我通过它的市场页面启动ami,创建的ec2实例实际上将我的个人ID设置为实例的“所有者”字段,因此我无法启动ec2实例、检查所有者并以此获得它。

为什么这么难以获得?我一定错过了什么显而易见的东西。

3个回答

13

获取 AMI 时不一定需要所有者 ID,但为确保获取预期的 AMI,建议包括此信息。

如果您已经预先知道可信任的所有者,则查找所有者 ID 的简单方法是在 AWS 控制台中的 AMIs 表格中查看。

从 AWS 控制台导航到 EC2 > 映像 > AMIs。在搜索框左侧的下拉菜单中选择 "公共映像" 过滤器。然后可以搜索任何所需的 AMI,表格中会显示 Owner 值:

enter image description here


4
对于最新版本的Terraform,实际上确实需要拥有者ID。话虽如此,这对于找到这个之前不需要的信息是有帮助的。谢谢! - Kurt Wheeler
我对如何查找给定所有者ID的友好名称很感兴趣。 - Parag Doke
我从来没有发现过那个! - Hephaestus

12

如果您想使用AWS SDK,最简单的方法是按照以下步骤进行:

aws ec2 describe-images --image-ids ami-0def3275 --region us-west-2

当然,根据需要替换区域和AMI ID。

如果你想使用jq对其进行解析,你可以这样做:

aws ec2 describe-images --image-ids ami-0def3275 --region us-west-2 | jq -r .Images[0].OwnerId

1

TJ是正确的,不过我需要添加单引号才能使用jq:

aws ec2 describe-images --image-ids ami-00dfe2c7ce89a450b --region us-east-2 | jq -r '.Images[0].OwnerId'

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