AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::Events::Rule

AWS::Events::Rule 资源创建一个规则,此规则将匹配传入 Amazon CloudWatch Events (CloudWatch Events) 事件,并将这些事件路由到一个或多个目标以供处理。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的使用 CloudWatch Events

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::Events::Rule", "Properties" : { "Description" : String, "EventPattern" : JSON object, "Name" : String, "ScheduleExpression" : String, "State" : String, "Targets" : [ Target, ... ] } }

YAML

Type: "AWS::Events::Rule" Properties: Description: String EventPattern: JSON object Name: String ScheduleExpression: String State: String Targets: - Target

属性

Description

规则用途的描述。

Required: No

Type: String

更新要求无需中断

EventPattern

描述 CloudWatch Events 路由到指定目标的事件。这些路由的事件是匹配的事件。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的事件和事件模式

Required: Conditional。您必须指定此属性和/或 ScheduleExpression 属性。

Type: JSON object

更新要求无需中断

Name

规则的名称。如果不指定名称,则 AWS CloudFormation 生成一个唯一物理 ID 并将该 ID 用作规则名称。有关更多信息,请参阅 名称类型

重要

如果指定一个名称,您将无法执行需要替换此资源的更新。您可以执行不需要或者只需要部分中断的更新。如果必须替换资源,请指定新名称。

Required: No

Type: String

更新要求替换

ScheduleExpression

确定 CloudWatch Events 运行规则的时间的计划或速率(频率)。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的规则的计划表达式语法

Required: Conditional。您必须指定此属性和/或 EventPattern 属性。

Type: String

更新要求无需中断

State

指示是否启用规则。有关有效值的信息,请参阅 Amazon CloudWatch Events API 参考PutRule 操作的 State 参数。

Required: No

Type: String

更新要求无需中断

Targets

CloudWatch Events 将事件路由到并在触发规则时调用的资源(例如 Lambda 函数或 Kinesis 流)。有关有效目标的信息,请参阅 Amazon CloudWatch Events API 参考 中的 PutTargets 操作。

注意

只能在 AWS 管理控制台中创建带内置目标的规则。

Required: No

Type: Amazon CloudWatch Events 规则目标 列表

更新要求无需中断

返回值

Ref

当向 Ref 内部函数提供此资源的逻辑 ID 时,Ref 将返回事件规则 ID,例如 mystack-ScheduledRule-ABCDEFGHIJK

有关使用 Ref 功能的更多信息,请参阅参考

Fn::GetAtt

Fn::GetAtt 返回一个此类型指定属性的值。以下为可用属性和示例返回值。

Arn

事件规则的 Amazon 资源名称 (ARN),例如 arn:aws-cn:events:us-east-2:123456789012:rule/example

有关使用 Fn::GetAtt 的更多信息,请参见 Fn::GetAtt

示例

定期调用 Lambda 函数

下面的示例创建一个规则,此规则每 10 分钟调用指定的 Lambda 函数一次。PermissionForEventsToInvokeLambda 资源向 CloudWatch Events 授予调用关联函数的权限。

JSON

"ScheduledRule": { "Type": "AWS::Events::Rule", "Properties": { "Description": "ScheduledRule", "ScheduleExpression": "rate(10 minutes)", "State": "ENABLED", "Targets": [{ "Arn": { "Fn::GetAtt": ["LambdaFunction", "Arn"] }, "Id": "TargetFunctionV1" }] } }, "PermissionForEventsToInvokeLambda": { "Type": "AWS::Lambda::Permission", "Properties": { "FunctionName": { "Ref": "LambdaFunction" }, "Action": "lambda:InvokeFunction", "Principal": "events.amazonaws.com", "SourceArn": { "Fn::GetAtt": ["ScheduledRule", "Arn"] } } }

YAML

ScheduledRule: Type: "AWS::Events::Rule" Properties: Description: "ScheduledRule" ScheduleExpression: "rate(10 minutes)" State: "ENABLED" Targets: - Arn: Fn::GetAtt: - "LambdaFunction" - "Arn" Id: "TargetFunctionV1" PermissionForEventsToInvokeLambda: Type: "AWS::Lambda::Permission" Properties: FunctionName: Ref: "LambdaFunction" Action: "lambda:InvokeFunction" Principal: "events.amazonaws.com" SourceArn: Fn::GetAtt: - "ScheduledRule" - "Arn"

调用 Lambda 函数以响应事件

下面的示例创建一个规则,此规则在任何 EC2 实例的状态变为 stopping 时调用指定的 Lambda 函数。

JSON

"EventRule": { "Type": "AWS::Events::Rule", "Properties": { "Description": "EventRule", "EventPattern": { "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ], "detail": { "state": [ "stopping" ] } }, "State": "ENABLED", "Targets": [{ "Arn": { "Fn::GetAtt": ["LambdaFunction", "Arn"] }, "Id": "TargetFunctionV1" }] } }, "PermissionForEventsToInvokeLambda": { "Type": "AWS::Lambda::Permission", "Properties": { "FunctionName": { "Ref": "LambdaFunction" }, "Action": "lambda:InvokeFunction", "Principal": "events.amazonaws.com", "SourceArn": { "Fn::GetAtt": ["EventRule", "Arn"] } } }

YAML

EventRule: Type: "AWS::Events::Rule" Properties: Description: "EventRule" EventPattern: source: - "aws.ec2" detail-type: - "EC2 Instance State-change Notification" detail: state: - "stopping" State: "ENABLED" Targets: - Arn: Fn::GetAtt: - "LambdaFunction" - "Arn" Id: "TargetFunctionV1" PermissionForEventsToInvokeLambda: Type: "AWS::Lambda::Permission" Properties: FunctionName: Ref: "LambdaFunction" Action: "lambda:InvokeFunction" Principal: "events.amazonaws.com" SourceArn: Fn::GetAtt: - "EventRule" - "Arn"

通知主题以响应日志条目

下面的示例创建一个规则,此规则在 AWS CloudTrail 日志条目包含 Root 用户发出的调用时通知 Amazon Simple Notification Service 主题。

JSON

"OpsEventRule": { "Type": "AWS::Events::Rule", "Properties": { "Description": "EventRule", "EventPattern": { "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "userIdentity": { "type": [ "Root" ] } } }, "State": "ENABLED", "Targets": [ { "Arn": { "Ref": "MySNSTopic" }, "Id": "OpsTopic" } ] } }

YAML

OpsEventRule: Type: "AWS::Events::Rule" Properties: Description: "EventRule" EventPattern: detail-type: - "AWS API Call via CloudTrail" detail: userIdentity: type: - "Root" State: "ENABLED" Targets: - Arn: Ref: "MySNSTopic" Id: "OpsTopic"

本页内容: