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

Automation 使用案例

本部分包括 AWS Systems Manager Automation 的常见使用案例。

执行常见 IT 任务

Automation 可以根据计划简化常见 IT 任务,如更改一个或多个实例的状态 (使用审批工作流程) 和管理实例状态。下面是一些示例:

  • 使用 AWS-StopInstance 文档请求一个或多个 AWS Identity and Access Management (IAM) 用户批准实例停止操作。在获得批准后,Automation 将停止实例。

  • 通过使用 Amazon CloudWatch Events 或使用 Maintenance Window 任务,使用 AWS-StopInstance 文档以按计划自动停止实例。例如,您可以配置 Automation 工作流程以在每个星期五晚上停止实例,然后在每个星期一早晨重新启动这些实例。

  • 使用 AWS-UpdateCloudFormationStackWithApproval 文档来更新通过使用 CloudFormation 模板部署的资源。更新会应用新模板。在更新开始之前,您可以配置 Automation 以请求由一个或多个 IAM 用户批准。

安全地批量执行中断性任务

Systems Manager 包含可通过使用 EC2 标签帮助您确定大型目标实例组的功能以及可根据您定义的限制帮助实施更改的速度控制功能。

使用 AWS RestartInstanceWithApproval 文档以定位包含多个实例的 AWS 资源组。您可以配置 Automation 工作流程来使用速度控制功能。例如,您可以指定应同时重新启动的实例数量。您还可以指定在取消 Automation 工作流程之前允许的最大错误数。

简化复杂任务

Automation 为简化复杂任务提供了一键式自动化,例如创建黄金 Amazon Machine Image (AMI) 和恢复无法访问的 EC2 实例。下面是一些示例:

  • 使用 AWS-UpdateLinuxAMI 和 AWS-UpdateWindowsAMI 文档通过源 AMI 来创建黄金 AMI。在应用更新前后,您可以运行自定义脚本。您还可以包含特定程序包或从安装中排除这些程序包。

  • 使用 AWSSupport-ExecuteEC2Rescue 文档恢复受损的实例。出于各种原因,实例可能无法访问,包括网络配置错误、RDP 问题或防火墙设置。以前,对实例进行故障排除并重新获得其访问权限需要执行几十个手动步骤,然后才能重新获得访问权限。使用 AWSSupport-ExecuteEC2Rescue 文档,您可以通过指定实例 ID 并单击一个按钮来重新获得访问权限。

增强操作安全

使用委托管理,您可以限制或提升各种类型任务的用户权限。

借助委托管理,您可以提供对特定资源上特定任务的权限,而无需为用户授予访问资源的直接权限。这可以提升整体安全配置文件。例如,假定用户 1 没有重新启动 EC2 实例的权限,但您希望授权该用户执行此操作。那么不用为用户 1 授予直接权限,您可以执行以下操作:

  • 创建一个 IAM 角色,并为其授予成功停止和启动 EC2 实例所需的权限。

  • 创建 Automation 文档并在文档中嵌入该角色。(执行此操作最简单方法是自定义 AWS-RestartEC2Instance 文档并在文档中嵌入该角色,而不用分配 Automation 服务角色 [或代入角色])。

  • 修改 User1 的 IAM 权限并授予用户运行本文档的权限。下面是如何修改文档的示例:

    "Version": "2012-10-17", "Statement": [ { "Action": "ssm:StartAutomationExecution", "Effect": "Allow", "Resource": [ "ARN of the document you created in Step 2” ] } ] }

    User1 现在可以运行此文档并重新启动实例了。

分享最佳实践

Automation 允许您与组织中的其余人员分享最佳实践。

您可以在 Automation 文档中创建资源管理的最佳实践,并轻松地在 AWS 区域和组中共享这些文档。您也可以约束文档接受的参数的允许值。下面给出了一个用于启动新 EC2 实例并限制用户仅指定特定 AMI ID 的 Automation 文档的示例:

注意

根据需要替换 AMI 值以及 MySecurityKeyNameIamInstanceProfileName 的值。

{ "description":"Launch Allowed EC2 instances", "schemaVersion":"0.3", "assumeRole": "{{ AutomationAssumeRole }}", "parameters":{ "AMIID":{ "type":"String", "description":"Instance to value", "allowedValues" : [ "ami-e3bb7399","ami-55ef662f" ] }, "AutomationAssumeRole": { "type": "String", "description": "(Optional) The ARN of the role that allows Automation to perform the actions on your behalf.", "default": "" } }, "mainSteps":[ { "name":"launchInstances", "action":"aws:runInstances", "timeoutSeconds":1200, "maxAttempts":1, "onFailure":"Abort", "inputs":{ "ImageId":"{{ AMIID }}", "InstanceType":"t2.micro", "KeyName":"MySecurityKeyName", "MinInstanceCount":1, "MaxInstanceCount":1, "IamInstanceProfileName":"ManagedInstanceProfile" } } ] }

此文档可确保用户仅可通过指定的 AMI ID 来启动 t2.micro 实例。