AWS Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS Systems Manager 自动化

Systems Manager Automation 是一项 AWS 托管的服务,能够简化常见实例和系统维护及部署任务。例如,您可在变更管理过程中使用 Automation,通过最新应用程序生成保持您的 Amazon Machine Image (AMI) 为最新状态。或者,假设您要在夜间创建数据库备份并将其上传到 Amazon S3 中。使用 Automation,您可以避免部署脚本以及直接对实例计划逻辑。您可以改为通过 Systems Manager Run Command 以及由 Automation 服务编排的 AWS Lambda 步骤运行维护活动。

使用 Automation 可以执行以下操作。

  • 在您的 Amazon Machine Image (AMI) 中,通过可由您审核的简化且可重复的过程,预先安装和配置应用程序及代理。

  • 构建工作流以配置和管理实例及 AWS 资源。

  • 创建您的自定义工作流,或者使用由 AWS 维护的预定义工作流。

  • 使用 Amazon CloudWatch Events 接收有关 Automation 任务和工作流的通知

  • 使用 Amazon EC2 或 AWS Systems Manager 控制台监控 Automation 进度和执行详细信息。

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 服务角色 [或代入角色])。

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

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

    用户 1 现在就可以执行此文档并重新启动实例了。

分享最佳实践

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 实例。

本页内容: