更新 AMIs - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

更新 AMIs

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

更新 Linux AMI(Amazon CLI)

本 Amazon Systems Manager 自动化演练向您展示了如何使用 Amazon Command Line Interface (Amazon CLI) 和 Systems Manager AWS-UpdateLinuxAmi 运行手册使用您指定的最新版本的软件包自动修补 Linux Amazon Machine Image (AMI)。自动化是一种能力 Amazon Systems Manager。AWS-UpdateLinuxAmi 运行手册也能自动安装其他具体站点相关的软件包和配置。你可以使用本演练更新各种 Linux 发行版,包括 CentOS、RHEL Ubuntu Server、SLES 或 Amazon Linux。AMIs有关支持的 Linux 版本的完整列表,请参阅 Patch Manager先决条件

使用 AWS-UpdateLinuxAmi 运行手册可以自动完成映像维护任务,而无需使用 JSON 或 YAML 编写运行手册。您可以使用 AWS-UpdateLinuxAmi 运行手册执行以下类型的任务。

  • 在亚马逊 Linux、、Red Hat Enterprise LinuxUbuntu Server、SLES 或 Cent 操作系统 Amazon Machine Image (AMI) 上升级所有分发包和亚马逊软件。这是默认运行手册行为。

  • 安装 Amazon Systems Manager SSM Agent在现有映像上以启用 Systems Manager 功能,例如使用运行远程命令 Amazon Systems Manager Run Command或使用清单收集软件清单。

  • 安装其他软件包。

开始前的准备工作

在开始使用运行手册之前,请配置角色,也可以配置自动 EventBridge 化的角色。有关更多信息,请参阅设置自动化。本演练还要求您指定 Amazon Identity and Access Management (IAM) 实例配置文件的名称。有关创建 IAM 实例配置文件的更多信息,请参阅为 Systems Manager 配置实例权限

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

参数 类型 描述

SourceAmiId

字符串

(必需)源 AMI ID。您可以使用 Amazon Systems Manager Parameter Store公共参数自动引用AMI适用于 Linux 的 Amazon EC2 的最新 ID。有关更多信息,请参阅使用查询最新 Amazon Linux AMI ID Amazon Systems ManagerParameter Store

IamInstanceProfileName

字符串

(必需)您在为 Systems Manager 配置实例权限中创建的 IAM 实例配置文件角色的名称。实例配置文件角色为自动化提供在您实例上执行操作的权限,例如运行命令或启动和停止服务。运行手册仅使用实例配置文件角色的名称。

AutomationAssumeRole

字符串

(必需)您在 设置自动化 中创建的 IAM 服务角色的名称。服务角色(也称为担任角色)为自动化提供权限,用于担任您的 IAM 角色和代表您执行操作。例如,在运行手册中运行 aws:createImage 操作时,服务角色允许自动化创建新的 AMI。对于此参数,必须指定完整的 ARN。

TargetAmiName

字符串

(可选)新 AMI 在创建之后的名称。默认名称是系统生成的字符串,其中包括源 AMI ID 以及创建时间和日期。

InstanceType

字符串

(可选) 启动作为工作区主机的实例的类型。实例类型因区域而异。默认类型为 t2.micro。

PreUpdateScript

字符串

(可选) 在应用更新前要运行的脚本的 URL。默认值 (\"none\") 不运行脚本。

PostUpdateScript

字符串

(可选) 在应用软件包更新后要运行的脚本的 URL。默认值 (\"none\") 不运行脚本。

IncludePackages

字符串

(可选) 仅更新这些指定的软件包。默认值 (\"all\") 将应用所有可用的更新。

ExcludePackages

字符串

(可选) 在所有情况下从更新中排除的软件包的名称。默认值 (\"none\") 不排除任何软件包。

自动化步骤

默认情况下,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 Automation 在 {{global: date_Time}} 上从 {{}} 生成的 AMI”,其中 DATE_TIME SourceAmiId 和 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

使用自动化创建经过修补的 AMI
  1. 安装并配置 Amazon Command Line Interface (Amazon CLI)(如果尚未安装)。

    有关信息,请参阅安装或更新 Amazon CLI 的最新版本

  2. 运行以下命令来运行 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" }
  3. 要使用查看自动化 Amazon CLI,请运行以下命令:

    aws ssm describe-automation-executions
  4. 运行以下命令以查看有关自动化进展的详细信息。将 automation execution ID 替换为您自己的信息。

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

    更新过程可能需要 30 分钟或者更久。

    注意

    您也可以在控制台中监控自动化的状态。在列表中,选择您刚才运行的自动化,然后选择步骤选项卡。该选项卡将显示自动化操作的状态。

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

注意

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