演练:使用文档生成器创建自定义运行手册
以下演练说明了如何在 Amazon Systems Manager 自动化控制台中使用文档生成器来创建一个自定义运行手册,然后运行该自定义运行手册。自动化是 Amazon Systems Manager 的一项功能。
您创建的运行手册的第一步运行一个脚本以启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。第二步运行另一个脚本来监控要更改为 ok
的实例状态检查。然后,报告自动化的整体状态 Success
。
开始前的准备工作
在开始本演练之前,请执行以下操作:
-
确认您具有管理员权限,或为您授予了相应的权限以在 Amazon Identity and Access Management (IAM) 中访问 Systems Manager。
有关信息,请参阅 验证用户的运行手册访问权限。
-
确认在您的 Amazon Web Services 账户 账户中具有自动化的 IAM 服务角色(也称为担任角色)。该角色是必需的,因为该演练使用
aws:executeScript
操作。有关创建此角色的信息,请参阅为自动化配置服务角色(担任角色)访问权限。
有关用于运行
aws:executeScript
的 IAM 服务角色要求的信息,请参阅 使用运行手册的权限。 -
确认您具有启动 EC2 实例的权限。
有关更多信息,请参阅 Amazon EC2 安全组中的适用于 Linux 实例的 Amazon EC2 用户指南。
步骤 1:创建自定义运行手册
可以使用以下过程创建自定义运行手册,以启动 Amazon EC2 实例并等待实例状态检查变为 ok
。
如果您复制该演练中的值并粘贴到文档生成器中(例如参数名称和处理程序名称),请确保删除添加到您输入的文本值中的任何前导或尾随空格。
使用文档生成器创建自定义运行手册
访问 https://console.aws.amazon.com/systems-manager/
,打开 Amazon Systems Manager 控制台。 在导航窗格中,选择 文档。
-或者-
如果首先打开 Amazon Systems Manager 主页,选择菜单图标 (
) 以打开导航窗格,然后在导航窗格中选择文档。
-
选择创建自动化。
-
对于名称,请为运行手册键入以下描述性名称:
LaunchInstanceAndCheckStatus
。 -
(可选)对于文档描述),请使用 Markdown 将默认文本替换为该运行手册的描述。以下是示例。
##Title: LaunchInstanceAndCheckState ----- **Purpose**: This runbook first launches an EC2 instance using the AMI ID provided in the parameter ```imageId```. The second step of this runbook continuously checks the instance status check value for the launched instance until the status ```ok``` is returned. ##Parameters: ----- Name | Type | Description | Default Value ------------- | ------------- | ------------- | ------------- assumeRole | String | (Optional) The ARN of the role that allows Automation to perform the actions on your behalf. | - imageId | String | (Optional) The AMI ID to use for launching the instance. The default value uses the latest Amazon Linux AMI ID available. | {{ ssm:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2 }}
-
对于担任角色,请使用
arn:aws:iam::111122223333:role/AutomationServiceRole
格式输入自动化的自动化 IAM 服务角色(担任角色)的 ARN。使用您的 Amazon Web Services 账户 ID 替代 111122223333。您指定的角色用于提供启动自动化执行所需的权限。
重要 对于不归 Amazon 所有并使用
aws:executeScript
操作的运行手册,必须指定一个角色。有关信息,请参阅 使用运行手册的权限。 -
展开输入参数,然后执行以下操作。
-
对于参数名称,请输入
imageId
。 -
对于类型,选择
String
。 -
对于必需,请选择
No
。 -
对于默认值,请输入以下内容。
{{ ssm:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2 }}
注意 该值使用最新的 Amazon Linux Amazon Machine Image (AMI) ID 启动 Amazon EC2 实例。如果要使用不同的 AMI,请将该值替换为您的 AMI ID。
-
对于描述,请输入以下内容。
(Optional) The AMI ID to use for launching the instance. The default value uses the latest released Amazon Linux AMI ID.
-
-
选择添加参数)以创建第二个参数
tagValue
,然后输入以下内容。-
对于参数名称,请输入
tagValue
。 -
对于类型,选择
String
。 -
对于必需,请选择
No
。 -
对于默认值,请输入
LaunchedBySsmAutomation
。这会将标签键对值Name:LaunchedBySsmAutomation
添加到实例中。 -
对于描述,请输入以下内容。
(Optional) The tag value to add to the instance. The default value is LaunchedBySsmAutomation.
-
-
选择添加参数 以创建第三个参数
instanceType
,然后输入以下信息。-
对于参数名称,请输入
instanceType
。 -
对于类型,选择
String
。 -
对于必需,请选择
No
。 -
对于默认值,请输入
t2.micro
。 -
对于参数描述,请输入以下内容。
(Optional) The instance type to use for the instance. The default value is t2.micro.
-
-
展开目标类型,然后选择
"/"
。 -
(可选)展开文档标签以将资源标签应用于运行手册。为标签键 输入
Purpose
,并为标签值输入LaunchInstanceAndCheckState
。 -
在步骤 1 部分中,完成以下步骤。
-
对于步骤名称,为自动化的第一步输入以下描述性步骤名称:
LaunchEc2Instance
。 -
对于操作类型,请选择运行脚本) (
aws:executeScript
)。 -
对于描述,请输入自动化步骤的描述,例如以下内容。
**About This Step** This step first launches an EC2 instance using the ```aws:executeScript``` action and the provided script.
-
展开输入。
-
对于运行时,请选择运行提供的脚本所使用的运行时语言。
-
对于处理程序,输入
launch_instance
。这是在以下脚本中声明的函数名称。注意 这对于 PowerShell 不是必需的。
-
对于脚本,请将默认内容替换为以下内容。请确保将脚本与相应的运行时值匹配。
-
展开其他输入。
-
对于输入名称,请选择 InputPayload。对于输入值,请输入以下 YAML 数据。
image_id: "{{ imageId }}" tag_value: "{{ tagValue }}" instance_type: "{{ instanceType }}"
-
-
展开输出,然后执行以下操作:
-
对于 Name (名称),请输入
payload
。 -
对于选择器,请输入
$.Payload
。 -
对于类型,选择
StringMap
。
-
-
选择添加步骤将第二步添加到运行手册中。第二步查询在步骤 1 中启动的实例的状态,并等到返回的状态为
ok
。 -
在 Step 2 (步骤 2) 部分中,执行以下操作。
-
对于步骤名称,请为自动化的第二步输入以下描述性名称:
WaitForInstanceStatusOk
。 -
对于操作类型,请选择运行脚本 (
aws:executeScript
)。 -
对于描述,请输入自动化步骤的描述,例如以下内容。
**About This Step** The script continuously polls the instance status check value for the instance launched in Step 1 until the ```ok``` status is returned.
-
对于运行时,选择用于执行提供的脚本的运行时语言。
-
对于处理程序,输入
poll_instance
。这是在以下脚本中声明的函数名称。注意 这对于 PowerShell 不是必需的。
-
对于脚本,请将默认内容替换为以下内容。请确保将脚本与相应的运行时值匹配。
-
展开其他输入。
-
对于输入名称,请选择 InputPayload。对于输入值,请输入以下内容:
{{ LaunchEc2Instance.payload }}
-
-
选择创建自动化以保存运行手册。
步骤 2:运行自定义运行手册
使用以下过程运行在步骤 1 中创建的自定义运行手册。自定义运行手册启动一个 EC2 实例,并等待实例检查变为 ok
状态。
运行自定义运行手册
访问 https://console.aws.amazon.com/systems-manager/
,打开 Amazon Systems Manager 控制台。 -
在导航窗格中,选择自动化,然后选择执行自动化。
-
在自动化文档 列表中,选择我拥有的选项卡,然后选择您创建的自定义运行手册
LaunchInstanceAndCheckStatus
旁边的按钮。 -
在文档详细信息 部分中,对于文档版本,请确认选择了运行时的默认版本。
-
选择 Next (下一步)。
-
在执行自动化文档页面顶部,请确认选择了简单执行。
-
选择执行。
-
在自动化的两个步骤完成后,在执行的步骤区域中选择步骤的步骤 ID 以查看步骤详细信息,包括任何步骤输出。
注意 返回
ok
状态可能需要几分钟的时间。 -
(可选)除非您计划将该演练创建的 EC2 实例用于其他目的,否则,您可以终止该实例。有关信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的终止实例。
您可以通过名称 LaunchedBySsmAutomation 标识您在 步骤 1:创建自定义运行手册 中进行标记的实例。