Amazon の AWS Lambda 関数からの SaaS URLs イベントの受信 EventBridge - Amazon EventBridge

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon の AWS Lambda 関数からの SaaS URLs イベントの受信 EventBridge

注記

パートナーがインバウンド Webhook にアクセスできるようにするには、サードパーティーパートナーから送信された認証署名を検証することで、Lambda アプリケーションレベルで保護される Open Lambda を AWS アカウントに作成します。この設定をセキュリティチームと確認してください。詳細については、「Lambda 関数のセキュリティと認証モデルURLs」を参照してください。

Amazon EventBridge イベントバスは、 テンプレートによって作成された AWS CloudFormation AWS Lambda 関数URLを使用して、サポートされている SaaS プロバイダーからイベントを受信できます。関数 ではURLs、イベントデータは Lambda 関数に送信されます。次に、このデータをイベントに変換 EventBridge し、 が取り込んでイベントバスに送信して処理できるようにします。イベントがイベントバスに入ると、ルールを使用してイベントをフィルタリングし、設定済みの入力変換を適用して、正しいターゲットにルーティングできます。

注記

Lambda 関数を作成するURLsと、月額コストが増加します。詳細については、AWS Lambda の料金を参照してください。

への接続を設定するには EventBridge、まず接続を設定する SaaS プロバイダーを選択します。次に、そのプロバイダーで作成した署名シークレットを指定し、 EventBridge イベントを送信するイベントバスを選択します。最後に、 AWS CloudFormation テンプレートを使用して、接続を完了するために必要なリソースを作成します。

現在、Lambda 関数 EventBridge を使用して で使用できる SaaS プロバイダーは次のとおりですURLs。

  • GitHub

  • Twilio

ステップ 1: AWS CloudFormation スタックを作成する

まず、Amazon EventBridge コンソールを使用して CloudFormation スタックを作成します。

  1. で Amazon EventBridge コンソールを開きますhttps://console.aws.amazon.com/events/

  2. ナビゲーションペインで、[Quick starts] (クイックスタート) を選択します。

  3. Lambda を使用したインバウンドウェブフックでfURLs開始方法を選択します

  4. [GitHub] で、[Set up] (設定) を選択します。

  5. [Step 1: Select an event bus] (ステップ 1: イベントバスを選択する) で、ドロップダウンリストからイベントバスを選択します。このイベントバスは、 URL に提供する Lambda 関数からデータを受信しますGitHub。[New event bus] (新しいイベントバス) を選択して、イベントバスを作成することもできます。

  6. ステップ 2: を使用してセットアップするで CloudFormation新しいGitHubウェブフック を選択します。

  7. [I acknowledge that the Inbound Webhook I create will be publicly accessible] (作成したインバウンドウェブフックが一般公開されることを承認します) を選択し、[Confirm] (確認) を選択します。

  8. スタックの名前を入力します。

  9. パラメータの下に正しいイベントバスが表示されていることを確認し、GitHubWebhookSecret の安全なトークンを指定します。安全なトークンの作成の詳細については、GitHub ドキュメントの「シークレットトークンを設定する」を参照してください。

  10. [Capabilities and transforms] (機能と変換) で、以下のそれぞれを選択します。

    • がIAMリソースを作成する AWS CloudFormation 可能性があることを確認します。

    • がカスタム名でIAMリソースを作成する AWS CloudFormation 可能性があることを確認します。

    • 以下の機能が必要になる AWS CloudFormation 場合があることを了承します。 CAPABILITY_AUTO_EXPAND

  11. [スタックの作成] を選択します。

ステップ 3: GitHub ウェブフックを作成する

次に、GitHub でウェブフックを作成します。このステップを完了するには、ステップ 2 でURL作成したセキュアトークンと Lambda 関数の両方が必要です。詳細については、GitHub ドキュメントの「ウェブフックの作成」を参照してください。

Twilio への接続をセットアップする

ステップ 1: Twilio Auth トークンを見つける

Twilio と 間の接続を設定するには EventBridge、まずTwilioアカウントの認証トークンまたはシークレットTwilioを使用して への接続を設定します。詳細については、Twilio ドキュメントで「Auth トークンとその変更方法」を参照してください。

