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

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

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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型での情報連携(イベント通知)を可能にするイベントバス

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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 など
    イベントバスで利用できるターゲットと同様

    View Slide

  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

    View Slide

  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 キュー

    View Slide

  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ソース側でイベントの順序性が保証されて
    いる場合、順序を保ったままターゲットに配信

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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 で取得

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  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. ユーザーが解約を実行 → 残りの契約期間が過ぎた後にユーザー削除等を実施

    View Slide

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

    View Slide

  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 に切り捨てられる

    View Slide

  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)
    タイムウィンドウ内にスケジュールを分散させることで、複数回の配信確率を下げるための仕組み
    時間ぴったりに起動する必要がなければ使っておくのがおすすめ

    View Slide

  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 をサポート
    • パラメータを自分でカスタマイズ
    • サポートされているサービス一覧

    View Slide

  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 時点

    View Slide

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

    View Slide

  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

    View Slide

  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
    が利用できる

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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
    を除く)
    • リソース ポリシーでの組織とタグのサ
    ポート

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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 は推移的ルーティングしてしまう懸念はない

    View Slide

  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 など) によって再発行することにより、推移ホップさせることも可能

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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/

    View Slide

  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

    View Slide

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

    View Slide

  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 種類に対応
    アプリケーション開発の
    際に、ダウンロードした
    スキーマ定義をインポー
    トしておくことで、コー
    ド補完やコンパイル時の
    エラー検出に役立てるこ
    とができる

    View Slide

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

    View Slide

  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 のサービスと全く同じ形で、
    パートナーから送信されるデータ
    のスキーマも確認できる

    View Slide

  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スキ
    ーマボキャブラリー
    • 実行時のバリデーションが可能
    • より高速な ビルド時間が期待できる

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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)

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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 コンソールに集約されている

    View Slide

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

    View Slide

  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 時間戻す

    View Slide

  75. THE ART OF EVENTBRIDGE
    © 2022, Amazon Web Services, Inc. or its affiliates.
    Templated targets の設定例
    76
    • 例えば Lambda Invoke の場合、関数の選択と入力の設定のみ
    入力では、事前定義されたコンテキスト属性も利用可能
    – スケジュールの ARN
    – スケジュールされている時間
    – 呼び出しごとに一意の ID
    – 呼び出し試行回数のカウンター
    {
    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 を出力すると...

    View Slide

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

    View Slide

  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"
    ]
    }
    ]
    }

    View Slide

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

    View Slide

  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 時点
    * ターゲット数以外は上限緩和可能

    View Slide

  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 時点

    View Slide

  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_
    • InvocationsSentToDeadLetterCount_Truncated_MessageSizeExceeded
    * ログについては現状 CloudTrail による API call の記録のみ

    View Slide

  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”

    View Slide

  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

    View Slide

  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

    View Slide