创作自动化运行手册 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创作自动化运行手册

自动化是 Amazon Systems Manager 一项功能,其中的每个运行手册定义了自动化。自动化运行手册定义了在自动化过程中执行的操作。在运行手册内容中,您可以定义 Systems Manager 对托管实例和 Amazon 资源执行的输入参数、输出和操作。

自动化包含几个预定义的运行手册,您可以用它们来执行常见任务,例如重启一个或多个 Amazon Elastic Compute Cloud (Amazon EC2) 实例,或创建 Amazon Machine Image (AMI)。但是,您的使用案例可能会超出预定义运行手册的功能。如果是这种情况,您可以创建自己的运行手册并根据需要修改它们。

运行手册由自动化操作、这些操作的参数以及您指定的输入参数组成。运行手册的内容是以 YAML 或 JSON 格式编写的。如果您不熟悉 YAML 或 JSON,我们建议您使用文档生成器,或者在尝试创作自己的运行手册之前了解更多关于任一标记语言的信息。有关文档生成器的详细信息,请参阅 正在使用文档生成器创建运行手册 文档。

以下部分将帮助您创作第一个运行手册。

识别您的使用案例

创作运行手册的第一步是确定您的使用案例。例如,您计划了 AWS-CreateImage 运行手册,以便每天在您的所有生产 Amazon EC2 实例上运行。月底时,您决定拥有的映像数量超过恢复点所需的映像。接下来,您希望在创建新 AMI 时,自动删除 Amazon EC2 实例的最早 AMI。为了实现此目的,您可以创建执行以下操作的新运行手册:

  1. 运行 aws:createImage 操作,并在映像描述中指定实例 ID。

  2. 运行 aws:waitForAwsResourceProperty 操作来轮询图像的状态,直到此状态为 available

  3. 在图像状态变为 available 后,aws:executeScript 操作会运行一个自定义 Python 脚本,用于收集与 Amazon EC2 实例关联的所有映像的 ID。脚本使用您在创建时指定的映像描述中的实例 ID 进行筛选,完成此操作。然后,脚本根据图像的 creationDate 对图像 ID 列表进行排序,并输出最早的 AMI。

  4. 最后,aws:deleteImage 操作运行,使用上一步输出中的 ID 删除最早的 AMI。

在这种情况下,您已经使用 AWS-CreateImage 运行手册,但发现您的使用案例需要更大的灵活性。这是一种常见的情况,因为运行手册和自动化操作之间可能存在重叠。因此,您可能需要调整用于解决您的使用案例的运行手册或操作。

例如,aws:executeScriptaws:invokeLambdaFunction 操作都允许您在自动化过程中运行自定义脚本。要在它们之间进行选择,您可能更喜欢 aws:invokeLambdaFunction,因为它还支持其他运行时语言。但是,您可能更喜欢 aws:executeScript,因为它允许您直接在 YAML 运行手册中创作脚本内容,并提供脚本内容作为 JSON 运行手册的附件。您也可以考虑 aws:executeScript,因为其 Amazon Identity and Access Management (IAM) 设置更简单。因为它使用 AutomationAssumeRole 提供的权限,aws:executeScript 不需要使用额外的 Amazon Lambda 函数执行角色。

在任何给定的情况下,一个操作可能会比另一个操作提供更大的灵活性或更多功能。因此,我们建议您查看要使用的运行手册或操作的可用输入参数,以确定哪些参数最适合您的使用案例和首选项。

设置开发环境

确定您的使用案例以及要在运行手册中使用的预定义运行手册或自动化操作后,请为运行手册的内容设置开发环境。要开发您的运行手册内容,我们建议使用 Amazon Toolkit for Visual Studio Code 而不是 Systems Manager 文档控制台。

Toolkit for VS Code 是 Visual Studio 代码(VS 代码)的开源扩展,提供了比 Systems Manager 文档控制台更多的功能。有用的功能包括针对 YAML 和 JSON 的模式验证、自动化操作类型的代码片段以及对各种 YAML 和 JSON 格式选项的自动完成支持。

有关安装 Toolkit for VS Code 的更多信息,请参阅安装 Amazon Toolkit for Visual Studio Code。有关使用适用于 Toolkit for VS Code 开发运行手册的更多信息,请参阅 Amazon Toolkit for Visual Studio Code 用户指南中的使用 Systems Manager 运行手册

开发运行手册内容

确定使用案例并设置环境后,您便做好了开发适用于运行手册内容的准备。您的使用案例和首选项在很大程度上决定了您在运行手册内容中使用的自动化操作或运行手册。与允许您完成类似任务的其他操作相比,某些操作仅支持输入参数的子集。其他操作具有特定的输出,例如 aws:createImage,其中一些操作允许您定义自己的输出,例如 aws:executeAwsApi

如果您不确定如何在运行手册中使用特定操作,我们建议您查看 Systems Manager 自动化操作参考 中的操作对应条目。我们还建议您查看预定义运行手册的内容,以查看有关如何使用这些操作的实例。有关运行手册的实际应用程序的更多实例,请参阅 其他运行手册示例

为了展示运行手册内容在简单性和灵活性方面的差异,以下教程提供了如何分阶段修补 Amazon EC2 实例组的示例:

  • 示例 1:创建父子运行手册 - 在此示例中,父子关系中使用了两个运行手册。父运行手册启动子运行手册的速率控制自动化。

  • 示例 2:脚本化运行手册 - 此示例演示如何通过将内容压缩到单个运行手册中并使用运行手册中的脚本来完成示例 1 的相同任务。