翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EventBridge コンソールでルールの構築とテストを手動で行うことができ、イベントパターンを改良する時の開発プロセスに役立ちます。ただし、アプリケーションをデプロイする準備ができたら、すべてのサーバーレスリソースを一貫して起動できる AWS SAM のようなフレームワークを使用する方が簡単です。
このサンプルアプリケーション
このサンプルアプリケーションのチュートリアルについては、チュートリアル: Amazon EventBridge サンプルアプリケーションを作成する を参照してください。
EventBridge と AWS SAM テンプレートを使用する方法は 2 つあります。1 つのルールによって 1 つの Lambda 関数が呼び出される単純な統合では、[Combined template] (組み合わせテンプレート) アプローチをお勧めします。複雑なルーティングロジックがある場合、または AWS SAM テンプレート外のリソースに接続する場合は、分離されたテンプレートアプローチが適しています。
アプローチ:
組み合わせテンプレート
最初のアプローチでは、Events
プロパティを使用して、EventBridge ルールを設定します。次のサンプルコードでは、Lambda 関数を呼び出すイベントを定義します。
注記
この例では、すべての AWS アカウントに存在するデフォルトのイベントバスにルールを自動的に作成します。ルールをカスタムイベントバスに関連付けるには、EventBusName
をテンプレートに追加します。
atmConsumerCase3Fn:
Type: AWS::Serverless::Function
Properties:
CodeUri: atmConsumer/
Handler: handler.case3Handler
Runtime: nodejs12.x
Events:
Trigger:
Type: CloudWatchEvent
Properties:
Pattern:
source:
- custom.myATMapp
detail-type:
- transaction
detail:
result:
- "anything-but": "approved"
この YAML コードは、EventBridge コンソールのイベントパターンと同等です。YAML では、イベントパターンを定義するだけで、必要なアクセス許可を持つ IAM ロール AWS SAM が自動的に作成されます。
分離テンプレート
で EventBridge 設定を定義する 2 番目のアプローチでは AWS SAM、テンプレート内でリソースがより明確に分離されます。
-
まず、Lambda 関数を定義します。
atmConsumerCase1Fn: Type: AWS::Serverless::Function Properties: CodeUri: atmConsumer/ Handler: handler.case1Handler Runtime: nodejs12.x
-
次に、
AWS::Events::Rule
リソースを使用してルールを定義します。プロパティはイベントパターンを定義し、ターゲットを指定することもできます。複数のターゲットを明示的に定義できます。EventRuleCase1: Type: AWS::Events::Rule Properties: Description: "Approved transactions" EventPattern: source: - "custom.myATMapp" detail-type: - transaction detail: result: - "approved" State: "ENABLED" Targets: - Arn: Fn::GetAtt: - "atmConsumerCase1Fn" - "Arn" Id: "atmConsumerTarget1"
-
最後に、EventBridge にターゲットを呼び出すアクセス許可を付与する
AWS::Lambda::Permission
リソースを定義します。PermissionForEventsToInvokeLambda: Type: AWS::Lambda::Permission Properties: FunctionName: Ref: "atmConsumerCase1Fn" Action: "lambda:InvokeFunction" Principal: "events.amazonaws.com" SourceArn: Fn::GetAtt: - "EventRuleCase1" - "Arn"