本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自动对EC2实例运行操作以响应中的事件 AWS Health
您可以自动执行操作,以响应 Amazon EC2 实例的计划事件。当 AWS Health 向您的 AWS 账户发送事件时,您的 EventBridge 规则可以调用目标(例如 Automati AWS Systems Manager on 文档)来代表您自动执行操作。
例如,当为由亚马逊EC2弹性区块存储 (AmazonEBS) 支持的EC2实例安排亚马逊实例停用事件时, AWS Health 会将AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED
事件类型发送到您的 AWS Health 控制面板。当规则检测到此事件类型后,您可以自动停止和启动实例。这样,将不必手动执行这些操作。
注意
要自动对您的亚马逊EC2实例执行操作,这些实例必须由 Systems Manager 管理。
有关更多信息,请参阅《亚马逊EC2EC2用户指南》 EventBridge中的 “实现亚马逊自动化”。
先决条件
必须先创建 AWS Identity and Access Management (IAM) 策略、创建IAM角色并更新角色的信任策略,然后才能创建规则。
按照此步骤为您的角色创建客户管理型策略。此策略授予角色代表您执行操作的权限。此过程使用IAM控制台中的JSON策略编辑器。
创建 IAM策略
登录 AWS Management Console 并打开IAM控制台,网址为https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略。
-
选择JSON选项卡。
-
复制以下内容,JSON然后在编辑器JSON中替换默认值。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:DescribeInstanceStatus" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "ssm:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:*:*:Automation*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::
123456789012
:role/AutomationEVRole
" } ] }-
在
Resource
参数中,在 Amazon 资源名称 (ARN) 中,输入您的 AWS 账户 ID。 -
您也可以替换角色名称或使用默认名称。此示例使用
AutomationEVRole
.
-
-
选择下一步:标签。
-
(可选)您可以使用标签作为键值对将元数据添加到策略。
-
选择 下一步: 审核。
-
在 “查看策略” 页面上,输入名称,例如
AutomationEVRolePolicy
以及可选的描述。 -
查看 Summary(摘要)页面,以查看策略允许的权限。如果您对策略感到满意,请选择 创建策略。
此策略定义角色可以执行的操作。有关更多信息,请参阅《IAM用户指南》中的创建IAM策略(控制台)。
创建策略后,必须创建一个IAM角色,然后将该策略附加到该角色。
为 AWS 服务创建角色
登录 AWS Management Console 并打开IAM控制台,网址为https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择角色,然后选择创建角色。
-
对于Select type of trusted entity(选择受信任实体的类型),选择 AWS service(服务)。
-
EC2为要允许担任此角色的服务进行选择。
-
选择下一步: 权限。
-
输入您创建的策略名称,例如
AutomationEVRolePolicy
,然后选中策略旁边的复选框。 -
选择下一步:标签。
-
(可选)您可以使用标签作为键值对将元数据添加到角色。
-
选择 下一步: 审核。
-
在 “角色名称” 中,输入
AutomationEVRole
。 此名称必须与您创建的IAM策略中显示ARN的名称相同。 -
(可选)对于 Role description(角色描述),输入角色的描述。
-
检查角色,然后选择创建角色。
有关更多信息,请参阅《IAM用户指南》中的为 AWS 服务创建角色。
最后,您可以更新所创建角色的信任策略。您必须完成此过程,才能在 EventBridge 控制台中选择此角色。
要更新该角色的信任策略
登录 AWS Management Console 并打开IAM控制台,网址为https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择角色。
-
在您 AWS 账户中的角色列表中,选择您创建的角色的名称,例如
AutomationEVRole
. -
选择 信任关系 选项卡,然后选择 编辑信任关系。
-
对于 Policy D oc umentJSON,复制以下内容,删除默认策略,然后将复制JSON的策略粘贴到原处。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
选择更新信任策略。
有关更多信息,请参阅《IAM用户指南》中的修改角色信任策略(控制台)。
为创建规则 EventBridge
按照此过程在 EventBridge 控制台中创建规则,以便您可以自动停止和启动计划停用的EC2实例。
为 Systems EventBridge Manager 自动操作创建规则
打开亚马逊 EventBridge 控制台,网址为https://console.aws.amazon.com/events/
。 -
在导航窗格中的 Events(事件)下,选择 Rules(规则)。
-
在 创建规则页面上,输入规则的 名称 和 描述。
-
在 Define pattern(定义模式)下,选择 Event pattern(事件模式),然后选择 Pre-defined pattern by service(按服务预定义的模式)。
-
对于 Service provider(服务提供商),选择 AWS。
-
对于 服务名称,选择 运行状况。
-
对于 事件类型,选择 特定运行状况事件。
-
选择 “特定服务”,然后选择EC2。
-
选择特定事件类型类别,然后选择scheduledChange。
-
选择 特定事件类型代码,然后选择事件类型代码。
例如,对于由 Amazon EC2 EBS 支持的实例,选择
。对于 Amazon EC2 实例存储支持的实例,请选择。AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED
AWS_EC2_INSTANCE_RETIREMENT_SCHEDULED
-
选择 Any resource(任何资源)。
您的 事件模式类似于以下示例。
{ "source": [ "aws.health" ], "detail-type": [ "AWS Health Event" ], "detail": { "service": [ "EC2" ], "eventTypeCategory": [ "scheduledChange" ], "eventTypeCode": [ "AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED" ] } }
-
添加 Systems Manager Automation 文档目标。在 “选择目标” 下的 “目标” 中,选择 “SSM自动化”。
-
对于 Document(文档),选择
AWS-RestartEC2Instance
。 -
展开 配置自动化参数,然后选择 输入转换器。
-
在 输入路径字段中输入
。{"Instances":"$.resources"}
-
对于第二个字段,输入
。{"InstanceId": <Instances>}
-
选择 “使用现有角色”,然后选择您创建的IAM角色,例如
AutomationEVRole
.您的目标应类似于以下示例。
注意
如果您没有具有必需权限EC2和 Systems Manager 权限以及信任关系的现有IAM角色,则您的角色将不会出现在列表中。有关更多信息,请参阅 先决条件。
-
选择创建。
如果您的账户中发生了符合您规则的事件,则 EventBridge 会将该事件发送给您的指定目标。