メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::Events::Rule

AWS::Events::Rule リソースは、受信する Amazon CloudWatch Events (CloudWatch イベント) イベントに一致し、それらをターゲットにルーティングして処理するルールを作成します。詳細については、Amazon CloudWatch ユーザーガイドCloudWatch イベント の使用を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

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

YAML

Copy
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 イベント がどのイベントを指定ターゲットにルーティングするかを説明します。ルーティングされるイベントは一致するイベントです。詳細については、Amazon CloudWatch ユーザーガイドイベントとイベントパターンを参照してください。

Required: Conditional。このプロパティまたは ScheduleExpression プロパティ、またはその両方を指定する必要があります。

Type: JSON object

更新に伴う要件: 中断はありません。

Name

ルールの名前。名前を指定しない場合、AWS CloudFormation は一意の物理 ID を生成し、その ID をルール名として使用します。詳細については、「Name タイプ」を参照してください。

重要

名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。

Required: No

Type: String

更新に伴う要件: 置換

ScheduleExpression

CloudWatch イベント でルールを実行するタイミングを決めるスケジュールまたは割合 (頻度)。詳細については、Amazon CloudWatch ユーザーガイドルールのスケジュール式の構文を参照してください。

Required: Conditional。このプロパティまたは EventPattern プロパティ、またはその両方を指定する必要があります。

Type: String

更新に伴う要件: 中断はありません。

State

ルールが有効かどうかを示します。有効な値については、Amazon CloudWatch Events API リファレンスPutRule アクションの State パラメーターを参照してください。

Required: No

Type: String

更新に伴う要件: 中断はありません。

Targets

CloudWatch イベント がイベントをルーティングし、ルールがトリガーされたときに起動する Lambda 関数や Kinesis ストリームなどのリソースです。有効なターゲットの詳細については、Amazon CloudWatch Events API リファレンスPutTargets アクションを参照してください。

注記

組み込みターゲットでのルール作成は、AWS マネジメントコンソールでのみサポートされています。

Required: No

Amazon CloudWatch Events ルールターゲットType: リスト

更新に伴う要件: 中断はありません。

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref により mystack-ScheduledRule-ABCDEFGHIJK のようなイベントルール ID が返されます。

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

Arn

イベントルールの Amazon リソースネーム (ARN) (arn:aws:events:us-east-2:123456789012:rule/example など)。

Fn::GetAtt の使用の詳細については、「Fn::GetAtt」を参照してください。

定期的に Lambda 関数を呼び出す

次の例では、10 分ごとに指定の Lambda 関数を実行するルールを作成します。PermissionForEventsToInvokeLambda リソースは CloudWatch イベント に関連機能を実行する権限を付与します。

JSON

Copy
"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

Copy
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

Copy
"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

Copy
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

Copy
"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

Copy
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"

このページの内容: