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

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

创作自动化运行手册

自动化中的每个运行手册,Amazon Systems Manager,定义了自动化。自动化运行手册定义了在自动化过程中执行的操作。在 Runbook 内容中,您定义 Systems Manager 对托管实例执行的输入参数、输出和操作,并且Amazon资源的费用。

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

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

以下部分将帮助您创作第一个 Runbook。

识别您的使用案例

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

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

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

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

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

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

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

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

设置开发环境

确定您的使用案例以及要在 Runbook 中使用的预定义运行手册或自动化操作后,现在是时候为 Runbook 内容设置开发环境了。要开发您的 Runbook 内容,我们建议使用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 开发 Runbook 的更多信息,请参阅使用 Systems Manager Automation 文档中的Amazon Toolkit for Visual Studio Code用户指南.

开发运行手册内容

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

如果您不确定如何在 Runbook 中使用特定操作,我们建议您查看Systems Manager Automation 操作参考. 我们还建议查看预定义 Runbook 的内容,以查看如何使用这些操作的真实示例。有关 Runbook 的实际应用程序的更多示例,请参阅示例方案和自定义 Runbook 解决方案.

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

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

  • 示例 2:脚本操作手册— 此示例演示如何通过将内容缩小到单个 Runbook 中并使用 Runbook 中的脚本来完成示例 1 的相同任务。