ステップ 2: AWS CloudFormation スタックを作成する

  1. で Amazon EventBridge コンソールを開きますhttps://console.aws.amazon.com/events/

  2. ナビゲーションペインで、[Quick starts] (クイックスタート) を選択します。

  3. Lambda を使用したインバウンドウェブフックでfURLs開始方法を選択します

  4. [Twilio] で、[Set up] (設定) を選択します。

  5. [Step 1: Select an event bus] (ステップ 1: イベントバスを選択する) で、ドロップダウンリストからイベントバスを選択します。このイベントバスは、 URL に提供する Lambda 関数からデータを受信しますTwilio。[New event bus] (新しいイベントバス) を選択して、イベントバスを作成することもできます。

  6. ステップ 2: を使用してセットアップするで CloudFormation新しいTwilioウェブフック を選択します。

  7. [I acknowledge that the Inbound Webhook I create will be publicly accessible] (作成したインバウンドウェブフックが一般公開されることを承認します) を選択し、[Confirm] (確認) を選択します。

  8. スタックの名前を入力します。

  9. パラメータの下に正しいイベントバスが表示されていることを確認し、ステップ 1 で作成した TwilioWebhookSecret を入力します。

  10. [Capabilities and transforms] (機能と変換) で、以下のそれぞれを選択します。

    • がIAMリソースを作成する AWS CloudFormation 可能性があることを確認します。

    • がカスタム名でIAMリソースを作成する AWS CloudFormation 可能性があることを確認します。

    • には CAPABILITY_AUTO_ という機能が必要になる AWS CloudFormation 場合があることを了承します。EXPAND

  11. [スタックの作成] を選択します。

ステップ 3: Twilio ウェブフックを作成する

Lambda 関数 を設定したらURL、イベントデータを送信できるように Twilio に渡す必要があります。詳細については、 Twilioドキュメントの「 URLでパブリックTwilioを設定する」を参照してください。

ウェブフックまたは Auth トークンを更新する

GitHub シークレットを更新する

注記

GitHub では、2 つのシークレットを同時に持つことをサポートしていません。 AWS CloudFormation スタック内のGitHubシークレットとシークレットが同期していない間は、リソースのダウンタイムが発生する可能性があります。シークレットが同期していない間に送信されるGitHubメッセージは、署名が正しくないために失敗します。シー CloudFormation クレットGitHubと シークレットが同期するまで待ってから、もう一度試してください。

  1. 新しい GitHub シークレットを作成する 詳細については、GitHub ドキュメントの「暗号化されたシークレット」を参照してください。

  2. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  3. ナビゲーションペインで [Stacks] (スタック) を選択します。

  4. 更新するシークレットが含まれているウェブフックでスタックを選択します。

  5. [Update] (更新) を選択します。

  6. [Use current template] (現在のテンプレートの使用) が選択されていることを確認し、[Next] (次へ) を選択します。

  7. GitHubWebhookSecret「既存の値を使用する」 をクリアし、ステップ 1 で作成した新しいGitHubシークレットを入力し、「次へ」を選択します

  8. [Next (次へ)] を選択します。

  9. [Update stack] (スタックの更新) を選択します。

シークレットが伝播されるまでに最大で 1 時間かかる場合があります。このダウンタイムを減らすには、Lambda 実行コンテキストを更新できます。

Twilio シークレットを更新する

注記

Twilio では、2 つのシークレットを同時に持つことをサポートしていません。 AWS CloudFormation スタック内のTwilioシークレットとシークレットが同期していない間は、リソースのダウンタイムが発生する可能性があります。シークレットが同期していない間に送信されたTwilioメッセージは、署名が正しくないために失敗します。シー CloudFormation クレットTwilioと シークレットが同期するまで待ってから、もう一度試してください。

  1. 新しい Twilio シークレットを作成する 詳細については、Twilio ドキュメントで「Auth トークンとその変更方法」を参照してください。

  2. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  3. ナビゲーションペインで [Stacks] (スタック) を選択します。

  4. 更新するシークレットが含まれているウェブフックでスタックを選択します。

  5. [Update] (更新) を選択します。

  6. [Use current template] (現在のテンプレートの使用) が選択されていることを確認し、[Next] (次へ) を選択します。

  7. TwilioWebhookSecret「既存の値を使用する」 をクリアし、ステップ 1 で作成した新しいTwilioシークレットを入力し、「次へ」を選択します

  8. [Next (次へ)] を選択します。

  9. [Update stack] (スタックの更新) を選択します。

