

• Amazon Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 更新 AMIs
<a name="automation-tutorial-update-ami"></a>

以下教程说明了如何更新 Amazon Machine Image（AMIs）以包含最新补丁。

**Topics**
+ [更新 Linux AMI](automation-tutorial-update-patch-linux-ami.md)
+ [更新 Linux AMI（Amazon CLI）](#update-patch-linux-ami-cli)
+ [更新 Windows Server AMI](automation-tutorial-update-patch-windows-ami.md)
+ [使用 Automation、Amazon Lambda 和 Parameter Store 来更新黄金 AMI](automation-tutorial-update-patch-golden-ami.md)
+ [使用 Automation 和 Jenkins 更新 AMIs](automation-tutorial-update-patch-ami-jenkins-integration.md)
+ [更新自动扩缩组的 AMIs](automation-tutorial-update-patch-windows-ami-autoscaling.md)

## 更新 Linux AMI（Amazon CLI）
<a name="update-patch-linux-ami-cli"></a>

此 Amazon Systems Manager 自动化演练介绍如何使用 Amazon Command Line Interface (Amazon CLI) 和 Systems Manager `AWS-UpdateLinuxAmi` 运行手册通过指定的最新版本软件包自动修补 Linux Amazon Machine Image (AMI)。Automation 是 Amazon Systems Manager 中的一项工具。`AWS-UpdateLinuxAmi` 运行手册也能自动安装其他具体站点相关的软件包和配置。您可以使用该演练更新各种 Linux 分发版，包括 Ubuntu Server、Red Hat Enterprise Linux（RHEL）或 Amazon Linux AMIs。有关支持的 Linux 版本的完整列表，请参阅 [Patch Manager 先决条件](patch-manager-prerequisites.md)。

使用 `AWS-UpdateLinuxAmi` 运行手册可以自动完成映像维护任务，而无需使用 JSON 或 YAML 编写运行手册。您可以使用 `AWS-UpdateLinuxAmi` 运行手册执行以下类型的任务。
+ 在 Amazon Linux、RHEL 或 Ubuntu Server Amazon Machine Image（AMI）上升级所有分发版本程序包和 Amazon 软件。这是默认运行手册行为。
+ 在现有映像上安装 Amazon Systems Manager SSM Agent 以启用 Systems Manager 功能，例如使用 Amazon Systems Manager Run Command 的远程命令执行，或者使用 Inventory 的软件清单收集。
+ 安装其他软件包。

**开始前的准备工作**  
在您开始使用运行手册之前，请先为自动化配置角色和 EventBridge（后者可选）。有关更多信息，请参阅 [设置自动化](automation-setup.md)。此演练还要求您指定 Amazon Identity and Access Management (IAM) 实例配置文件的名称。有关创建 IAM 实例配置文件的更多信息，请参阅[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)。

`AWS-UpdateLinuxAmi` 运行手册接受以下输入参数。


****  

| 参数 | 类型 | 描述 | 
| --- | --- | --- | 
|  SourceAmiId  |  字符串  |  （必需）源 AMI ID。您可以使用 Amazon Systems Manager Parameter Store *公有*参数自动引用最新的 Linux Amazon EC2 AMI ID。有关更多信息，请参阅[使用 Amazon Systems Manager Parameter Store 查询最新 Amazon Linux AMI ID](https://www.amazonaws.cn/blogs/compute/query-for-the-latest-amazon-linux-ami-ids-using-aws-systems-manager-parameter-store/)。  | 
|  IamInstanceProfileName  |  字符串  |  （必需）您在[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)中创建的 IAM 实例配置文件角色的名称。实例配置文件角色为自动化提供在您实例上执行操作的权限，例如运行命令或启动和停止服务。运行手册仅使用实例配置文件角色的名称。  | 
|  AutomationAssumeRole  |  字符串  |  （必需）您在 [设置自动化](automation-setup.md) 中创建的 IAM 服务角色的名称。服务角色（也称为担任角色）为自动化提供权限，用于担任您的 IAM 角色和代表您执行操作。例如，在运行手册中运行 `aws:createImage` 操作时，服务角色允许自动化创建新的 AMI。对于此参数，必须指定完整的 ARN。  | 
|  TargetAmiName  |  字符串  |  （可选）新 AMI 在创建之后的名称。默认名称是系统生成的字符串，其中包括源 AMI ID 以及创建时间和日期。  | 
|  InstanceType  |  字符串  |  (可选) 启动作为工作区主机的实例的类型。实例类型因区域而异。默认类型为 t2.micro。  | 
|  PreUpdateScript  |  字符串  |  (可选) 在应用更新前要运行的脚本的 URL。默认值 (\$1"none\$1") 不运行脚本。  | 
|  PostUpdateScript  |  字符串  |  (可选) 在应用软件包更新后要运行的脚本的 URL。默认值 (\$1"none\$1") 不运行脚本。  | 
|  IncludePackages  |  字符串  |  (可选) 仅更新这些指定的软件包。默认值 (\$1"all\$1") 将应用所有可用的更新。  | 
|  ExcludePackages  |  字符串  |  (可选) 在所有情况下从更新中排除的软件包的名称。默认值 (\$1"none\$1") 不排除任何软件包。  | 

**自动化步骤**  
默认情况下，`AWS-UpdateLinuxAmi` 运行手册包括以下步骤。

**步骤 1：launchInstance（`aws:runInstances` 操作） **  
此步骤使用 Amazon Elastic Compute Cloud (Amazon EC2) 用户数据和 IAM 实例配置文件角色启动实例。用户数据根据操作系统安装相应的 SSM Agent。安装 SSM Agent 后，即可使用 Systems Manager 工具，例如 Run Command、State Manager和 Inventory。

**步骤 2：updateOSSoftware（`aws:runCommand`操作） **  
此步骤在已启动实例上运行以下命令：  
+ 从 Amazon Simple Storage Service (Amazon S3) 下载更新脚本。
+ 运行可选的更新前脚本。
+ 更新分发软件包和 Amazon 软件。
+ 运行可选的更新后脚本。
执行日志存储在 /tmp 文件夹中，供用户以后查看。  
如果您希望升级特定软件包集，则可以使用 `IncludePackages` 参数提供列表。在提供时，系统仅尝试更新这些软件包及其依赖项。不执行任何其他更新。默认情况下，如果未指定*包含* 软件包，则程序将更新所有可用软件包。  
如果要在升级中排除特定软件包集，则可以向 `ExcludePackages` 参数提供列表。如果提供，这些软件包保持其当前版本，与任何其他指定的选项无关。默认情况下，在未指定任何*排除*软件包时，将不排除软件包。

**步骤 3：stopInstance（`aws:changeInstanceState` 操作）**  
此步骤停止已更新实例。

**步骤 4：createImage（`aws:createImage` 操作） **  
此步骤创建一个新 AMI，带有可将其链接到源 ID 和创建时间的描述性名称。例如：“EC2 自动化在 \$1\$1global:DATE\$1TIME\$1\$1 从 \$1\$1SourceAmiId\$1\$1 生成了 AMI”，其中 DATE\$1TIME 和 SourceID 表示自动化变量。

**步骤 5：terminateInstance（`aws:changeInstanceState` 操作） **  
此步骤通过终止正在运行的实例来清除执行过程。

**输出**  
自动化返回新的 AMI ID 作为输出。

**注意**  
默认情况下，当自动化运行 `AWS-UpdateLinuxAmi` 运行手册时，系统会在默认 VPC (172.30.0.0/16) 中创建一个临时实例。如果您删除了默认 VPC，会收到以下错误：  
`VPC not defined 400`  
要解决此问题，您必须复制 `AWS-UpdateLinuxAmi` 运行手册并指定子网 ID。有关更多信息，请参阅 [VPC not defined 400](automation-troubleshooting.md#automation-trbl-common-vpc)。

**使用自动化创建经过修补的 AMI**

1. 安装并配置 Amazon Command Line Interface（Amazon CLI）（如果尚未执行该操作）。

   有关信息，请参阅[安装或更新 Amazon CLI 的最新版本](https://docs.amazonaws.cn/cli/latest/userguide/getting-started-install.html)。

1. 运行以下命令来运行 `AWS-UpdateLinuxAmi` 运行手册。将每个*示例资源占位符*替换为您自己的信息。

   ```
   aws ssm start-automation-execution \
       --document-name "AWS-UpdateLinuxAmi" \
       --parameters \
       SourceAmiId=AMI ID, \
       IamInstanceProfileName=IAM instance profile, \
       AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'
   ```

   该命令将会返回执行 ID。请将该 ID 复制到剪贴板。您将使用该 ID 查看自动化的状态。

   ```
   {
       "AutomationExecutionId": "automation execution ID"
   }
   ```

1. 要使用 Amazon CLI 查看自动化，请运行以下命令：

   ```
   aws ssm describe-automation-executions
   ```

1. 运行以下命令以查看有关运行手册进程的详细信息。将 *automation execution ID* 替换为您自己的信息。

   ```
   aws ssm get-automation-execution --automation-execution-id automation execution ID
   ```

   更新过程可能需要 30 分钟或者更久。
**注意**  
您也可以在控制台中监控自动化的状态。在列表中，选择您刚才运行的自动化，然后选择**步骤**选项卡。该选项卡将显示自动化操作的状态。

在自动化完成后，请从更新后的 AMI 启动测试实例以验证更改。

**注意**  
如果自动化有任何步骤失败，**自动化执行**页面上会列出有关失败的信息。自动化设计为在成功完成所有任务后终止临时实例。如果步骤失败，系统可能不会终止实例。因此，如果某个步骤失败，请手动终止临时实例。