

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在食谱中使用基本图像参数
<a name="tutorial-ssm-parameters-recipe"></a>

在创建图像自定义方法时，有几种方法可以识别您一开始使用的基础图片。如果您为基础映像指定亚马逊系统映像 (AMI) ID，并且该基础映像已更新，则其 AMI ID 可能会更改，您需要更新配方才能匹配。

您可以定义 AWS Systems Manager 参数存储参数（SSM 参数）来存储基础映像 AMI ID 的值，然后使用该参数在配方中指定基础映像，而不必在每次更改基础映像 ID 时都更改配方。对于 AWS 托管 AMIs，您可以使用最新版本的公共参数。

本教程将引导您完成创建 AMI ID 参数并在图像配方中使用该参数的过程。本教程中的 Image Builder 步骤基于控制台。

**Topics**
+ [步骤 1：查找或创建参数存储参数](#tutorial-ssm-create-parameter)
+ [步骤 2：配置 IAM 权限（可选）](#tutorial-ssm-configure-iam)
+ [步骤 3：创建使用参数的图像配方](#tutorial-ssm-create-recipe)

## 步骤 1：查找或创建参数存储参数
<a name="tutorial-ssm-create-parameter"></a>

此步骤的过程取决于您为基础映像指定的 AMI 类型。对于 AWS 托管 AMIs，您可以使用引用当前版本的公共参数。有些参数可能并非全部可用 AWS 区域。

首先，打开与您的 AMI 对应的选项卡。

------
#### [ AWS managed AMI ]

如果您的基础映像是 AWS 托管 AMI，则可以使用公共参数指定 AMI ID，而不必创建自己的参数。要查找您的 AMI 的[公共参数，请参阅*AWS Systems Manager 用户指南*中的发现公共参数](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html)。

------
#### [ Custom AMI ]

要创建 AMI ID 参数，请使用控制台、或按照在 S [ystems Manager 中创建参数存储库参数](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html)的说明进行操作 PowerShell。 AWS CLI提供以下值以确保参数值为 AMI ID。

**参数层**：`Standard`

**类型**：`String`

**数据类型**：选择`aws:ec2:image`。当您指定此类型时，系统会验证输入的值以确保它是 AMI ID。

**值**：输入有效的 AMI ID（例如**{{ami-1234567890abcdef1}}**）。

------

## 步骤 2：配置 IAM 权限（可选）
<a name="tutorial-ssm-configure-iam"></a>

要使用 Systems Manager 参数存储参数（SSM 参数），无论是公共的还是私有的，都必须在 IAM 角色中指定以下 Systems Manager 参数存储操作，并将该参数列为资源。Image Builder 服务相关角色授予获取公共参数或获取或更新带`/imagebuilder/`前缀的私有参数的权限。对于没有该前缀的私有参数，您可以为执行角色添加权限。
+ `ssm:GetParameter`— 此操作允许您使用 SSM 参数在食谱中指定基础图像。
+ `ssm:PutParameter`— 此操作允许您在分发期间将输出 AMI ID 存储在 SSM 参数中。策略定义看起来相同，但本教程在示例策略中不包括放置操作。

1. 

**创建自定义角色（可选）**

   在中创建管道或使用 create-image 命令时 AWS CLI，只能指定一个 Image Builder 执行角色。如果您定义了 Image Builder 工作流程执行角色，则需要向该角色添加任何其他功能权限。否则，您将创建一个包含所需权限的新自定义角色。如果您已经定义了自定义执行角色，则可以跳过此步骤。

   按照《*AWS Identity and Access Management 用户指南*》中[创建角色向 AWS 服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)的过程进行操作。

1. 

**为您的自定义角色添加权限**

   要向自定义角色添加 SSM 参数权限，请按照《*AWS Identity and Access Management 用户指南*[》中的 “更新角色权限策略” 流程进行](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html#id_roles_update-role-permissions-policy)操作。

   以下策略示例显示了使用在您的账户中创建的参数的`ssm:GetParameter`操作。

------
#### [ JSON ]

****  

   ```
   {
   	"Version":"2012-10-17",		 	 	 
   	"Statement": [
   		{
   			"Sid": "PrivateParameterCustomRole",
   			"Effect": "Allow",
   			"Action": "ssm:GetParameter",
   			"Resource": "arn:aws:ssm:*:{{111122223333}}:parameter/{{parameter-name}}"
   		}
   	]
   }
   ```

------

有关公共参数资源的更多信息，请参阅*AWS Systems Manager 用户指南*中的[调用 AMI 公共参数](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)。

## 步骤 3：创建使用参数的图像配方
<a name="tutorial-ssm-create-recipe"></a>



1. 打开 EC2 Image Builder 控制台，网址为[https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)。

1. 选择 “**图像配方**”，然后从列表页中选择 “**创建图像配方**”。

1. 填写 “**基础图片**” 部分，如下所示：

   1. 选择 “**使用自定义 AMI**” 选项。这将显示其他字段，您可以在其中输入 AMI ID 或包含 AMI ID 的 SSM 参数。

   1. 选择 **SSM 参数**选项。

   1. 在 **SSM 参数**字段中，输入您在步骤 1 中创建的参数的参数名称或 Amazon 资源名称 (ARN)。如果输入名称，则控制台中将***没有***前缀。

1. 根据需要完成剩余的配方配置。

**注意**  
如果您通过其他接口（例如）设置父映像 AWS CLI，则参数名称的前缀必须为`ssm:`（例如，`ssm:{{/ImageBuilder-Tutorial/BaseAMI}}`。