

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

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

选择 AMI 时，对于要启动的实例，可能需要考虑以下要求：
+ AMI 的 Amazon 区域，因为 AMI ID 在每个区域中都是唯一的。
+ 操作系统（例如，Linux 或 Windows）。
+ 架构（例如，32 位、64 位或 64 位 ARM）。
+ 根卷类型（例如，Amazon EBS 或实例存储）。
+ 提供商（例如，亚马逊云科技）。
+ 其他软件（例如，SQL Server）。

------
#### [ Console ]

您可以在使用启动实例向导时从 AMI 列表中进行选择，也可以使用**映像**页面在所有可用的 AMI 中进行搜索。

**使用启动实例向导查找快速启动 AMI**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

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

1. 从控制台控制面板中，选择**启动实例**。

1. 在**应用程序和操作系统映像（亚马逊机器映像）**下，选择**快速启动**，选择适用于实例的操作系统 (OS)，然后在**亚马逊机器映像（AMI）**中，从列表中选择一个常用的 AMI。如果您没有看到想要使用的 AMI，请选择 **Browser more AMIs**（浏览更多 AMI）以浏览完整的 AMI 目录。有关更多信息，请参阅 [应用程序和操作系统映像（亚马逊机器映像）](ec2-instance-launch-parameters.md#liw-ami)。

**使用 AMI 页面查找 AMI**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

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

1. 在导航窗格中，选择 **AMI**。

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

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

1. （可选）选择**首选项**图标，以选择要显示的映像属性，例如根卷类型。或者，可以从列表中选择 AMI，然后在 **Details**（详细信息）选项卡中查看其属性。

1. 选择 AMI 之前，请确认它是由实例存储支持还是由 Amazon EBS 支持并了解此差异的影响，这十分重要。有关更多信息，请参阅 [根卷类型](ComponentsAMIs.md#storage-for-the-root-device)。

1. 要从此 AMI 启动一个实例，请选择此实例，然后选择**从映像启动实例**。有关使用控制台启动实例的更多信息，请参阅 [使用控制台中的启动实例向导来启动 EC2 实例](ec2-launch-instance-wizard.md)。如果您没有准备好立即启动实例，请记下 AMI ID 以供将来使用。

------
#### [ Amazon CLI ]

使用 [describe-images](https://docs.amazonaws.cn/cli/latest/reference/ec2/describe-images.html) 命令查找符合要求的 AMI。默认情况下，此命令会返回所有公有 AMI、由您拥有的 AMI 以及与您共享的 AMI。

**查找由 Amazon 拥有的 AMI**  
使用 [describe-images](https://docs.amazonaws.cn/cli/latest/reference/ec2/describe-images.html) 命令和 `--owners` 选项。

```
aws ec2 describe-images --owners amazon
```

**查找 Windows AMI**  
添加以下筛选条件，从而仅显示 Windows AMI。

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

**查找 EBS-backed AMI**  
添加以下筛选条件，从而仅显示 Amazon EBS-backed AMI。

```
--filters "Name=root-device-type,Values=ebs"
```

------
#### [ PowerShell ]

使用 [Get-EC2Image](https://docs.amazonaws.cn/powershell/latest/reference/items/Get-EC2Image.html) cmdlet 查找符合要求的 AMI。默认情况下，此 cmdlet 会返回所有公有 AMI、由您拥有的 AMI 或与您共享的 AMI。

**查找由 Amazon 拥有的 AMI**  
使用 [Get-EC2Image](https://docs.amazonaws.cn/powershell/latest/reference/items/Get-EC2Image.html) 命令和 `-Owner` 参数。

```
Get-EC2Image -Owner amazon
```

**查找 Windows AMI**  
添加以下筛选条件，从而仅显示 Windows AMI。

```
-Filter @{Name="platform"; Values="windows"}
```

有关更多示例，请参阅《Amazon Tools for PowerShell 用户指南》中的 [Find an Amazon Machine Image Using Windows PowerShell](https://docs.amazonaws.cn/powershell/latest/userguide/pstools-ec2-get-amis.html)**。

------

**相关资源**

有关特定操作系统的 AMI 的更多信息，请参阅以下内容：
+ Amazon Linux 2023 –《*Amazon Linux 2023 用户指南*》中的 [AL2023 on Amazon EC2](https://docs.amazonaws.cn/linux/al2023/ug/ec2.html)
+ Ubuntu – *Canonical Ubuntu 网站*上的 [Amazon EC2 AMI Locator](https://cloud-images.ubuntu.com/locator/ec2/)
+ RHEL – Red Hat 网站上的 [Red Hat Enterprise Linux Images (AMI) Available on Amazon Web Services (Amazon)](https://access.redhat.com/solutions/15356)
+ Windows 服务器：[Amazon Windows AMI 参考](https://docs.amazonaws.cn/ec2/latest/windows-ami-reference/windows-amis.html)

有关您可以在 Amazon Web Services Marketplace 上订阅的 AMI 的信息，请参阅 [Amazon Web Services Marketplace 中适用于 Amazon EC2 实例的付费 AMI](paid-amis.md)。

有关使用 Systems Manager 帮助用户找到启动实例时应使用的最新 AMI 的信息，请参阅以下内容：
+ [使用 Systems Manager 参数引用 AMI](using-systems-manager-parameter-to-find-AMI.md)
+ [使用 Systems Manager 公共参数引用最新的 AMI](finding-an-ami-parameter-store.md)

# 使用 Systems Manager 参数引用 AMI
Systems Manager 参数

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

Systems Manager 参数是客户定义的键/值对，您可以在 Systems Manager Parameter Store 中创建该键/值对。Parameter Store 提供了一个中央存储来对应用程序配置值进行外部化。有关更多信息，请参阅 *Amazon Systems Manager 用户指南*中的 [Amazon Systems Manager Parameter Store](https://docs.amazonaws.cn/systems-manager/latest/userguide/systems-manager-parameter-store.html)。

创建指向 AMI ID 的参数时，请确保将数据类型指定为 `aws:ec2:image`。指定此数据类型可确保在创建或修改参数时，将参数值作为 AMI ID 进行验证。有关更多信息，请参阅 *Amazon Systems Manager 用户指南*中[对亚马逊机器映像 ID 的原生参数支持](https://docs.amazonaws.cn/systems-manager/latest/userguide/parameter-store-ec2-aliases.html)。

**Topics**
+ [

## 使用案例
](#systems-manager-parameter-use-case)
+ [

## 权限
](#systems-manager-permissions)
+ [

## 限制
](#AMI-systems-manager-parameter-limitations)
+ [

## 使用 Systems Manager 参数启动实例
](#systems-manager-parameter-launch-instance)

## 使用案例


当您使用 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 启动实例向导](iam-policies-ec2-console.md#ex-launch-wizard)。

## 限制


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

参数名称区分大小写。只有在参数是层次结构的一部分时，参数名称才需要使用反斜杠，例如，`/amis/production/golden-ami`。如果参数不是层次结构的一部分，您可以省略反斜杠。

## 使用 Systems Manager 参数启动实例


启动实例时，您可以不指定 AMI ID，而选择指定指向某个 AMI ID 的 Systems Manager 参数。

要以编程方式指定参数，请使用以下语法，其中 `resolve:ssm` 是标准前缀，`parameter-name` 是唯一参数名称。

```
resolve:ssm:parameter-name
```

Systems Manager 参数具有版本支持。参数的每个迭代将分配一个唯一的版本号。您可以按如下方式引用参数的版本，其中 `version` 是唯一版本号。默认情况下，未指定版本时将使用参数的最新版本。

```
resolve:ssm:parameter-name:version
```

要使用 Amazon 提供的公有参数启动实例，请参阅[使用 Systems Manager 公共参数引用最新的 AMI](finding-an-ami-parameter-store.md)。

------
#### [ Console ]

**使用 Systems Manager 参数查找 AMI**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

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

1. 从控制台控制面板中，选择**启动实例**。

1. 在**应用程序和操作系统镜像（Amazon 机器映像）**下，选择**浏览其他 AMI**。

1. 选择搜索栏右侧的箭头按钮，然后选择 **Search by Systems Manager parameter**（按 Systems Manager 参数搜索）。

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

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

1. 从列表中选择 AMI，然后选择**选择**。

有关使用启动实例向导启动实例的更多信息，请参阅 [使用控制台中的启动实例向导来启动 EC2 实例](ec2-launch-instance-wizard.md)。

------
#### [ Amazon CLI ]

**使用 Systems Manager 参数启动实例**  
使用 [run-instances](https://docs.amazonaws.cn/cli/latest/reference/ec2/run-instances.html) 命令和 `--image-id` 选项。此示例使用名为 **golden-ami** 的 Systems Manager 参数来指定 AMI ID。

```
--image-id resolve:ssm:/golden-ami
```

您可以为 Systems Manager 参数创建若干版本。以下示例指定了 **golden-ami** 参数的版本 2。

```
--image-id resolve:ssm:/golden-ami:2
```

------
#### [ PowerShell ]

**使用 Systems Manager 参数启动实例**  
将 [New-EC2Instance](https://docs.amazonaws.cn/powershell/latest/reference/items/New-EC2Instance.html) cmdlet 与 `-ImageId` 参数结合使用。此示例使用名为 **golden-ami** 的 Systems Manager 参数来指定 AMI ID。

```
-ImageId "resolve:ssm:/golden-ami"
```

您可以为 Systems Manager 参数创建若干版本。以下示例指定了 **golden-ami** 参数的版本 2。

```
-ImageId "resolve:ssm:/golden-ami:2"
```

------

# 使用 Systems Manager 公共参数引用最新的 AMI
Systems Manager 公共参数

Amazon Systems Manager 为 Amazon 维护的公有 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`

有关更多信息，请参阅《Amazon Systems Manager 用户指南》**中的[使用公共参数](https://docs.amazonaws.cn/systems-manager/latest/userguide/parameter-store-public-parameters.html)。

## 列出 Amazon Linux AMI


------
#### [ Amazon CLI ]

**列出当前 Amazon 区域中的 Linux AMI**  
使用以下 [get-parameters-by-path](https://docs.amazonaws.cn/cli/latest/reference/ssm/get-parameters-by-path.html) 命令。`--path` 参数的值因 Linux AMI 而异。

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

------
#### [ PowerShell ]

**列出当前 Amazon 区域中的 Linux AMI**  
使用 [Get-SSMParametersByPath](https://docs.amazonaws.cn/powershell/latest/reference/items/Get-SSMParametersByPath.html) cmdlet。

```
Get-SSMParametersByPath `
    -Path "/aws/service/ami-amazon-linux-latest" | `
    Sort-Object Name | Format-Table Name
```

------

## 列出 Windows AMI


------
#### [ Amazon CLI ]

**列出当前 Amazon 区域中的 Windows AMI**  
使用以下 [get-parameters-by-path](https://docs.amazonaws.cn/cli/latest/reference/ssm/get-parameters-by-path.html) 命令。`--path` 参数的值因 Windows AMI 而异。

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

------
#### [ PowerShell ]

**列出当前 Amazon 区域中的 Windows AMI**  
使用 [Get-SSMParametersByPath](https://docs.amazonaws.cn/powershell/latest/reference/items/Get-SSMParametersByPath.html) cmdlet。

```
Get-SSMParametersByPath `
    -Path "/aws/service/ami-windows-latest" | `
    Sort-Object Name | Format-Table Name
```

------

## 使用公有参数启动实例


要在启动实例时指定此公有参数，请使用以下语法 `resolve:ssm:public-parameter`，其中 `resolve:ssm` 是标准前缀，`public-parameter` 是公有参数的路径和名称。

------
#### [ Amazon CLI ]

**使用公有参数启动实例**  
使用 [run-instances](https://docs.amazonaws.cn/cli/latest/reference/ec2/run-instances.html) 命令和 `--image-id` 选项。此示例为该映像 ID 指定了一个 Systems Manager 公有参数，以使用最新版本的 Amazon Linux 2023 AMI 启动实例

```
--image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64
```

------
#### [ PowerShell ]

**使用公有参数启动实例**  
将 [New-EC2Instance](https://docs.amazonaws.cn/powershell/latest/reference/items/New-EC2Instance.html) cmdlet 与 `-ImageId` 参数结合使用。此示例为该映像 ID 指定了一个 Systems Manager 公有参数，以使用最新版本适用于 Windows Server 2022 的 AMI 启动实例。

```
-ImageId "resolve:ssm:/aws/service/ami-windows-latest/Windows_Server-2022-English-Full-Base"
```

------

有关使用 Systems Manager 参数的更多示例，请参阅 [Query for the latest Amazon Linux AMI IDs Using Amazon Systems Manager Parameter Store](https://www.amazonaws.cn/blogs/compute/query-for-the-latest-amazon-linux-ami-ids-using-aws-systems-manager-parameter-store/) 和 [Query for the Latest Windows AMI Using Amazon Systems Manager Parameter Store](https://www.amazonaws.cn/blogs/mt/query-for-the-latest-windows-ami-using-systems-manager-parameter-store/)。