自动执行管理任务 - Amazon Snowball Edge 开发者指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

自动执行管理任务

您可以使用 Amazon OpsHub 自动执行经常在 Snow Family 设备上执行的操作任务。您可以为您可能希望对资源执行的重复操作(例如重新启动虚拟服务器、停止与 Amazon EC2 兼容的实例等)创建任务。您提供一份自动化文档,该文档可以安全地执行操作任务并对 Amazon 资源进行批量操作。您还可以安排常用的 IT 工作流程。

注意

在集群上不支持自动执行任务。

要使用任务,必须先启动 Amazon EC2 Systems Manager 服务。要在 Snowball Edge 上启动服务,请参阅在 Snowball Edge 上启动服务

创建和启动任务

创建任务时,您可以指定任务运行应使用的资源类型,然后提供包含运行任务的说明的任务文档。任务文档采用 YAML 格式或 JSON 格式。然后,您提供任务所需的参数并启动任务。

要创建任务,请执行以下操作
  1. 在控制面板的 Launch tasks(启动任务)部分中,选择 Get started(开始)以打开 Tasks(任务)页面。如果您已创建任务,它们将显示在任务下。

  2. 选择创建任务并提供任务的详细信息。

  3. 对于 Name(名称),输入任务的唯一名称。

    提示

    名称长度必须介于 3 到 128 个字符之间。有效字符为 a-zA-Z0-9._-

  4. 或者,您可以从 Target type-optional(目标类型-可选)列表中选择目标类型。这是您希望任务运行所使用的资源类型。

    例如,您可以指定 /AWS::EC2::Instance 以便任务在与 Amazon EC2 兼容的实例上运行,或指定 / 以便任务在所有资源类型上运行。

  5. 内容部分中,选择 YAMLJSON,然后提供执行任务的脚本。您有两个选项:YAML 或 JSON 格式。有关示例,请参阅任务示例

  6. 选择创建。然后,您创建的任务将显示在 Tasks(任务)页面上。

启动任务
  1. 在控制面板的 Launch tasks(启动任务)部分中,选择 Get started(开始)以打开 Tasks(任务)页面。您的任务显示在任务下。

  2. 选择您的任务以打开启动任务页面。

  3. 选择 Simple execution(简单执行)以在目标上运行。

    选择 Rate control(速率控制)可在多个目标上安全运行,并定义并发和错误阈值。对于此选项,您可以在 Rate control(速率控制)部分中提供额外的目标和错误阈值信息。

  4. 提供所需的输入参数,然后选择 Start task(启动任务)

    任务的状态为 Pending(挂起),并在任务成功运行时更改为 Success(成功)

任务示例

以下示例会重新启动与 Amazon EC2 兼容的实例。需要两个输入参数:endpointinstance ID

YAML 示例

description: Restart EC2 instance schemaVersion: '0.3' parameters: Endpoint: type: String description: (Required) EC2 Service Endpoint URL Id: type: String description: (Required) Instance Id mainSteps: - name: restartInstance action: aws:executeScript description: Restart EC2 instance step inputs: Runtime: python3.7 Handler: restart_instance InputPayload: Endpoint: "{{ Endpoint }}" Id: "{{ Id }}" TimeoutSeconds: 30 Script: |- import boto3 import time def restart_instance(payload, context): ec2_endpoint = payload['Endpoint'] instance_id = payload['Id'] ec2 = boto3.resource('ec2', endpoint_url=ec2_endpoint) instance = ec2.Instance(instance_id) if instance.state['Name'] != 'stopped': instance.stop() instance.wait_until_stopped() instance.start() instance.wait_until_running() return {'InstanceState': instance.state}

JSON 示例

{ "description" : "Restart EC2 instance", "schemaVersion" : "0.3", "parameters" : { "Endpoint" : { "type" : "String", "description" : "(Required) EC2 Service Endpoint URL" }, "Id" : { "type" : "String", "description" : "(Required) Instance Id" } }, "mainSteps" : [ { "name" : "restartInstance", "action" : "aws:executeScript", "description" : "Restart EC2 instance step", "inputs" : { "Runtime" : "python3.7", "Handler" : "restart_instance", "InputPayload" : { "Endpoint" : "{{ Endpoint }}", "Id" : "{{ Id }}" }, "TimeoutSeconds" : 30, "Script" : "import boto3\nimport time\ndef restart_instance(payload, context):\n ec2_endpoint = payload['Endpoint']\n instance_id = payload['Id']\n ec2 = boto3.resource('ec2', endpoint_url=ec2_endpoint)\n instance = ec2.Instance(instance_id)\n if instance.state['Name'] != 'stopped':\n instance.stop()\n instance.wait_until_stopped()\n instance.start()\n instance.wait_until_running()\n return {'InstanceState': instance.state}" } } ] }

查看任务的详细信息

您可以查看管理任务的详细信息,例如描述和运行任务所需的参数。

查看任务的详细信息
  1. 在控制面板的 Launch tasks(启动任务)部分中,选择 Get started(开始)以打开 Tasks(任务)页面。

  2. Tasks(任务)页面上,找到并选择要查看其详细信息的任务。

  3. 选择 View details(查看详细信息),然后选择其中一个选项卡以查看详细信息。例如,Parameters(参数)选项卡会显示脚本中的输入参数。

删除任务

请按照以下步骤删除管理任务。

删除任务
  1. 在控制面板的 Launch tasks(启动任务)部分中,选择 Get started(开始)以打开 Tasks(任务)页面。

  2. 找到要删除的任务。选择任务,然后选择 Delete(删除)