AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

演练:创建一个 Automation 文档

本演练将介绍如何创建和运行自定义 Automation 文档。在您运行 Automation 后,系统会执行以下任务。

  • 从指定的 AMI 启动 Windows 实例。

  • 使用 Run Command 运行将 Windows 更新应用于实例的命令。

  • 停止实例。

  • 创建新的 Windows AMI。

  • 为 Windows AMI 添加标签。

  • 终止原始实例。

Automation 示例文档

自动化运行以 JSON 或 YAML 格式编写的 Systems Manager 自动化文档。自动化文档包括在工作流执行期间要执行的操作。有关 Systems Manager 文档的更多信息,请参阅 AWS Systems Manager 文档。有关您可以添加到文档的操作的信息,请参阅 Systems Manager 自动化文档参考

注意

默认情况下,当 Automation 运行 AWS-UpdateWindowsAmi 文档并创建一个临时实例时,系统会使用默认 VPC (172.30.0.0/16)。如果您删除了默认 VPC,会收到以下错误:

VPC not defined 400

要解决此问题,您必须复制 AWS-UpdateWindowsAmi 文档并指定子网 ID。有关更多信息,请参阅 VPC not defined 400

使用 Automation 创建经过修补的 AMI

  1. 收集以下信息。您将在此过程的稍后部分指定此信息。

  2. 将以下示例文档复制到一个文本编辑器 (如 Notepad) 中。将 assumeRole 的值和 IamInstanceProfileName 的值分别更改为您之前为 Automation 创建 IAM 角色时所创建的角色 ARN 和角色名称。将该文档以 patchWindowsAmi.json 或 patchWindowsAmi.yaml 格式保存在本地硬盘上。

    { "description":"Systems Manager Automation Demo - Patch and Create a New AMI", "schemaVersion":"0.3", "assumeRole":"the role ARN you created", "parameters":{ "sourceAMIid":{ "type":"String", "description":"AMI to patch" }, "targetAMIname":{ "type":"String", "description":"Name of new AMI", "default":"patchedAMI-{{global:DATE_TIME}}" } }, "mainSteps":[ { "name":"startInstances", "action":"aws:runInstances", "timeoutSeconds":1200, "maxAttempts":1, "onFailure":"Abort", "inputs":{ "ImageId":"{{ sourceAMIid }}", "InstanceType":"m3.large", "MinInstanceCount":1, "MaxInstanceCount":1, "IamInstanceProfileName":"the name of the IAM role you created" } }, { "name":"installMissingWindowsUpdates", "action":"aws:runCommand", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "DocumentName":"AWS-InstallMissingWindowsUpdates", "InstanceIds":[ "{{ startInstances.InstanceIds }}" ], "Parameters":{ "UpdateLevel":"Important" } } }, { "name":"stopInstance", "action":"aws:changeInstanceState", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "InstanceIds":[ "{{ startInstances.InstanceIds }}" ], "DesiredState":"stopped" } }, { "name":"createImage", "action":"aws:createImage", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "InstanceId":"{{ startInstances.InstanceIds }}", "ImageName":"{{ targetAMIname }}", "NoReboot":true, "ImageDescription":"AMI created by EC2 Automation" } }, { "name":"createTags", "action":"aws:createTags", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "ResourceType":"EC2", "ResourceIds":[ "{{createImage.ImageId}}" ], "Tags":[ { "Key": "Generated By Automation", "Value": "{{automation:EXECUTION_ID}}" }, { "Key": "From Source AMI", "Value": "{{sourceAMIid}}" } ] } }, { "name":"terminateInstance", "action":"aws:changeInstanceState", "maxAttempts":1, "onFailure":"Continue", "inputs":{ "InstanceIds":[ "{{ startInstances.InstanceIds }}" ], "DesiredState":"terminated" } } ], "outputs":[ "createImage.ImageId" ] }
  3. 将 AWS CLI 下载到本地计算机上。

  4. 编辑以下命令,并指定 patchWindowsAmi.json/yaml 文件在本地计算机上的路径。运行该命令,以创建必需的自动化文档。

    注意

    对于 name 参数,您不能使用 AWS 作为文档前缀。如果您指定 AWS-名称 或 AWS名称,则将收到错误。

    aws ssm create-document --name "patchWindowsAmi" --content file:///Users/test-user/Documents/patchWindowsAmi.json/yaml --document-type Automation

    系统将返回有关命令进程的信息。

    { "DocumentDescription": { "Status": "Creating", "Hash": "bce98f80b89668b092cd094d2f2895f57e40942bcc1598d85338dc9516b0b7f1", "Name": "test", "Parameters": [ { "Type": "String", "Name": "sourceAMIid", "Description": "AMI to patch" }, { "DefaultValue": "patchedAMI-{{global:DATE_TIME}}", "Type": "String", "Name": "targetAMIname", "Description": "Name of new AMI" } ], "DocumentType": "Automation", "PlatformTypes": [ "Windows", "Linux" ], "DocumentVersion": "1", "HashType": "Sha256", "CreatedDate": 1488303738.572, "Owner": "12345678901", "SchemaVersion": "0.3", "DefaultVersion": "1", "LatestVersion": "1", "Description": "Systems Manager Automation Demo - Patch and Create a New AMI" } }
  5. 运行以下命令以查看您可以访问的文件列表。

    aws ssm list-documents --document-filter-list key=Owner,value=Self

    系统将返回类似于以下内容的信息:

    { "DocumentIdentifiers":[ { "Name":" patchWindowsAmi", "PlatformTypes": [ ], "DocumentVersion": "5", "DocumentType": "Automation", "Owner": "12345678901", "SchemaVersion": "0.3" } ] }
  6. 运行以下命令以查看有关 patchWindowsAmi 文档的详细信息。

    aws ssm describe-document --name patchWindowsAmi

    系统将返回类似于以下内容的信息:

    { "Document": { "Status": "Active", "Hash": "99d5b2e33571a6bb52c629283bca0a164026cd201876adf0a76de16766fb98ac", "Name": "patchWindowsAmi", "Parameters": [ { "DefaultValue": "ami-3f0c4628", "Type": "String", "Name": "sourceAMIid", "Description": "AMI to patch" }, { "DefaultValue": "patchedAMI-{{global:DATE_TIME}}", "Type": "String", "Name": "targetAMIname", "Description": "Name of new AMI" } ], "DocumentType": "Automation", "PlatformTypes": [ ], "DocumentVersion": "5", "HashType": "Sha256", "CreatedDate": 1478904417.477, "Owner": "12345678901", "SchemaVersion": "0.3", "DefaultVersion": "5", "LatestVersion": "5", "Description": "Automation Demo - Patch and Create a New AMI" } }
  7. 运行以下命令以运行 patchWindowsAmi 文档和自动化工作流程。该命令采用两个输入参数:要修补的 AMI 的 ID 和新 AMI 的名称。以下示例命令使用的是最新的 EC2 AMI,以最大限度减少需应用的补丁数量。如果您多次运行此命令,则必须为 targetAMIname 指定唯一的值。AMI 名称必须是独一无二的。

    aws ssm start-automation-execution --document-name="patchWindowsAmi" --parameters sourceAMIid="ami-bd3ba0aa"

    该命令将会返回执行 ID。请将该 ID 复制到剪贴板。您将使用该 ID 查看工作流的状态。

    { "AutomationExecutionId": "ID" }

    您可以在 控制台中监控工作流的状态。请检查控制台以确认是否正在启动新实例。实例启动完成后,您可以确认已运行 Run Command 操作。Run Command 执行完成之后,您应该会在 AMI 映像列表中看到新的 AMI。

  8. 要使用 CLI 查看工作流程的执行情况,请运行以下命令:

    aws ssm describe-automation-executions
  9. 要查看有关执行进度的详细信息,请运行以下命令。

    aws ssm get-automation-execution --automation-execution-id ID

注意

根据应用的补丁数量,在该示例工作流中运行的 Windows 修补过程可能需要 30 分钟或更长时间才能完成。

有关如何使用 Automation 的更多示例,包括在您刚完成的演练中构建的示例,请参阅 Systems Manager Automation 示例