シークレットが伝播されるまでに最大で 1 時間かかる場合があります。このダウンタイムを減らすには、Lambda 実行コンテキストを更新します。

Lambda 関数を更新する

CloudFormation スタックによって作成される Lambda 関数は、基本的なウェブフックを作成します。ログ記録のカスタマイズなど、特定のユースケースに合わせて Lambda 関数をカスタマイズする場合は、 CloudFormation コンソールを使用して関数にアクセスし、Lambda コンソールを使用して Lambda 関数コードを更新します。

Lambda 関数にアクセスする
  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  2. ナビゲーションペインで [Stacks] (スタック) を選択します。

  3. 更新する Lambda 関数が含まれているウェブフックでスタックを選択します。

  4. [Resources] (リソース) タブを選択します。

  5. Lambda コンソールで Lambda 関数を開くには、[Physical ID] (物理 ID) で、Lambda 関数の ID を選択します。

Lambda 関数にアクセスしたら、Lambda コンソールを使用して関数コードを更新します。

Lambda 関数コードを更新する
  1. [Actions] (アクション) で、[Export function] (関数のエクスポート) を選択します。

  2. [Download deployment package] (デプロイパッケージのダウンロード) を選択し、ファイルをコンピュータに保存します。

  3. デプロイパッケージの .zip ファイルを解凍して、app.py ファイルを更新し、更新したデプロイパッケージを圧縮します。元の .zip ファイル内のすべてのファイルが含まれていることを確認してください。

  4. Lambda コンソールで、[Code] (コード) タブを選択します。

  5. [Code source (コードソース)] で、[Upload from (アップロード元)] を選択します。

  6. [.zip file (.zip ファイル)]、[Upload (アップロード) ] の順に選択します。

    1. ファイルの選択画面で、更新するファイルを選択し、[Open] (開く)、[Save] (保存) の順に選択します。

  7. [Actions] (アクション) メニューで、[Publish new version] (新しいバージョンを発行) を選択します。

利用可能なイベントタイプ

現在、次のイベントタイプは CloudFormation イベントバスでサポートされています。

クォータ、エラーコード、配信の再試行

クォータ

ウェブフックへの受信リクエストの数は、基盤となる AWS サービスによって制限されます。次の表に関連するクォータを示します。

サービス クォータ

AWS Lambda

デフォルト: 10 件の同時実行

クォータの引き上げのリクエストを含む、クォータの詳細については、「Lambda のクォータ」を参照してください。

AWS Secrets Manager

デフォルト: 1 秒あたり 5,000 個のリクエスト

クォータの引き上げのリクエストを含む、クォータの詳細については、「AWS Secrets Manager のクォータ」を参照してください。

注記

1 秒あたりのリクエスト数は、AWS Secrets Manager Python キャッシュクライアントを使用して最小化されます。

Amazon EventBridge

PutEvents アクションの最大エントリサイズは 256KB です。

EventBridge は、リージョンベースのレートクォータを適用します。詳細については、「EventBridge クォータ」を参照してください。

エラーコード

エラーが発生すると、各 AWS サービスは特定のエラーコードを返します。次の表に関連するエラーコードを示します。

サービス エラーコード 説明

AWS Lambda

429TooManyRequestsExption「」

同時実行のクォータの制限を超えています。

AWS Secrets Manager

500 「Internal Server Error」

1 秒あたりのリクエスト数がクォータを超えています。

Amazon EventBridge

500 「Internal Server Error」

リージョンのレートクォータを超えています。

イベント再配信

エラーが発生した場合は、該当するイベントの配信を再試行できます。SaaS プロバイダーごとに再試行手順が異なります。

GitHub

GitHub ウェブフックを使用してAPI、ウェブフック呼び出しの配信ステータスを確認し、必要に応じてイベントを再配信します。詳細については、次の GitHubドキュメントを参照してください。

Twilio

Twilio ユーザーは、接続の上書きを使用してイベント再試行オプションをカスタマイズできます。詳細については、 Twilioドキュメントの「Webhooks (HTTP コールバック): Connection Overrides」を参照してください。