

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

# 更新 Linux AMI
<a name="automation-tutorial-update-patch-linux-ami"></a>

本 Systems Manager Automation 演练向您展示了如何使用控制台或 AWS CLI 和 `AWS-UpdateLinuxAmi` 运行手册，使用您指定的最新软件包补丁更新Linux AMI。Automation 是 AWS 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、Red Hat Enterprise Linux 或 Ubuntu Server Amazon Machine Image（AMI）上升级所有分发版本程序包和 Amazon 软件。这是默认运行手册行为。
+ 在现有映像上安装 AWS Systems Manager SSM Agent 可启用 Systems Manager 的各项工具，例如使用 AWS Systems Manager Run Command 执行远程命令，或者使用 Inventory 收集软件清单。
+ 安装其他软件包。

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

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


****  

| 参数 | 类型 | 说明 | 
| --- | --- | --- | 
|  SourceAmiId  |  字符串  |  （必需）源 AMI ID。  | 
|  IamInstanceProfileName  |  字符串  |  （必需）您在[配置 Systems Manager 所需的实例权限](setup-instance-permissions.md)中创建的 IAM 实例配置文件角色的名称。实例配置文件角色为自动化提供在您实例上执行操作的权限，例如运行命令或启动和停止服务。运行手册仅使用实例配置文件角色的名称。如果您指定 Amazon Resource Name (ARN)，则自动化会失败。  | 
|  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 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` 操作） **  
此步骤通过终止正在运行的实例来清除执行过程。

**Output**  
自动化返回新的 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 (AWS Systems Manager)**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 在导航窗格中，选择 **自动化**。

1. 选择**执行自动化**。

1. 在**自动化文档**列表中，选择 `AWS-UpdateLinuxAmi`。

1. 在**文档详细信息**部分，验证**文档版本**是否设置为**运行时的默认版本**。

1. 选择**下一步**。

1. 在**执行模式**部分中，选择**简单执行**。

1. 在**输入参数**部分，输入在**开始前的准备工作**部分收集的信息。

1. 选择**执行**。控制台将显示自动化执行的状态。

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

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