本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Systems Manager 自动化运行手册集成到事件管理器中以进行事故补救
您可以使用 A AWS Systems Manager ut omation 中的运行手册(一项功能)来自动执行 AWS Cloud 环境中的常见应用程序和基础架构任务。 AWS Systems Manager
每个运行手册都定义了一个运行手册工作流程,该工作流程由 Systems Manager 在您的托管节点或其他 AWS 资源类型上执行的操作组成。您可以使用运行手册来自动维护、部署和修复 AWS 资源。
在 Incident Manager 中,运行手册推动事件响应和缓解,您可以指定要作为响应计划一部分的运行手册。
在响应计划中,您可以从数十个预先配置的运行手册中进行选择,用于执行常见的自动化任务,也可以创建自定义运行手册。当您在响应计划定义中指定运行手册时,系统可以在事件开始时自动启动运行手册。
重要
跨区域失效转移创建的事件不会调用响应计划中指定的运行手册。
有关 Systems Manager Automation、运行手册以及将运行手册与 Incident Manager 一起使用的详细信息,请参阅以下主题:
-
要向响应计划添加运行手册,请参阅 在事件管理器中创建和配置响应计划。
-
要了解有关运行手册的更多信息,请参阅《AWS Systems Manager 用户指南》和《AWS Systems Manager 自动化运行手册参考》https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html中的 AWS Systems Manager 自动化。
-
有关使用运行手册的成本的信息,请参阅 Systems Manager 定价
。 -
有关在亚马逊 CloudWatch 警报或亚马逊事件造成事件时自动调用运行手册的信息,请参阅教程:将 Systems Manager Automation 运行手册与 EventBridge 事件管理器一起使用。
IAM启动和运行 Runbook 工作流程所需的权限
作为事件响应的一部分,Incident Manager 需要运行手册的权限。要提供这些权限,您可以使用 AWS Identity and Access Management (IAM) 角色、Runbook 服务角色和自动化AssumeRole
。
运行手册服务角色是必需的服务角色。该角色为 Incident Manager 提供了访问和启动运行手册工作流程所需的权限。
自动化 AssumeRole
提供了运行运行手册中指定的各个命令所需的权限。
注意
如果未指定 AssumeRole
,则 Systems Manager Automation 会尝试将运行手册服务角色用于单个命令。如果未指定 AssumeRole
,则必须向运行手册服务角色添加必要的权限。否则,运行手册将无法运行这些命令。
但是,作为最佳安全实践,我们建议使用单独的 AssumeRole
。使用单独的 AssumeRole
,您可以限制必须添加到每个角色的必要权限。
有关自动化 AssumeRole
的更多信息,请参阅《AWS Systems Manager 用户指南》中的配置自动化的服务角色(代入角色)访问权限。
您可以自己在IAM控制台中手动创建任一类型的角色。-您也可以让 Incident Manager 在创建或更新响应计划时为您创建任一角色。
运行手册服务角色权限
运行手册服务角色权限通过类似于以下内容的策略提供。
第一条语句允许 Incident Manager 启动 Systems Manager StartAutomationExecution
操作。然后,此操作将在三种 Amazon 资源名称 (ARN) 格式表示的资源上运行。
当运行手册在受影响的账户中运行时,第二条语句允许运行手册服务角色代入另一个账户中的角色。有关更多信息,请参阅《AWS Systems Manager 用户指南》中的在多个账户 AWS 区域 和账户中运行自动化。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:*:{{DocumentAccountId}}:automation-definition/{{DocumentName}}:*", "arn:aws:ssm:*:{{DocumentAccountId}}:document/{{DocumentName}}:*", "arn:aws:ssm:*::automation-definition/{{DocumentName}}:*" ] }, { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::*:role/AWS-SystemsManager-AutomationExecutionRole", "Condition": { "StringEquals": { "aws:CalledViaLast": "ssm.amazonaws.com" } } } ] }
自动化 AssumeRole 权限
创建或更新响应计划时,您可以从多个 AWS 托管策略中进行选择,以附加到事件管理器创建 AssumeRole 的策略中。这些策略提供了运行 Incident Manager 运行手册场景中使用的许多常见操作的权限。您可以选择一个或多个托管式策略来为您的
AssumeRole
策略提供权限。 下表描述了从 Incident Manager 控制台创建
AssumeRole
时可以选择的策略。
AWS托管策略名称 | 策略描述 |
---|---|
AmazonSSMAutomationRole |
授予 Systems Manager Automation 服务运行运行手册中定义的活动的权限。将此策略分配给管理员和可信高级用户。 |
AWSIncidentManagerResolverAccess |
授予用户启动、查看和更新事件的权限。您还可以使用它们在事件控制面板中创建客户时间轴事件和相关项目。 |
您可以使用这些托管式策略向许多常见的事件响应场景授予权限。但是,您需要的特定任务所需的权限可能会有所不同。在这种情况下,您需要为 AssumeRole
提供额外的策略权限。有关信息,请参阅 AWS Systems Manager 自动化运行手册参考。
使用运行手册参数
将运行手册添加到响应计划时,您可以指定运行手册在运行时应使用的参数。响应计划支持具有静态和动态值的参数。对于静态值,在响应计划中定义参数时输入该值。对于动态值,系统通过收集事件信息来确定正确的参数值。Incident Manager 支持以下动态参数:
Incident ARN
-
事件管理器创建事件时,系统会捕获相应事件记录的 Amazon 资源名称 (ARN),并在运行手册中为该参数输入该名称。
注意
该值只能分配给
String
类型的参数。如果分配给任何其他类型的参数,则运行手册将无法运行。 Involved resources
-
事件管理器创建事件时,系统会ARNs捕获事件中涉及的资源。然后ARNs在运行手册中将这些资源分配给此参数。
关于关联资源
事件管理器可以用 CloudWatch 警报、事件和手动创建 EventBridge 的事件中指定的 AWS 资源填充运行手册参数值。ARNs本节介绍在填充此参数ARNs时事件管理器可以捕获的不同类型的资源。
CloudWatch 警报
当通过 CloudWatch 警报操作创建事件时,事件管理器会自动从关联的指标中提取以下类型的资源。然后,它使用以下相关资源填充所选参数:
AWS 服务 | 资源类型 |
---|---|
Amazon DynamoDB |
全局二级索引 流 表 |
Amazon EC2 |
映像 实例 |
AWS Lambda |
函数别名 函数版本 函数 |
亚马逊 Relational Database Service(亚马逊RDS) |
集群 数据库实例 |
Amazon Simple Storage Service (Amazon S3) |
存储桶 |
EventBridge 规则
当系统根据事件创建事件时, EventBridge 事件管理器会使用事件中的Resources
属性填充所选参数。有关更多信息,请参阅《亚马逊 EventBridge 用户指南》中的亚马逊 EventBridge活动。
手动创建的事件
使用StartIncidentAPI操作创建事件时,事件管理器会使用API呼叫中的信息填充所选参数。具体来说,它通过使用在 relatedItems
参数中传递的 INVOLVED_RESOURCE
类型项来填充参数。
注意
INVOLVED_RESOURCES
值只能分配给 StringList
类型的参数。如果分配给任何其他类型的参数,则运行手册将无法运行。
定义运行手册
创建运行手册时,您可以按照此处提供的步骤进行操作,也可以按照《Systems Manager 用户指南》中使用运行手册部分提供的更详细的指南进行操作。如果您要创建多账户、多区域运行手册,请参阅 Systems Manager 用户指南中的在多个账户 AWS 区域 和账户中运行自动化。
定义运行手册
-
打开 Systems Manager 控制台,网址为https://console.aws.amazon.com/systems-manager/
。 -
在导航窗格中,选择文档。
-
选择创建自动化。
-
输入唯一且可识别的运行手册名称。
-
输入运行手册的描述。
-
为自动化文档提供一个要IAM扮演的角色。这允许运行手册自动运行命令。有关更多信息,请参阅为自动化工作流程配置服务角色访问权限。
-
(可选)添加运行手册启动时的任何输入参数。启动运行手册时,您可以使用动态或静态参数。动态参数使用运行手册启动时的事件中的值。静态参数使用您提供的值。
-
(可选)添加目标类型。
-
(可选)添加标签。
-
填写运行手册运行时将采取的步骤。每个步骤都需要:
-
名称。
-
步骤的用途描述。
-
要在步骤中运行的操作。运行手册使用暂停操作类型来描述手动步骤。
-
(可选)命令属性。
-
-
添加所有必需的运行手册步骤后,选择创建自动化。
要启用跨账户功能,请将管理账户中的运行手册与在事件发生期间使用该运行手册的所有应用程序帐户共享。
共享运行手册
-
打开 Systems Manager 控制台,网址为https://console.aws.amazon.com/systems-manager/
。 -
在导航窗格中,选择文档。
-
在文档列表中,选择要共享的文档,然后选择查看详细信息。在权限选项卡中,确保您是文档所有者。只有文档所有者才可共享文档。
-
选择编辑。
-
要公开共享命令,请选择公开,然后选择保存。要私下共享命令,请选择 “隐私”,输入 AWS 账户 ID,选择 “添加权限”,然后选择 “保存”。
Incent Manager 运行手册模板
Incident Manager 提供了以下运行手册模板,以帮助您的团队开始在 Systems Manager Automation 中编写运行手册。您可以按原样使用此模板,也可以对其进行编辑以包含特定于您的应用程序和资源的详细信息。
查找 Incident Manager 运行手册模板
-
打开 Systems Manager 控制台,网址为https://console.aws.amazon.com/systems-manager/
。 -
在导航窗格中,选择文档。
-
在文档区域中,在搜索字段中输入
AWSIncidents-
以显示所有 Incident Manager 运行手册。提示
输入
AWSIncidents-
作为自由文本,而不是使用文档名前缀筛选器选项。
使用模板
-
打开 Systems Manager 控制台,网址为https://console.aws.amazon.com/systems-manager/
。 -
在导航窗格中,选择文档。
-
从文档列表中选择要更新的模板。
-
选择内容选项卡,然后复制文档的内容。
-
在导航窗格中,选择文档。
-
选择创建自动化。
-
输入唯一且可识别的名称。
-
选择编辑器选项卡。
-
选择编辑。
-
在文档编辑器区域粘贴或输入复制的详细信息。
-
选择创建自动化。
AWSIncidents-CriticalIncidentRunbookTemplate
AWSIncidents-CriticalIncidentRunbookTemplate
是一个以手动步骤提供 Incident Manager 事件生命周期的模板。这些步骤足够通用,可用于大多数应用程序,但也足够详细,可供响应者开始解决事件。