Amazon EC2 Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

使用预定义的 Automation 文档

为了帮助您快速入门,Systems Manager 提供以下预定义 Automation 文档。这些文档由 Amazon Web Services 维护。

使用 AWS-UpdateLinuxAmi 自定义和更新 Linux AMI

使用 AWS-UpdateLinuxAmi 文档可以自动完成映像维护任务,而无需使用 JavaScript 对象表示法 (JSON) 编写工作流。您可以使用 AWS-UpdateLinuxAmi 文档执行以下类型的任务。

  • 在 Amazon Linux、Red Hat、Ubuntu 或 Cent OS Amazon Machine Image (AMI) 上升级所有分发程序包和 Amazon 软件。这是默认文档行为。

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

  • 安装其他软件包。

您可在 Amazon EC2 控制台中查看此文档的 JSON。展开 Systems Manager Shared Resources,然后选择 Documents。选择 AWS-UpdateLinuxAmi 文档旁的选项,然后使用下方窗格中的选项卡查看 JSON 以及其他有关文档的其他信息,如以下图像中所示。

 Systems Manager Automation 文档

开始前的准备工作

在您开始使用 Automation 文档之前,请先为 Automation 配置角色和 CloudWatch Events (后者可选)。有关更多信息,请参阅 设置 Automation

AWS-UpdateLinuxAmi 文档接受以下输入参数。

参数 类型 描述

SourceAmiId

字符串

(必需) 源 AMI ID。

InstanceIamRole

字符串

(可选) 您在 设置 Automation 中创建的 AWS Identity and Access Management (IAM) 实例配置文件角色的名称。实例配置文件角色为 Automation 提供在您实例上执行操作的权限,例如执行命令或启动和停止服务。Automation 文档仅使用实例配置文件角色的名称。如果您指定 Amazon 资源名称 (ARN),则 Automation 执行失败。

AutomationAssumeRole

字符串

(可选) 您在 设置 Automation 中创建的 IAM 服务角色的名称。服务角色 (也称为代入角色) 为 Automation 提供权限,用于代入您的 IAM 角色和代表您执行操作。例如,在 Automation 文档中执行 aws:createImage 操作时,服务角色允许 Automation 创建新的 AMI。对于此参数,必须指定完整的 ARN。

TargetAmiName

字符串

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

InstanceType

字符串

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

PreUpdateScript

字符串

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

PostUpdateScript

字符串

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

IncludePackages

字符串

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

ExcludePackages

字符串

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

Automation 步骤

默认情况下 AWS-UpdateLinuxAmi 文档包括以下 Automation 步骤。

步骤 1:launchInstance (aws:runInstances 操作)

此步骤使用 Amazon EC2 用户数据和 IAM 实例配置文件角色启动实例。用户数据根据操作系统安装相应的 SSM 代理。安装 SSM 代理后,您可以利用 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 Automation 在 {{global:DATE_TIME}} 从 {{SourceAmiId}} 生成了 AMI”,其中 DATE_TIME 和 SourceID 表示 Automation 变量。

步骤 5: terminateInstance (aws:changeInstanceState 操作)

此步骤通过终止正在运行的实例来清除执行过程。

输出

执行过程返回新的 AMI ID 作为输出。

您可以使用 AWS-UpdateLinuxAmi 文档作为模板来创建您自己的文档,如接下来的部分中所述。有关 Automation 文档中支持的操作 (步骤) 的信息,请参阅 Systems Manager Automation 操作。有关如何使用 Automation 文档的信息,请参阅 Systems Manager Automation 演练

使用 AWS-UpdateWindowsAmi 自定义和更新 Windows AMI

使用 AWS-UpdateWindowsAmi 文档可以在 Amazon Windows AMI 上自动完成映像维护任务,而无需使用 JavaScript 对象表示法 (JSON) 编写工作流。本文档在 Windows Server 2008 R2 或更高版本中受支持。您可以使用 AWS-UpdateWindowsAmi 文档执行以下类型的任务。

  • 安装所有 Windows 更新并升级 Amazon 软件 (默认行为)。

  • 安装特定 Windows 更新并升级 Amazon 软件。

  • 使用您的脚本自定义 AMI。

开始前的准备工作

在您开始使用 Automation 文档之前,请先为 Automation 配置角色和 CloudWatch Events (后者可选)。有关更多信息,请参阅 设置 Automation

注意

SSM 代理的更新通常会在不同时间向不同区域推广。当您自定义或更新 AMI 时,请仅使用为您工作所在的区域发布的源 AMI。这将确保您使用该区域发布的最新 SSM 代理并避免兼容性问题。

AWS-UpdateWindowsAmi 文档接受以下输入参数。

参数 类型 描述

SourceAmiId

字符串

(必需) 源 AMI ID。

InstanceIamRole

字符串

(可选) 您在 设置 Automation 中创建的 AWS Identity and Access Management (IAM) 实例配置文件角色的名称。实例配置文件角色为 Automation 提供在您实例上执行操作的权限,例如执行命令或启动和停止服务。Automation 文档仅使用实例配置文件角色的名称。如果您指定 Amazon 资源名称 (ARN),则 Automation 执行失败。

AutomationAssumeRole

字符串

(可选) 您在 设置 Automation 中创建的 IAM 服务角色的名称。服务角色 (也称为代入角色) 为 Automation 提供权限,用于代入您的 IAM 角色和代表您执行操作。例如,在 Automation 文档中执行 aws:createImage 操作时,服务角色允许 Automation 创建新的 AMI。对于此参数,必须指定完整的 ARN。

TargetAmiName

字符串

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

InstanceType

字符串

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

PreUpdateScript

字符串

(可选) 要在更新 AMI 之前运行的脚本。在 Automation 文档中或在运行时输入一个脚本作为参数。

PostUpdateScript

字符串

(可选) 要在更新 AMI 之后运行的脚本。在 Automation 文档中或在运行时输入一个脚本作为参数。

IncludeKbs

字符串

(可选) 指定一个或多个要包括的 Microsoft 知识库 (KB) 文章 ID。可以使用逗号分隔值安装多个 ID。有效格式:KB9876543 或 9876543。

ExcludeKbs

字符串

(可选) 指定一个或多个要排除的 Microsoft 知识库 (KB) 文章 ID。可以使用逗号分隔值排除多个 ID。有效格式:KB9876543 或 9876543。

类别

字符串

(可选) 指定一个或多个更新类别。可以使用逗号分隔值筛选类别。选项:关键更新、安全更新、定义更新、Update Rollup、Service Pack、工具、更新或驱动程序。有效格式包括单个条目,例如:关键更新。或者,可以指定逗号分隔列表:关键更新,安全更新,定义更新。

SeverityLevels

字符串

(可选) 指定一个或多个与更新关联的 MSRC 严重性级别。可以使用逗号分隔值筛选严重性级别。选项:关键、重要、低、中或未指定。有效格式包括单个条目,例如:关键。或者,可以指定逗号分隔列表:关键,重要,低。

Automation 步骤

默认情况下 AWS-UpdateWindowsAmi 文档包括以下 Automation 步骤。

步骤 1:launchInstance (aws:runInstances 操作)

此步骤以从指定的 SourceAmiID 启动一个具有 IAM 实例配置文件角色的实例。

步骤 2:runPreUpdateScript (aws:runCommand 操作)

此步骤可让您以字符串形式指定一个在安装更新前执行的脚本。

步骤 3:updateEC2Config (aws:runCommand 操作)

此步骤使用 AWS-InstallPowerShellModule 公有文档下载 AWS 公有 PowerShell 模块。Systems Manager 使用 SHA-256 哈希验证模块的完整性。然后 Systems Manager 检查操作系统以确定是要更新 EC2Config 还是 EC2Launch。EC2Config 通过 Windows Server 2012 R2 在 Windows Server 2008 R2 上运行。EC2Launch 在 Windows Server 2016 上运行。

步骤 4:updateSSMAgent (aws:runCommand 操作)

此步骤使用 AWS-UpdateSSMAgent 公有文档更新 SSM 代理。

步骤 5:updateAWSPVDriver (aws:runCommand 操作)

此步骤使用 AWS-ConfigureAWSPackage 公有文档更新 AWS PV 驱动程序。

步骤 6:installWindowsUpdates (aws:runCommand 操作)

此步骤使用 AWS-InstallWindowsUpdates 公有文档安装 Windows 更新。默认情况下,Systems Manager 搜索并安装任何缺失的更新。可以通过指定下列参数之一更改默认行为:IncludeKbsExcludeKbsCategoriesSeverityLevels

步骤 7:runPostUpdateScript (aws:runCommand 操作)

此步骤可让您以字符串形式指定一个在安装更新后执行的脚本。

步骤 8:runSysprepGeneralize (aws:runCommand 操作)

此步骤使用 AWS-InstallPowerShellModule 公有文档下载 AWS 公有 PowerShell 模块。Systems Manager 使用 SHA-256 哈希验证模块的完整性。然后 Systems Manager 使用 AWS 支持的方法针对 EC2Launch (Windows Server 2016) 或 EC2Config (Windows Server 2008 R2 到 2012 R2) 执行 sysprep。

步骤 9:stopInstance (aws:changeInstanceState 操作)

此步骤停止已更新实例。

步骤 10:createImage (aws:createImage 操作)

此步骤创建一个新 AMI,带有可将其链接到源 ID 和创建时间的描述性名称。例如:“EC2 Automation 在 {{global:DATE_TIME}} 从 {{SourceAmiId}} 生成了 AMI”,其中 DATE_TIME 和 SourceID 表示 Automation 变量。

步骤 11:TerminateInstance (aws:changeInstanceState 操作)

此步骤通过终止正在运行的实例来清除执行过程。

输出

此部分可让您将各个步骤的输出或任何参数的值指定为 Automation 输出。默认情况下,输出是由执行创建的已更新 Windows AMI 的 ID。

您可以使用 AWS-UpdateWindowsAmi 文档作为模板来创建您自己的文档,如接下来的部分中所述。有关 Automation 文档中支持的操作 (步骤) 的信息,请参阅 Systems Manager Automation 操作。有关如何使用 Automation 文档的信息,请参阅 Systems Manager Automation 演练