查找 Linux AMI - Amazon Elastic Compute Cloud

查找 Linux AMI

启动实例之前,必须选择要使用的 AMI。选择 AMI 时,对于将启动的实例,可能需要考虑以下要求:

  • 区域

  • 操作系统

  • 架构:32 位 (i386)、64 位 (x86_64) 或 64 位 ARM (arm64)

  • 根设备类型:Amazon EBS 或实例存储

  • 提供商 (例如,Amazon Web Services)

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

如果您需要查找 Windows AMI,请参阅 Amazon EC2 用户指南(适用于 Windows 实例) 中的查找 Windows AMI

使用 Amazon EC2 控制台查找 Linux AMI

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

使用启动向导查找 Linux AMI

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

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

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

  4. 快速启动选项卡上,从列表中选择一个常用的 AMI。如果您没有看到所需的 AMI,请选择我的 AMIAWS Marketplace社区 AMI选项卡来查找其他 AMI。有关更多信息,请参阅步骤 1:选择 Amazon 系统映像 (AMI)

使用“Images (映像)”页面查找 Linux AMI

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

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

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

  4. (可选)使用(筛选条件选项将显示的 AMI 列表范围确定为仅限您关注的 AMI。例如,要列出 AWS 提供的所有 Linux AMI,请选择 Public images (公有映像)。选择搜索栏,从菜单中选择 Owner,然后选择 Amazon images。再次选择搜索栏以选择 Platform,然后从提供的列表中选择操作系统。

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

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

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

使用 AWS CLI 查找 AMI

您可以使用适用于 Amazon EC2 的 AWS CLI 命令列出满足您需求的 Linux AMI。找到满足您需求的 AMI 之后,记录其 ID,以便用它来启动实例。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的使用 AWS CLI 启动实例

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

aws ec2 describe-images --owners self amazon

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

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

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

使用 Systems Manager 查找最新的 Amazon Linux AMI

Amazon EC2 为 AWS 维护的公有 AMI 提供 AWS Systems Manager 公有参数,您可以在启动实例时使用这些 AMI。例如,EC2 提供的参数 /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 在所有区域中均可用,并且始终指向给定区域中 Amazon Linux 2 AMI 的最新版本。

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

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

  • /aws/service/ami-windows-latest

您可以在 AWS CLI 中使用以下命令查看当前 AWS 区域中所有 Linux AMI 的列表。

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

使用公有参数启动实例

以下示例通过 EC2 提供的公有参数,使用最新 Amazon Linux 2 AMI 启动 m5.xlarge 实例。

要在命令中指定参数,请使用以下语法: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/amzn2-ami-hvm-x86_64-gp2 --instance-type m5.xlarge --key-name MyKeyPair

有关详细信息,请参阅 AWS Systems Manager 用户指南 中的使用公共参数使用 AWS Systems Manager Parameter Store 查询最新的 Amazon Linux AMI ID

使用 Systems Manager 参数查找 AMI

在控制台中使用 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 用户指南对 Amazon 系统映像 ID 的原生参数支持

使用案例

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

用户使用更简单

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

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

简化自动化代码维护

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

注意

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

使用 Systems Manager 参数启动实例

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

使用 Systems Manager 参数查找 Linux AMI(控制台)

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

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

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

  4. 选择 Search by Systems Manager parameter (按 Systems Manager 参数搜索)(位于右上角)。

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

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

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

有关使用启动向导从 AMI 启动实例的更多信息,请参阅步骤 1:选择 Amazon 系统映像 (AMI)

使用 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 提供的公有参数启动实例

Amazon EC2 为 AWS 提供的公有 AMI 提供 Systems Manager 公有参数。例如,公有参数 /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 在所有区域中都可用,并且始终指向该区域中 Amazon Linux 2 AMI 的最新版本。

aws ec2 run-instances --image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 --instance-type m5.xlarge ...

权限

如果您在启动实例向导中使用指向 AMI ID 的 Systems Manager 参数,则必须将 ssm:DescribeParametersssm:GetParameters 添加到 IAM 策略中。ssm:DescribeParameters 授予 IAM 用户查看和选择 Systems Manager 参数的权限。ssm:GetParameters 授予 IAM 用户获取 Systems Manager 参数值的权限。您还可以限制对特定 Systems Manager 参数的访问权限。有关更多信息,请参阅使用 EC2 启动向导

限制

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

查找快速启动 AMI

当您使用 Amazon EC2 控制台启动一个实例时,选择一个 Amazon 系统映像 (AMI) 页面将在快速启动选项卡中列出常用的 AMI。如果您想要使用其中一个快速启动 AMI 来自动启动实例,您需要以编程方式找到 AMI 当前版本的 ID。

要找到快速启动 AMI 的当前版本,您可以通过其 AMI 名称枚举所有 AMI,然后找到具有最新创建日期的 AMI。

例 示例:查找当前 Amazon Linux 2 AMI

aws ec2 describe-images \ --owners amazon \ --filters 'Name=name,Values=amzn2-ami-hvm-2.0.????????.?-x86_64-gp2' 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' \ --output text

例 示例:查找当前 Amazon Linux AMI

aws ec2 describe-images \ --owners amazon \ --filters 'Name=name,Values=amzn-ami-hvm-????.??.?.????????-x86_64-gp2' 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' \ --output text

例 示例:查找当前 Ubuntu Server 16.04 LTS AMI

aws ec2 describe-images \ --owners 099720109477 \ --filters 'Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-????????' 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' \ --output text

例 示例:查找当前 Red Hat Enterprise Linux 7.5 AMI

aws ec2 describe-images \ --owners 309956199498 \ --filters 'Name=name,Values=RHEL-7.5_HVM_GA*' 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' \ --output text

例 示例:查找当前 SUSE Linux Enterprise Server 15 AMI

aws ec2 describe-images \ --owners amazon \ --filters 'Name=name,Values=suse-sles-15-v????????-hvm-ssd-x86_64' 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' \ --output text