Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门。使用 EventBridge 运行具有触发器的自动化
您可以通过指定运行手册作为 Amazon EventBridge 事件的目标来启动自动化。您可以按计划或者在特定 Amazon 系统事件发生时启动自动化。例如,假设您创建一个名为 BootStrapInstances 的运行手册,该运行手册在实例启动时在实例上安装软件。要指定 BootStrapInstances 运行手册(和对应的工作流程)作为 EventBridge 事件的目标,请先创建新的 EventBridge 规则。(以下是示例规则:Service name:EC2,Event Type:EC2 实例状态更改通知,Specific state(s):正在运行,Any instance。) 然后,您使用以下过程指定 BootStrapInstances 运行手册作为使用 EventBridge 控制台和 Amazon Command Line Interface (Amazon CLI) 的事件的目标。当新实例启动时,系统将运行自动化并安装软件。
有关创建运行手册的更多信息,请参阅 使用运行手册。
创建使用运行手册(控制台)的 EventBridge 事件
使用以下过程将运行手册配置为 EventBridge 事件目标。
将运行手册配置为 EventBridge 事件规则的目标
访问 https://console.aws.amazon.com/events/,打开 Amazon EventBridge 控制台。
-
在导航窗格中,选择 Rules (规则),然后选择 Create rule (创建规则)。
–或者–
如果首先打开 Amazon EventBridge 主页,选择 Create rule (创建规则)。
-
为规则输入名称和描述。
规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。
-
对于定义模式,选择事件模式或计划。利用事件模式,您可以构建将为 Amazon 服务中的特定操作生成事件的规则。利用计划,您可以构建将根据您指定的计划使用 cron 格式生成事件的规则。
-
选择要创建的规则的其余选项,然后选择添加目标。
有关创建 EventBridge 规则的信息,请参阅 Amazon EventBridge 用户指南中的 Amazon EventBridge 入门。
-
对于 Select event bus(选择事件总线),请选择要与此规则关联的事件总线。如果您希望根据来自您自己的 Amazon Web Services 账户 的匹配事件启动此规则,请选择 Amazon default event bus (默认事件总线)。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。
-
对于 Target(目标),选择 Systems Manager Automation(Systems Manager 自动化)。
-
对于文档,选择在调用目标时要使用的运行手册。
-
展开配置文档版本,然后选择一个版本。$DEFAULT 已在 Systems Manager 中显式设置为默认的运行手册版本。您可以选择特定版本,也可以使用最新版本。
-
展开配置自动化参数,保留默认参数值(如果可用)或输入您自己的值。
所需参数的参数名旁有一个星号 (*)。要创建目标,您必须为每个所需的参数指定一个值。如果没有指定,系统将创建规则,但不运行规则。
-
在选择目标区域的底部,选择一个角色授予 EventBridge 权限,以便使用指定的运行手册和参数启动自动化。EventBridge 使用角色启动自动化。您可以让 EventBridge 创建新角色或使用已具有所需权限的角色。
-
(可选)为规则输入一个或多个标签。有关更多信息,请参阅 Amazon EventBridge 用户指南中的标记 Amazon EventBridge 资源。
-
选择创建,然后完成向导。
创建一个使用运行手册的 EventBridge 事件(命令行)
以下过程介绍了如何使用 Amazon CLI(在 Linux 或 Windows 上)或 Amazon Tools for PowerShell 创建 EventBridge 事件规则并将运行手册配置为目标。
将运行手册配置为 EventBridge 事件规则的目标
安装并配置 Amazon CLI 或 Amazon Tools for PowerShell(如果尚未执行该操作)。
有关信息,请参阅安装或升级 Amazon 命令行工具。
-
创建一个命令以指定新的 EventBridge 事件规则。以下是一些为您提供帮助的模板命令。
基于计划的触发器
- Linux & macOS
-
aws events put-rule \
--name "rule_name
" \
--schedule-expression "cron_or_rate_expression
"
- Windows
-
aws events put-rule ^
--name "rule_name
" ^
--schedule-expression "cron_or_rate_expression
"
- PowerShell
-
Write-CWERule `
-Name "rule_name
" `
-ScheduleExpression "cron_or_rate_expression
"
以下示例创建一个 EventBridge 事件规则,将在每天上午 9:00 (UTC) 启动该规则。
- Linux & macOS
-
aws events put-rule \
--name "DailyAutomationRule
" \
--schedule-expression "cron(0 9 * * ? *)"
- Windows
-
aws events put-rule ^
--name "DailyAutomationRule
" ^
--schedule-expression "cron(0 9 * * ? *)"
- PowerShell
-
Write-CWERule `
-Name "DailyAutomationRule
" `
-ScheduleExpression "cron(0 9 * * ? *)
"
基于事件的触发器
- Linux & macOS
-
aws events put-rule \
--name "rule_name
" \
--event-pattern "{\"source\":[\"aws.service
\"],\"detail-type\":[\"service_event_detail_type
\"]}"
- Windows
-
aws events put-rule ^
--name "rule_name
" ^
--event-pattern "{\"source\":[\"aws.service
\"],\"detail-type\":[\"service_event_detail_type
\"]}"
- PowerShell
-
Write-CWERule `
-Name "rule_name
" `
-EventPattern '{"source":["aws.service
"],"detail-type":["service_event_detail_type
"]}'
以下示例创建一个 EventBridge 事件规则,将在区域中的任何 EC2 实例更改状态时启动该规则。
- Linux & macOS
-
aws events put-rule \
--name "EC2InstanceStateChanges
" \
--event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
- Windows
-
aws events put-rule ^
--name "EC2InstanceStateChanges
" ^
--event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
- PowerShell
-
Write-CWERule `
-Name "EC2InstanceStateChanges
" `
-EventPattern '{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"]}'
该命令返回新 EventBridge 规则的详细信息,类似于以下内容。
- Linux & macOS
-
{
"RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
}
- Windows
-
{
"RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
}
- PowerShell
-
arn:aws:events:us-east-1:123456789012:rule/EC2InstanceStateChanges
-
创建一个命令以将运行手册指定为在步骤 2 中创建的 EventBridge 事件规则的目标。以下是一些为您提供帮助的模板命令。
- Linux & macOS
-
aws events put-targets \
--rule CW_Event_Rule_Name
\
--targets '{"Arn": "arn:aws:ssm:us-east-1:123456789012
:automation-definition/Runbook_Name
","Input":"{\"RunbookParameter
\":[\"ParameterValue
\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012
:role/AutomationServiceRole
\"]}","Id": "Target_Id
","RoleArn": "arn:aws:iam::123456789012
:role/service-role/CWE_Role_Name_To_Run_Automation
"}'
- Windows
-
aws events put-targets ^
--rule CW_Event_Rule_Name
^
--targets '{"Arn": "arn:aws:ssm:us-east-1:123456789012
:automation-definition/Runbook_Name
","Input":"{\"RunbookParameter
\":[\"ParameterValue
\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012
:role/AutomationServiceRole
\"]}","Id": "Target_Id
","RoleArn": "arn:aws:iam::123456789012
:role/service-role/CWE_Role_Name_To_Run_Automation
"}'
- PowerShell
-
$Target = New-Object Amazon.CloudWatchEvents.Model.Target
$Target.Id = "Target_Id
"
$Target.Arn = "arn:aws:ssm:us-east-1:123456789012
:automation-definition/Runbook_Name
"
$Target.RoleArn = "arn:aws:iam::123456789012
:role/service-role/CWE_Role_Name_To_Run_Automation
"
$Target.Input = '{"RunbookParameter
":["ParameterValue
"],"AutomationAssumeRole":["arn:aws:iam::123456789012
:role/AutomationServiceRole
"]}'
Write-CWETarget `
-Rule "CW_Event_Rule_Name
" `
-Target $Target
以下示例创建一个 EventBridge 事件目标,它使用 AWS-StartEC2Instance
运行手册启动指定的实例 ID。
- Linux & macOS
-
aws events put-targets \
--rule DailyAutomationRule \
--targets '{"Arn": "arn:aws:ssm:us-east-1:123456789012:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
- Windows
-
aws events put-targets ^
--rule DailyAutomationRule ^
--targets '{"Arn": "arn:aws:ssm:us-east-1:123456789012:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
- PowerShell
-
$Target = New-Object Amazon.CloudWatchEvents.Model.Target
$Target.Id = "Target1"
$Target.Arn = "arn:aws:ssm:us-east-1:123456789012:automation-definition/AWS-StartEC2Instance"
$Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"
$Target.Input = '{"InstanceId":["i-02573cafcfEXAMPLE"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}'
Write-CWETarget `
-Rule "DailyAutomationRule" `
-Target $Target
系统将返回类似于以下内容的信息。
- Linux & macOS
-
{
"FailedEntries": [],
"FailedEntryCount": 0
}
- Windows
-
{
"FailedEntries": [],
"FailedEntryCount": 0
}
- PowerShell
-
如果命令在 PowerShell 中成功,则没有输出。