查找满足您的 EC2 实例要求的 AMI - Amazon Elastic Compute Cloud

查找满足您的 EC2 实例要求的 AMI

AMI 包括启动实例所需的组件和应用程序,例如操作系统和根卷的类型。要启动实例,必须找到满足您需求的 AMI。

选择 AMI 时,对于要启动的实例,可能需要考虑以下要求:

  • AMI 的 AWS 区域,因为 AMI ID 在每个区域中都是唯一的。

  • 操作系统(例如,Linux 或 Windows)。

  • 架构(例如,32 位、64 位或 64 位 ARM)。

  • 根设备类型(例如,Amazon EBS 或实例存储)。

  • 提供商(例如,亚马逊云科技)。

  • 其他软件(例如,SQL Server)。

要查找 Amazon Linux 2023 AMI,请参阅《Amazon Linux 2023 User Guide》中的 AL2023 on Amazon EC2

要查找 Ubuntu AMI,请参阅 Canonical Ubuntu 网站上的 Amazon EC2 AMI Locator

要查找 RHEL AMI,请参阅 Red Hat 网站上的 Red Hat Enterprise Linux Images (AMI) Available on Amazon Web Services (AWS)

有多种方法可以找到满足您需求的 AMI。您可以使用 Amazon EC2 控制台、AWS CLI、AWS Tools for Windows PowerShell 和 AWS Systems Manager 查找 AMI。

您可以使用 Amazon EC2 控制台查找 AMI。您可以在使用启动实例向导启动实例时从 AMI 列表中进行选择,也可以使用 Images(映像)页面在所有可用的 AMI 中进行搜索。

使用启动实例向导查找 AMI
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 从导航栏,选择您在其中启动实例的区域。您可以选择向您提供的任何区域,无需理会您身处的位置。AMI ID 在每个 AWS 区域中都是唯一的。

  3. 从控制台控制面板中,选择启动实例

  4. 应用程序和操作系统映像(亚马逊机器映像)下,选择快速启动,选择适用于实例的操作系统 (OS),然后在亚马逊机器映像(AMI)中,从列表中选择一个常用的 AMI。如果您没有看到想要使用的 AMI,请选择 Browser more AMIs(浏览更多 AMI)以浏览完整的 AMI 目录。有关更多信息,请参阅 应用程序和操作系统镜像(亚马逊机器映像)

使用 AMI 页面查找 AMI
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 从导航栏,选择您在其中启动实例的区域。您可以选择向您提供的任何区域,无需理会您身处的位置。AMI ID 在每个 AWS 区域中都是唯一的。

  3. 在导航窗格中,选择 AMI

  4. (可选)使用筛选条件和搜索选项,将显示的 AMI 列表范围限定为仅能查看符合您的标准的 AMI。

    例如,要列出 AWS 提供的所有 AMI,请选择公有映像。然后使用搜索选项进一步缩小显示的 AMI 列表的范围。选择 Search(搜索)栏,然后从菜单中选择 Owner alias(拥有者别名),然后选择 = 运算符,最后选择值 amazon。要查找与特定平台(例如 Linux 或 Windows)匹配的 AMI,请再次选择搜索栏以选择平台,然后选择 = 运算符,从提供的列表中选择操作系统。

  5. (可选)选择首选项图标,以选择要显示的映像属性,例如根设备类型。或者,可以从列表中选择 AMI,然后在 Details(详细信息)选项卡中查看其属性。

  6. 选择 AMI 之前,请确认它是由实例存储支持还是由 Amazon EBS 支持并了解此差异的影响,这十分重要。有关更多信息,请参阅 根设备类型

  7. 要从此 AMI 启动一个实例,请选择此实例,然后选择从映像启动实例。有关使用控制台启动实例的更多信息,请参阅 使用控制台中的启动实例向导来启动 EC2 实例。如果您没有准备好立即启动实例,请记下 AMI ID 以供将来使用。

您可以使用 describe-images AWS CLI 命令仅列出符合您要求的 AMI。找到符合您要求的 AMI 之后,记录其 ID,以便用它来启动实例。有关更多信息,请参阅 AWS Command Line Interface 用户指南中的启动实例

describe-images 命令支持筛选参数。例如,使用 --owners 参数显示由 Amazon 拥有的公用 AMI。

aws ec2 describe-images --owners amazon

您可以在上一个命令中添加以下筛选条件以便仅显示 Windows AMI。

--filters "Name=platform,Values=windows"

您可以将以下筛选条件添加到上一个命令以便仅显示 Amazon EBS 支持的 AMI。

--filters "Name=root-device-type,Values=ebs"
重要

如果您在 describe-images 命令中省略 --owners 参数,则将返回您拥有启动权限的所有映像,无论所有权如何。

您可以使用 PowerShell cmdlet 仅列出符合您要求的 Windows AMI。有关更多信息和示例,请参阅《AWS Tools for Windows PowerShell User Guide》中的 Find an Amazon Machine Image Using Windows PowerShell

找到符合您要求的 AMI 之后,记录其 ID,以便用它来启动实例。有关更多信息,请参阅《AWS Tools for Windows PowerShell User Guide》中的 Launch an Amazon EC2 Instance Using Windows PowerShell

在 Amazon EC2 控制台中使用 EC2 启动实例向导启动实例时,您可以从列表中选择 AMI(如 使用 Amazon EC2 控制台查找 AMI 中所述),也可以选择指向 AMI ID 的 AWS Systems Manager 参数(如此部分中所述)。如果您使用自动化代码启动实例,则可以指定 Systems Manager 参数而不是 AMI ID。

Systems Manager 参数是客户定义的键/值对,您可以在 Systems Manager Parameter Store 中创建该键/值对。Parameter Store 提供了一个中央存储来对应用程序配置值进行外部化。有关更多信息,请参阅 AWS Systems Manager 用户指南中的 AWS Systems Manager Parameter Store

创建指向 AMI ID 的参数时,请确保将数据类型指定为 aws:ec2:image。指定此数据类型可确保在创建或修改参数时,将参数值作为 AMI ID 进行验证。有关更多信息,请参阅 AWS Systems Manager 用户指南对亚马逊机器映像 ID 的原生参数支持

使用案例

当您使用 Systems Manager 参数指向 AMI ID 时,您的用户在启动实例时可以更轻松地选择正确的 AMI。Systems Manager 参数还可以简化自动化代码的维护。

用户使用更简单

如果您需要使用特定 AMI 启动实例并且该 AMI 定期更新,我们建议您要求用户选择 Systems Manager 参数来查找 AMI。要求用户选择 Systems Manager 参数可确保使用最新的 AMI 启动实例。

例如,您的组织中可能会每个月创建一个新版本的 AMI,其中具有最新操作系统和应用程序修补程序。同时,您要求用户使用最新版本的 AMI 启动实例。为确保用户使用最新版本,您可以创建指向正确 AMI ID 的 Systems Manager 参数(例如 golden-ami)。每次创建新版本的 AMI 时,您需要更新参数中的 AMI ID 值,以使其始终指向最新 AMI。您的用户不需要了解对 AMI 的定期更新,因为他们每次都会继续选择相同的 Systems Manager 参数。为您的 AMI 使用 Systems Manager 参数可让他们更轻松地选择正确的 AMI 来启动实例。

简化自动化代码维护

如果您使用自动化代码启动实例,则可以指定 Systems Manager 参数而不是 AMI ID。如果创建了新版本的 AMI,您可以更改参数中的 AMI ID 值,以使其指向最新 AMI。每次创建新版本的 AMI 时,都不需要修改引用该参数的自动化代码。这样做简化了自动化的维护,有助于降低部署成本。

注意

当您更改 Systems Manager 参数指向的 AMI ID 时,正在运行的实例不受影响。

权限

如果您在启动实例向导中使用指向 AMI ID 的 Systems Manager 参数,则必须将以下权限添加到您的 IAM 策略:

  • ssm:DescribeParameters:授予查看和选择 Systems Manager 参数的权限。

  • ssm:GetParameters:授予检索 Systems Manager 参数值的权限。

您还可以限制对特定 Systems Manager 参数的访问权限。有关更多信息以及示例 IAM 策略,请参阅 示例:使用 EC2 启动实例向导

限制

AMI 和 Systems Manager 参数特定于区域。要跨区域使用相同的 Systems Manager 参数名称,请在各个区域中创建具有相同名称的 Systems Manager 参数(例如,golden-ami)。在每个区域中,将 Systems Manager 参数指向该区域的 AMI。

使用 Systems Manager 参数启动实例

您可以使用控制台或 AWS CLI 启动实例。您可以指定指向 AMI ID 的 AWS Systems Manager 参数,而不是指定 AMI ID。

使用 Systems Manager 参数查找 AMI(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 从导航栏,选择您在其中启动实例的区域。您可以选择向您提供的任何区域,无需理会您身处的位置。

  3. 从控制台控制面板中,选择启动实例

  4. 应用程序和操作系统镜像(Amazon 机器映像)下,选择浏览其他 AMI

  5. 选择搜索栏右侧的箭头按钮,然后选择 Search by Systems Manager parameter(按 Systems Manager 参数搜索)。

  6. 对于 Systems Manager 参数 (Systems Manager 参数),请选择一个参数。相应的 AMI ID 将显示在 Currently resolves to(当前解析为)下方。

  7. 选择搜索。与 AMI ID 匹配的 AMI 将显示在列表中。

  8. 从列表中选择 AMI,然后选择选择

有关使用启动实例向导启动实例的更多信息,请参阅 使用控制台中的启动实例向导来启动 EC2 实例

使用 AWS Systems Manager 参数而不是 AMI ID 启动实例 (AWS CLI)

以下示例使用 Systems Manager 参数 golden-ami 启动 m5.xlarge 实例。该参数指向 AMI ID。

要在命令中指定参数,请使用以下语法:resolve:ssm:/parameter-name,其中 resolve:ssm 是标准前缀,parameter-name 是唯一参数名称。请注意,参数名称区分大小写。只有在参数是层次结构的一部分时,参数名称才需要使用反斜杠,例如,/amis/production/golden-ami。如果参数不是层次结构的一部分,您可以省略反斜杠。

在本示例中,不包括 --count--security-group 参数。对于 --count,默认为 1。如有默认 VPC 和默认安全组,则将使用它们。

aws ec2 run-instances --image-id resolve:ssm:/golden-ami --instance-type m5.xlarge ...
使用特定版本的 AWS Systems Manager 参数启动实例 (AWS CLI)

Systems Manager 参数具有版本支持。参数的每个迭代将分配一个唯一的版本号。您可以按照 resolve:ssm:parameter-name:version 的格式引用参数的版本,其中 version 是唯一版本号。默认情况下,未指定版本时将使用参数的最新版本。

以下示例使用参数的版本 2。

在本示例中,不包括 --count--security-group 参数。对于 --count,默认值为 1。如果您有默认的 VPC 和默认安全组,则将使用它们。

aws ec2 run-instances --image-id resolve:ssm:/golden-ami:2 --instance-type m5.xlarge ...
使用 AWS 提供的公有参数启动实例

Systems Manager 为 AWS 提供的公有 AMI 提供公有参数。您可以在启动实例时使用公有参数来确保使用最新 AMI。

有关更多信息,请参阅 使用 Systems Manager 公共参数查找最新 AMI

AWS Systems Manager 为 AWS 维护的公有 AMI 提供公有参数。您可以在启动实例时使用公有参数来确保使用最新 AMI。例如,公有参数 /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64 在所有区域中均可用,并且始终指向给定区域中适用于 arm64 架构的最新版本 Amazon Linux 2023 AMI。

在以下路径中提供公有参数:

  • Linux/aws/service/ami-amazon-linux-latest

  • Windows/aws/service/ami-windows-latest

查看当前 AWS 区域内所有 Linux 或 Windows AMI 的列表

使用以下 get-parameters-by-path AWS CLI 命令查看当前 AWS 区域中所有 Linux 或 Windows AMI 的列表。Linux 和 Windows 的 --path 参数值不同。

对于 Linux:

aws ssm get-parameters-by-path \ --path /aws/service/ami-amazon-linux-latest \ --query "Parameters[].Name"

对于 Windows:

aws ssm get-parameters-by-path \ --path /aws/service/ami-windows-latest \ --query "Parameters[].Name"
使用公有参数启动实例

以下示例为映像 ID 指定一个 Systems Manager 公有参数,以使用最新 Amazon Linux 2023 AMI 启动实例。

要在命令中指定参数,请使用以下语法:resolve:ssm:public-parameter,其中 resolve:ssm 是标准前缀,public-parameter 是公有参数的路径和名称。

在本示例中,不包括 --count--security-group 参数。对于 --count,默认为 1。如有默认 VPC 和默认安全组,则将使用它们。

aws ec2 run-instances \ --image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64 \ --instance-type m5.xlarge \ --key-name MyKeyPair

有关更多信息,请参阅《AWS Systems Manager 用户指南》中的使用公共参数

有关使用 Systems Manager 参数的示例,请参阅 Query for the latest Amazon Linux AMI IDs Using AWS Systems Manager Parameter StoreQuery for the Latest Windows AMI Using AWS Systems Manager Parameter Store