Upgrade to Pro — share decks privately, control downloads, hide ads and more …

見せてやるよ、 EventBridge の本気ってやつをな / The art of Even...

kensh
December 17, 2022

見せてやるよ、 EventBridge の本気ってやつをな / The art of EventBridge

動画はこちら
https://youtu.be/BdSB9yBilxY?t=3812

見せてやるよ、EventBridge の本気ってやつをな / The art of EventBridge

kensh

December 17, 2022
Tweet

More Decks by kensh

Other Decks in Technology

Transcript

  1. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. 見せてやるよ、 EventBridge の本気ってやつをな The art of EventBridge S E R V E R L E S S D A Y S 2 0 2 2 @toricls @afukui @_kensh
  2. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. 2 2 Introduce our events. @toricls @afukui @_kensh Kensuke Shimokawa Snr. Serverless Specialist Atsushi Fukui Snr. Developer Specialist Tori Hara CTO at Kaminashi
  3. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 3 EventBridge を使ってますか? >
  4. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. EventBridge を使ってますか? 4
  5. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Amazon EventBridge って何 ? 5 イベント を 橋渡し するサービス Event Bridge イベント 発行側 イベント 受信・活用
  6. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 6 “イベント” 状態が変更されたことを⽰すシグナル JavaScript イベント • ユーザーアクション: ボタンが押されたとき、なにか入力されたとき… • システムイベント: 画面がロードされたとき、データを受け取ったとき… • カスタムイベント: 任意にシグナルを発火 アプリケーション固有イベント • 在庫が 10を下回ったとき、お客様がいくつかのページを繰り返し見ているとき…
  7. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 異種環境間をイベントでつなぎ、アクションへ 7 イベント 発行側 イベント 受信・活用 &$αΠτ $3. $9ϓϥοτϑΥʔϜ • 認証、セキュリティ • ネットワーク不通への対処 • サーバー障害対応 • いつ来るかわからない イベントを待機 • 処理性能の担保 :
  8. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 例えば… 8 $3. 顧客情報更新 → データ伝播 → 発注処理へ &$αΠτ 新規商品登録 → 登録画像を AI サービスで 画像解析し タグを追加 Πϯγσϯτ ؅ཧ 新規インシデント → 営業への通知 → 優先度の更新 ೝূ 不正イベント → 緊急の制御を 各システムへ 展開 システム 連携 付加価値 の追加 情報 活用 リスク 低減
  9. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Amazon EventBridge 9 AWS Cloud AWS Cloud AWS Cloud Amazon EventBridge 異なるチーム間の Push型での情報連携(イベント通知)を可能にするイベントバス
  10. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. Event Source Mapping as a Service 10
  11. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 11 普段どうやって、 Stream とか Queue のイベント受けてますか?
  12. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Glue Code としての Lambda 12 CloudWatch Logs poller
  13. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. AWS Lambda の Invoke API 13 def lambda_handler(event, context): # do something return { … } handler Invoke API Client Service 実行環境 Runtime API Lambda Service Lambda Function Instance
  14. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. AWS Lambda の Event Source Mapping 14 def lambda_handler(event, context): # do something return { … } handler Service 実行環境 Runtime API Lambda Service Lambda Function Instance poller Event Source Mapping
  15. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Amazon EventBridge Pipes 15 イベントプロデューサーとイベントコンシューマのサービス間連携を簡素化 • イベントバス不要で、ソースとターゲットを シームレスに接続する構成が可能に • イベント駆動アプリケーションの開発を支援 • ターゲットに送信する前にイベントの • イベントのバッファフィルタリング • 変換 • 以下のサービスの呼び出しによる追加データの付与 • Amazon API Gateway • AWS Step Functions • API Destinations • リングによるバッチ処理も可能 • ソース側でイベントの順序性が保証されている場合、 順序を保ったままターゲットに配信 ソースとして利用可能なサービス Amazon SQS, Amazon Kinesis, Amazon DynamoDB, Amazon Managed Streaming for Apache Kafka, セルフマネージド型 Apache Kafka, Amazon MQ ターゲットとして利用可能なサービス Amazon SQS, Amazon ECS, AWS Step Functions など イベントバスで利用できるターゲットと同様
  16. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. EventBridge Pipes を構成する要素 16 API Destination API Gateway Lambda Batch CloudWatch ECS EventBridge Bus Kinesis Data Firehose Inspector Kinesis Data Streams Redshift SageMaker pipeline SNS SQS Step Functions filter Step Functions Lambda API Destination API Gateway transform transform EventBridge Pipes enrich
  17. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 配信セマンティクス 17 At-least once 配信 イベントは、ターゲットに複数回配信される ことも。処理されたイベントの状態を追跡す ることによって重複イベントを検出するロ ジックを含める (冪等性要検討) Exactly-once 配信* AWSサービスに重複排除に使用する識別子を 渡すことで重複排除 * Lambdaでリトライ設定している場合は、At-least once • Amazon EventBridge • Amazon SNS 標準トピック • Amazon SQS 標準 キュー • Amazon Kinesis • Amazon SNS FIFO トピック • Amazon SQS FIFO キュー
  18. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 順序セマンティクス* 18 順序保証なし イベント/メッセージが順序保証なしで配信 順序保証 イベントは、パーティション、メッセージグ ループなどの中で順番に配信 (グローバルな順序保証はありません) • Amazon EventBridge • Amazon SNS 標準トピック • Amazon SQS 標準 キュー • Amazon Kinesis • Amazon SNS FIFO トピック • Amazon SQS FIFO キュー • Amazon EventBridge Pipes * 順不同のイベント処理ロジックが受入可能かは、ビジネス要件次第 となります。順不動なイベントを処理するようにアプリケーション を設計できない場合は、代わりにオーケストレーションも検討 ※ Pipesソース側でイベントの順序性が保証されて いる場合、順序を保ったままターゲットに配信
  19. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 19 並列ジョブをどうやって実装する?
  20. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Job のワークロードタイプ 20 ジョブ インスタンス 密結合 ジョブ インスタンス ジョブ ジョブ ジョブ ジョブ ジョブ インスタンス インスタンス 疎結合 • 大規模な単一のジョブを高速に実行する ために複数のノードを跨いで処理 • ノード間通信ボトルネックによるスケー ル性能限界 インスタンス • 小規模な処理を大量に実行するために、 複数のノードで独立したジョブを処理 • ノード間の通信が発生しないためスケー ルメリットがある • 関数レベルに小規模なジョブに分割 • メッセージ単位の処理粒度 • ノードに直接データ送信してからジョブ 実行するのではなく、イベントドリブン にメッセージを連携し、メッセージから データを取得して実行
  21. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Lambda 関数ジョブの並列化 with Map 21 AWS Step Functions workflow Start End Transform Load S3 Extract function Transform function Load function Transform Load Extract Transform Load Map Lambda関数でのETLを Map State により並列化 [data1, data2, …, dataN] https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-map-state.html
  22. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. AWS Step Functions Distributed Mode 22 • 数千の並列処理を実行可能な Distributed モードが選択可能に • 入力内の配列または S3 バケットをデータソースとして利用可能 • 特定のファイル/プレフィックス、JSON/CSV、インベントリファイル をサポート • 大規模なデータセットに対してイテレーションを実行 • ex. 特定のプレフィックス配下にある画像ファイルのサムネイル作成 • ex. CSV 形式で出力された巨大なログファイルの分析 • 各イテレーションは子ワークフローの実行として記録される • 処理の結果は集約して S3 にファイルとして出力できる • 最大並列実行数や許容可能な失敗数の閾値、リトライを設定可能 • デフォルトは 10,000 並列実行 • 実行ステータスは DescribeMapRun API で取得
  23. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. S3 に置かれた JSON ファイルに対する処理 24
  24. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 各イテレーションの実行ステータスの確認 25 DescribeMapRun API
  25. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. One time event 26
  26. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 27 時間指定バッチ(夜間バッチとか)使ってる?
  27. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. バッチ処理からイベント駆動処理へ 28 time process 01:00 05:00 バッチ処理 TimeWindow処理 イベント駆動処理
  28. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Amazon EventBridge Scheduler 29 • マネージドなサーバーレススケジューラー • タスクの作成、実行、管理を行うことができる 例:毎日 0 時に特定の Lambda 関数を実行 例: 2022/12/31 15:00 に EC2 インスタンスを停止 • 270+ の AWS サービス、6000+ の API アクションを呼び出すことが可能 • 少なくとも 1 回 (at-least-once) の信頼性のある配信を保証 • リトライポリシー、デッドレターキューを設定可能 • マネジメントコンソール、AWS CLI、AWS SDK から設定可能 • ユースケース:運用の自動化、バッチ処理、ビジネスロジックの遅延実行 ex. ユーザーが解約を実行 → 残りの契約期間が過ぎた後にユーザー削除等を実施
  29. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 利用イメージ 30 Lambda 関数 Amazon EventBridge Scheduler Lambda 関数 DynamoDB テーブル イベント 解約日に設定された スケジュールが発火 ユーザーがサブスクリプションを解約 サブスクリプションの削除 ステータスの変更など (アプリケーション) スケジュールを作成 ターゲットを 呼び出し CreateSchedule API
  30. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. スケジュールパターン 31 1. Rate-based 指定の期間内で繰り返し定期実行 2. Cron-based cron 式による複雑な定期実行 3. One-time 指定されタイミングで 1 回だけ実行 rate(5 minutes) rate(12 hours) rate(1 days) * 秒レベルの実行は未サポート * 分 / 時間 / 日 のみ選択可能 cron(0 8 * * * *) cron(15 10 ? * 6L 2022-2023) * 各種ワイルドカードをサポート * UTC または指定のタイムゾーン at(2022-11-20T13:00:00) * 有効な日付および時間を指定 * UTC または指定のタイムゾーン * 秒は指定しても 0 に切り捨てられる
  31. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. フレックスタイムウィンドウ 32 02:00 オフの場合 指定された時間ぴったりに スケジュールされる 02:00 オンの場合 指定された時間 + フレックスタイム ウィンドウの時間内のどこかで スケジュールされる * 15 分、30 分、1 時間、2 時間、4 時間から選択可能 02:15 分散システムという都合上、複数回配信される可能性がある (at-least-once) タイムウィンドウ内にスケジュールを分散させることで、複数回の配信確率を下げるための仕組み 時間ぴったりに起動する必要がなければ使っておくのがおすすめ
  32. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. ターゲットとして指定可能な AWS サービス 33 1. Templated targets 2. Universal targets 270+ services 6000+ APIs 20+ targets • Lambda Invoke や SQS SendMessage などのよく使われる API セットをサポート • 簡単な設定で利用を開始できる • AWS SDK を介して幅広い サービスおよび API をサポート • パラメータを自分でカスタマイズ • サポートされているサービス一覧
  33. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 料金 34 • スケジュールの呼び出し回数に応じて課金 • 月あたり 14,000,000 回までは無料で利用可能 • その後 100 万回呼び出しごと料金が発生 Ø オレゴンリージョンの場合:$1.00 Ø 東京リージョンの場合:$1.25 * 2022/11/25 時点
  34. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. API Destination 35
  35. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Webhook を投げる側 36 AWS Step Functions Express Workflow Amazon API Gateway HTTP Endpoint Lambda function Amazon SNS Amazon EventBridge Lambda function HTTP Endpoint ⾮同期 ⾮同期 ⾮同期 Subscription API Destination HTTP Integration import requests url = 'https://example.com/' response = requests.get(url) 同期 retry rate retry rate auth auth DLQ retry DLQ 外部 API 呼び出しを⾮同期的に扱えないか waiting… Round-trip latency
  36. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Webhook を投げる側 37 function Amazon EventBridge ⾮同期 API Destination SaaS や 別システムで公開して いる Webhook にメッセージを 送信する際に EventBridge API Destination が利用できる
  37. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. Event duplication 38
  38. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 39 イベントを複製したい場合どうする?
  39. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Archive / Replay 40 function table function table Event ユーザー定義 Rule Archive Rule event bus ターゲット ターゲット ユーザー定義 Rule Archive Replay now Replay end time Replay start time • Event Bus に対して Archive設定 をしておくことで、Archive rule にマッチしたイベントを複製し アーカイブ • アーカイブされたイベントは、 アーカイブ時間(start – end)を指 示することで Replay 可能 00:15 00:30
  40. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. global endpoints for Amazon EventBridge / cross region 41 https://aws.amazon.com/jp/blogs/compute/introd ucing-global-endpoints-for-amazon-eventbridge
  41. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. Cross xx デザインパターン 42
  42. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 43 普段どうやって、 どの粒度でサービス分割してますか?
  43. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 論理アーキテクチャ 44 Orange Service Context Blue service team Purple service team Orange service team P-E2 S-E2 S-E2 S-E3 P-E3 P-E1 S-E1 Purple service context Blue service context = Publisher = Subscriber E = Event S P
  44. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. アーキテクチャアプローチ / Centralized vs Distributed 45 メリット デメリット Centralized • すべてのルーティングを集中管理し、すべての 通信を 1 つのイベント バスに統合 • 一元的なリソース管理、アクセス許可、および 展開が可能 • 最小限の変更でアプリケーションを簡単に統合 • すべてのルーティングが集中化 • アプリが自律性を獲得し、ビジネスロジック の自由な組み替えを妨げます。 • 単一障害点 Distributed • パブリッシャーがイベント バスを所有 • ソースと宛先の独立した進化を可能にするよう に設計 • 単一障害点なし • サービスの自律性の向上 • 集中型ソリューションよりも分散型ソリュー ションの方が設計が難しい • 管理するリソースが増える
  45. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. [Centralized] Single-bus, single-account pattern 46 Orange service context Blue service team Purple service team Orange service team Service stack P-E2 S-E2 S-E2 S-E3 P-E1 S-E1 Purple service context Blue service context E1 rule DevOps team Event bus stack E2 rule E3 rule AWS account 特徴 • 各サービスからのすべての イベントは、アカウント内 の単一のバスを介してルー ティングされる • 対象のサービスを簡単に呼 び出すことが可能 チーム • 各リソース スタックを運用 チームが集中管理 • サービス チームは 集中管理 チームと協力してリソース の仕様や用件を調整 ポイント • 開発速度とリソース管理効 率はトレードオフの関係 P-E3 Service stack DevOps event bus Service stack
  46. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. [Centralized] Single-bus, multi-account pattern 47 AWS account Orange service context P-E2 S-E2 S-E2 P-E1 S-E1 Purple service context Blue service context AWS account AWS account AWS account S-E3 特徴 • AWS アカウントの境界を除 いてアーキテクチャは同一 チーム • イベント バス リソース ス タックは「DevOps」チーム によって管理されます • サービス チームは DevOps チームと協力してリソース のニーズを調整します ポイント • 開発速度とリソース管理効 率はトレードオフの関係 P-E3 Orange service team Service stack E1 rule DevOps team Event bus stack E2 rule E3 rule DevOps event bus Blue service team Service stack Purple service team Service stack
  47. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. [Centralized] Single-bus*, multi-account pattern 48 AWS account Orange service context P-E2 S-E2 S-E2 P-E3 P-E1 S-E1 Blue service context AWS account AWS account AWS account 特徴 • アカウント間でイベントを転 送するために複数のイベント バスが必要になる • ルーティング ルールは引き 続き中央バス経由 • ターゲット、ルールはサービ スアカウントのイベントバス に移行 チーム • サービスチームはターゲット 構成を管理しますが、ルー ティングは管理しません ポイント • クロスアカウントのポリシー 管理が必要 S-E3 Purple service context Blue service team Service stack Orange service team Service stack E1 rule DevOps team Event bus stack E2 rule E3 rule DevOps event bus Purple service team Service stack
  48. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. EventBridge リソースポリシー 49 以前: • すべての EventBridge API 呼び出しは、 発信者アカウントに限定 • 呼び出し元は、別のアカウントでイベ ント バスまたはルールと対話するため に IAM ロールを引き受ける必要があり ました。 • イベント バス リソース ポリシーは、 PutEvents アクションのみをサポート • リソース ポリシーは、クロスアカウン ト イベント バス ターゲットにのみ使 用される。 今: • API 呼び出し は、別のアカウントのイ ベント バスを対象とできる。 (PutEvents、PutRule、PutTarget など) • リソース ポリシーは、すべての API ア クションをサポート (PutPermissions を除く) • リソース ポリシーでの組織とタグのサ ポート
  49. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. [Distributed] Multi-bus, single account pattern 50 Blue service context Orange service context P-E2 S-E2 S-E2 P-E3 P-E1 S-E1 Purple service context AWS account E1 rule E3 rule E2 rule Orange service event bus Purple service event bus Blue service event bus 特徴 • サービスチームが所有する 複数のイベントバス • 集中ルーティングなし チーム • チームはサービス イベント バスを管理します • サービスチームは互いに協 力してリソース資料を調整 ポイント • アプリケーションとチーム の自律性の向上 • 開発速度の向上 S-E3 Blue service team Service stack Orange service team Service stack Purple service team Service stack
  50. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. [Distributed] Multi-bus, multi-account pattern 51 Blue service context Orange service context P-E2 S-E2 S-E2 P-E3 P-E1 S-E1 Purple service context AWS account E1 rule E3 rule E1 rule Purple service event bus Blue service event bus E2 rule E2 rule AWS account AWS account E2 rule E2 rule 特徴 • AWS アカウントの境界を除 いて、アーキテクチャは同一 • クロスアカウントのイベント 配信を促進するために追加の バスは必要ありません チーム • サービス チームは、サービス イベント バスと、イベントを 送受信するためのすべてのリ ソースを管理します。 ポイント • 分散ルールを管理する際の追 加のオーバーヘッド S-E3 E3 rule Blue service team Service stack Orange service team Service stack Purple service team Service stack Orange service event bus
  51. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 52 Single-bus, single-account pattern Single-bus, multi-account pattern Multi-bus, multi-account pattern Multi-bus, single account pattern
  52. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. クロスアカウントループ/ Bus ホッピング 53 Blue service context P-E1 S-E1 Purple service context AWS account E1 rule DevOps event bus Blue service event bus AWS account AWS account Blue service event bus E1 rule E1 rule Blue service team Purple service team Amazon EventBridge は推移的ルーティングしてしまう懸念はない
  53. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. クロスアカウントループ/ Bus ホッピング 54 Blue service context P-E1 S-E1 Purple service context AWS account E1 rule AWS account AWS account E1 rule E1 rule AWS Lambda Blue service team Purple service team DevOps event bus Blue service event bus Blue service event bus Amazon EventBridge は推移的ルーティングしてしまう懸念はない Bus はプロキシ (AWS Lambda など) によって再発行することにより、推移ホップさせることも可能
  54. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. Schema 55
  55. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 56 イベントスキーマ管理難しくない? どうやってる?
  56. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Event を利⽤した連携での課題例 57 Event よくある課題 • Event の取り扱い、管理どうする? • 開発環境で簡単にSchemaを使いたい • SchemaをEventから発⾒したい • Event Schemaの検証をしたい
  57. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Amazon EventBridge Schema Registry 58 Schema Registry • EventBridge (CloudWatch Events) でやり取りされる様々なデータのスキーマを、 コンソールからまとめて公開 • e.g. EC2 インスタンスの状態変化通知のスキーマ プロパティの⼀覧とそれぞれ の型 (String や独⾃の型など) 独⾃の型の定義も 確認できる https://aws.amazon.com/jp/blogs/news/new-amazon-eventbridge-schema-registry-is-now-generally-available/
  58. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Schema Registry (OpenAPI / JSON Schema) 59 function table function table SaaS Event ユーザー定義 Rule Schema registry SaaS event bus ターゲット ターゲット OpenAPI version3.0.3 JSON Schema Draft 4
  59. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Event を利⽤した連携での課題例 60 Event よくある課題 • Event の取り扱い、管理どうする? • 開発環境で簡単にSchemaを使いたい • SchemaをEventから発⾒したい • Event Schemaの検証をしたい
  60. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Schema Code Bindings 61 Code Bindings • スキーマ定義を言語ご とにダウンロード可能 • Java 8、Python 3.6、 TypeScript 3、Go1 の 4 種類に対応 アプリケーション開発の 際に、ダウンロードした スキーマ定義をインポー トしておくことで、コー ド補完やコンパイル時の エラー検出に役立てるこ とができる
  61. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Event を利⽤した連携での課題例 62 Event よくある課題 • Event の取り扱い、管理どうする? • 開発環境で簡単にSchemaを使いたい • SchemaをEventから発⾒したい • Event Schemaの検証をしたい
  62. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Amazon EventBridge Schema Discovery 63 Schema Discovery SaaS から EventBridge へ送信されるデータについては、EventBridge へ流入するデータからOpenAPI形式の スキーマを自動生成 e.g. MongoDB Atlas (MongoDB 社にて提供されるマネージドサービス) へデータの CRUD 処理が行われた場合のスキーマ プロパティの⼀覧とそれぞれの型 (String や独⾃の型など) AWS のサービスと全く同じ形で、 パートナーから送信されるデータ のスキーマも確認できる
  63. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. OpenAPI vs JSON Schema 64 JSON Schema • $schema が利用可能 • $schemaは、JSONフラグメントが実際にはJSONス キーマの一部であることを宣言するために使用 • Hyper-Schema が利用可能 • JSON Hyper-Schemaは、HTTPなどのハイパーメディ アを介してリモートJSONリソースを処理して、 JSONドキュメントに注釈を付けるためのJSONスキ ーマボキャブラリー • 実行時のバリデーションが可能 • より高速な ビルド時間が期待できる
  64. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Schema Discovery (OpenAPI) 65 Schema Discoverer function table function table SaaS Event ユーザー定義 Rule Discoverer Rule Discovered schema registry SaaS event bus ターゲット ターゲット OpenAPI version3.0.3
  65. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Event を利⽤した連携での課題例 66 Event よくある課題 • Event の取り扱い、管理どうする? • 開発環境で簡単にSchemaを使いたい • SchemaをEventから発⾒したい • Event Schemaの検証をしたい
  66. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Schema Validation (JSON Schema) 67 function table function table Event ユーザー定義 Rule Schema registry SaaS event bus ターゲット ターゲット JSON Schema Draft 4 クライアント JSON Schema Draft 4
  67. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 68 "definitions": { "person": { "id": "#person", "type": "object", "properties": { "id": { "type": "integer" }, "name": { "pattern": "^[A-Za-z_]+$", "type": ["string", "null"] }, "email": { "format": "email", "type": ["string", "null"] }, "address": { "minLength": 3, "maxLength": 1000000, "type": "string" } } } }, >>> from jsonschema import validate >>> # A sample schema, like what we'd get from json.load() >>> schema = { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "pattern": "^[A-Za-z_]+$", "type": ["string", "null"] } } } } >>> # If no exception is raised by validate(), the instance is valid. >>> validate( instance={"name" : ”Tom", ”id" : 1001}, schema=schema) >>> validate( instance={"name" : ”Tom", ”id" : “Invalid” }, schema=schema, ... ) # doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... ValidationError: 'Invalid' is not of type 'number' https://github.com/Julian/jsonschema JSON Schema Validator https://json-schema.org/implementations.html#validators Schema Validation (JSON Schema)
  68. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. Key takeaways 69
  69. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Key takeaways 70 • EventBridge は、イベント駆動アーキテクチャの入口サービス • システムを疎結合に保つのに有用 • 豊富で多様なサブ機能群 • Archive / Replay • API Destination • Scheduler • Pipes • Global endpoint • Schema regitry
  70. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Thank you! © 2022, Amazon Web Services, Inc. or its affiliates. @toricls @afukui @_kensh
  71. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. Appendix 72
  72. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. EventBridge Rules でも同様のことができていたのでは? 73 • できてた • 今回のリリースは、スケジュール機能に特化した、既存機能の拡張という位置付け • 今後スケジュールベースでターゲットを呼び出す場合は、EventBridge Scheduler の方を利用する ことが推奨されている • 既存の EventBridge Rules を EventBridge Scheduler に移行するような方法は特にない • そもそも API が異なる Ø EventBridge ⇨ events.us-east-1.amazonaws.com Ø EventBridge Scheduler ⇨ scheduler.us-east-1.amazonaws.com • ただしマネジメントコンソールでは、どちらの機能も EventBridge コンソールに集約されている
  73. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. EventBridge Scheduler の強み 74 • 定期実行に加えて、1 回限りの実行をサポート • UTC 以外の様々なタイムゾーンおよびサマータイムをサポート • 充実したサービス連携 • EventBridge Rules と比較して大量のスケジュールの定義が可能
  74. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. タイムゾーンについて 75 • IANA によってメンテされている タイムゾーンデータベース を使用 ex. America/New_York, Asia/Tokyo, Japan • サマータイムが導入されているタイムゾーンでは以下のルールが適用される Ø サマータイム開始時 ⇨ 存在しない時間に設定されているスケジュールはスキップ Ø サマータイム終了時 ⇨ 2 回存在する時間に設定されているスケジュールは 1 度だけ実行 01:59 03:00 サマータイム導入日 02:00~2:59 という 時間が存在しない この時間帯に設定されている スケジュールはトリガーされない 02:59 02:00 サマータイム終了日 02:00~2:59 という 時間が 2 回存在する この時間帯に設定されている スケジュールはトリガーされる 02:00 02:30 02:30 この時間帯に設定されている スケジュールはスキップされる * America/Los_Angeles の場合 時計を 1 時間進める 時計を 1 時間戻す
  75. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Templated targets の設定例 76 • 例えば Lambda Invoke の場合、関数の選択と入力の設定のみ 入力では、事前定義されたコンテキスト属性も利用可能 <aws.scheduler.schedule-arn> – スケジュールの ARN <aws.scheduler.scheduled-time> – スケジュールされている時間 <aws.scheduler.execution-id> – 呼び出しごとに一意の ID <aws.scheduler.attempt-number> – 呼び出し試行回数のカウンター { message: "Hello world!!", scheduleArn: 'arn:aws:scheduler:us-west-2:1234567890:schedule/default/test-schedule', scheduledTime: '2022-11-22T12:00:00Z', executionId: 'c5dff38152f77a41', attemptNumber: '1' } Lambda 関数内で event を出力すると...
  76. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Universal targets の設定例 77 • 各 API のパラメータとして必要なものを JSON で入力 • Templated targets と同様にコンテキスト属性も利用可能
  77. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. IAM ロールの設定 78 Lambda 関数 EventBridge Scheduler ターゲットとなる API の実行権限を持った IAM ロールを指定する必要がある { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-west-2:xxxxx:function:event-scheduler-test:*", "arn:aws:lambda:us-west-2:xxxxx:function:event-scheduler-test" ] } ] }
  78. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. エラーに対する回復性 79 Lambda 関数 EventBridge Scheduler ターゲットの呼び出しに失敗した場合、 リトライポリシーに従って自動的にリトライする * 最大 24 時間、185 回 SQS キュー (デッドレターキュー ) デッドレターキューが設定されている場合、 最大回数リトライが失敗したタスクはキューに送信される * IAM ロールに sqs:SendMessage の権限を付与する必要あり * 別アカウントのキューも指定可能
  79. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 各種クォータ 80 • 作成可能なターゲットグループ数: アカウントあたり最大 500 まで (*スケジュールのグループ化に使用) • 作成可能なスケジュール数:アカウントあたり最大 1,000,000 まで (EventBridge Rules: リージョンあたり 300 ルールまで登録可能) • 設定可能なターゲット数:スケジュールあたり 1 つのみ (EventBridge Rules: 1ルール内で最大 5 ターゲットまで設定可能) • CreateSchedule API のリクエストレート:最大 50 TPS • 呼び出しスループット:最大 500 TPS (*以降はスロットリングされて遅延する) * 2022/11/25 時点 * ターゲット数以外は上限緩和可能
  80. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. 料金 81 • スケジュールの呼び出し回数に応じて課金 • 月あたり 14,000,000 回までは無料で利用可能 • その後 100 万回呼び出しごと料金が発生 Ø オレゴンリージョンの場合:$1.00 Ø 東京リージョンの場合:$1.25 * 2022/11/25 時点
  81. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. モニタリング 82 InvocationAttemptCount EventBridge Scheduler がスケジュールを呼び出そうとした数 TargetErrorCount ターゲットからエラーが返され、呼び出しに失敗した数 TargetErrorThrottledCount ターゲット側でスロットリングされ、呼び出しに失敗した数 InvocationThrottleCount EventBridge Scheduler 側でスロットリングされた数 InvocationDroppedCount 最大リトライ回数を超えて呼び出しに失敗し、呼び出しを中止した数 各種メトリクス DLQ を設定している場合、以下のメトリクスも利用可能 • InvocationsSentToDeadLetterCount • InvocationsFailedToBeSentToDeadLetterCount • InvocationsFailedToBeSentToDeadLetterCount_<error_code> • InvocationsSentToDeadLetterCount_Truncated_MessageSizeExceeded * ログについては現状 CloudTrail による API call の記録のみ
  82. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Event bus resource policy - PutRule Give Purple Team account permissions to create rules on “DevOps” event bus. Limit to rules that match against the “E2” event from “com.purple.service”
  83. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Give Purple Team account permissions to publish events to “DevOps” event bus. Only allow the Purple Team to publish “E2” events from “com.purple-service.context” Event bus resource policy - PutEvents
  84. THE ART OF EVENTBRIDGE © 2022, Amazon Web Services, Inc.

    or its affiliates. Give any account permissions to publish events to “DevOps” event bus. Limit publishing to accounts in the “o- a1b2c3d4e5” organization, and that are also tagged as “Production” accounts. Event bus resource policy – organizations & tags