如何查找 AMI 的适用实例类型列表

Rpj*_*Rpj 16 amazon-ec2 amazon-web-services terraform terraform-provider-aws amazon-ami

ami-0fd3c3c68a2a8066f从ap-south-1Region 中使用http://cloud-images.ubuntu.com/locator/ec2/,但无法对此使用 t2.micro 实例类型。

Error: Error launching source instance: InvalidParameterValue: The architecture 'x86_64' of the specified instance type does not match the architecture 'arm64' of the specified AMI. Specify an instance type and an AMI that have matching architectures, and try again. You can use 'describe-instance-types' or 'describe-images' to discover the architecture of the instance type or AMI.
Run Code Online (Sandbox Code Playgroud)

在尝试使用 terraform 启动实例之前,如何查找 AMI 的适用实例类型列表

Mar*_*cin 11

使用AWS CLI,您可以使用describe-instance-types:

aws ec2 describe-instance-types --filters Name=processor-info.supported-architecture,Values=arm64 --query "InstanceTypes[*].InstanceType" --output text
Run Code Online (Sandbox Code Playgroud)

例如输出:

r6gd.large  m6g.metal   m6gd.medium c6gd.metal  m6gd.12xlarge   c6g.16xlarge    r6g.large   r6gd.medium r6g.8xlarge m6gd.metal  r6gd.xlarge t4g.medium  r6gd.2xlarge    m6gd.xlarge c6g.xlarge  c6g.12xlarge    r6g.medium  a1.medium   m6g.xlarge  m6gd.4xlarge    t4g.nano    r6g.16xlarge
t4g.2xlarge m6g.12xlarge    r6gd.8xlarge    a1.large    m6g.4xlarge c6gd.16xlarge   t4g.xlarge  c6g.large   m6g.large   c6gd.xlarge a1.metal    m6g.8xlarge m6gd.16xlarge   a1.xlarge   r6g.12xlarge    r6gd.metal  t4g.micro   r6g.4xlarge t4g.small   a1.2xlarge  r6gd.4xlarge    t4g.large
m6g.16xlarge    c6g.4xlarge m6gd.2xlarge    c6gd.medium c6gd.8xlarge    r6gd.16xlarge   m6gd.8xlarge    c6g.2xlarge r6gd.12xlarge   a1.4xlarge  c6g.8xlarge r6g.2xlarge m6g.2xlarge m6g.medium  c6gd.large  c6g.medium  c6gd.2xlarge    r6g.metal   c6gd.4xlarge    m6gd.large  r6g.xlarge
Run Code Online (Sandbox Code Playgroud)

我在 TF 中没有看到任何类似的东西。在最坏的情况下,您可以为此定义外部数据源。

更新

没有单个调用可以获取基于 ami 的实例类型列表。必须分两步完成。

  1. 使用aws_ami数据源获取给定 AMI 的架构。
  2. 使用describe-instance-types获取该架构的实例类型。