

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

# Amazon EventBridge の AWS Lambda 関数 URL からの SaaS イベントの受信 URLs EventBridge
<a name="eb-saas-furls"></a>

**注記**  
パートナーがインバウンドウェブフックにアクセスできるようにするために、サードパーティーパートナーから送信された認証署名を検証することで、Lambda アプリケーションレベルで保護される Open Lambda を AWS アカウントに作成しています。この設定をセキュリティチームと確認してください。詳細については、「[Security and auth model for Lambda function URLs](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html#urls-auth-none)」(Lambda 関数 URL におけるセキュリティと認証モデル) を参照してください。

Amazon EventBridge [イベントバス](eb-event-bus.md)は、 CloudFormation テンプレートで作成した [AWS Lambda 関数 URL](https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html) を使用して、サポートされている SaaS プロバイダーから[イベント](eb-events.md)を受け取ることができます。関数 URL を使用すると、イベントデータは Lambda 関数に送信されます。次に、関数はこのデータをイベントに変換します。EventBridge は、このデータを取り込んでイベントバスに送信して処理できます。イベントがイベントバスに入ると、ルールを使用してイベントをフィルタリングし、設定済みの入力変換を適用して、正しいターゲットにルーティングできます。

**注記**  
Lambda 関数 URL を作成すると、月額のコストが増加します。詳細については、[AWS Lambda 料金表](https://aws.amazon.com/lambda/pricing)を参照してください。

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

現在、Lambda 関数 URL を使用して EventBridge で利用できる SaaS プロバイダーは以下のとおりです。
+ GitHub
+ Twilio

**Topics**
+ [ステップ 1: CloudFormation スタックを作成する](#create-gh-cfn-stack)
+ [ステップ 3: GitHub ウェブフックを作成する](#create-gh-webhook)
+ [Twilio への接続をセットアップする](#furls-connection-twilio)
+ [ウェブフックまたは Auth トークンを更新する](#furls-update-secret)
+ [Lambda 関数を更新する](#furls-update-function)
+ [利用可能なイベントタイプ](#furls-event-types)
+ [クォータ、エラーコード、配信の再試行](#furls-quotas-errors)

## ステップ 1: CloudFormation スタックを作成する
<a name="create-gh-cfn-stack"></a>

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

1. Amazon EventBridge コンソールの [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) を開いてください。

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

1. **[Inbound webhooks using Lambda fURLs]** (Lambda fURL を使用したインバウンドウェブフック) で、**[Get started]** (使用を開始する) を選択します。

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

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

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

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

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

1. パラメータの下に正しいイベントバスが表示されていることを確認し、**GitHubWebhookSecret** の安全なトークンを指定します。安全なトークンの作成の詳細については、GitHub ドキュメントの「[シークレットトークンを設定する](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks#setting-your-secret-token)」を参照してください。

1. **[Capabilities and transforms]** (機能と変換) で、以下のそれぞれを選択します。
   + **が IAM リソースを作成する CloudFormation 可能性があることを確認します。**
   + **がカスタム名で IAM リソースを作成する CloudFormation 可能性があることを確認します。**
   + **次の機能が必要になる CloudFormation 場合があることを了承します。 `CAPABILITY_AUTO_EXPAND`**

1. **[スタックの作成]** を選択してください。

## ステップ 3: GitHub ウェブフックを作成する
<a name="create-gh-webhook"></a>

次に、GitHub でウェブフックを作成します。このステップを完了するには、ステップ 2 で作成した安全なトークンと Lambda 関数 URL の両方が必要です。詳細については、GitHub ドキュメントの「[ウェブフックの作成](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks)」を参照してください。

## Twilio への接続をセットアップする
<a name="furls-connection-twilio"></a>

### ステップ 1: Twilio Auth トークンを見つける
<a name="create-twilio-secret"></a>

Twilio と EventBridge の間の接続をセットアップするには、まず Twilio アカウントで Auth トークンまたはシークレットを使用して Twilio への接続をセットアップします。詳細については、Twilio ドキュメントで「[Auth トークンとその変更方法](https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them)」を参照してください。

### ステップ 2: CloudFormation スタックを作成する
<a name="create-twilio-cfn-stack"></a>

1. Amazon EventBridge コンソールの [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) を開いてください。

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

1. **[Inbound webhooks using Lambda fURLs]** (Lambda fURL を使用したインバウンドウェブフック) で、**[Get started]** (使用を開始する) を選択します。

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

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

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

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

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

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

1. **[Capabilities and transforms]** (機能と変換) で、以下のそれぞれを選択します。
   + **が IAM リソースを作成する CloudFormation 可能性があることを確認します。**
   + **がカスタム名で IAM リソースを作成する CloudFormation 可能性があることを確認します。**
   + **CAPABILITY\_AUTO\_EXPAND の機能が必要になる CloudFormation 場合があることを了承します。**

1. **[スタックの作成]** を選択してください。

### ステップ 3: Twilio ウェブフックを作成する
<a name="create-twilio-webhook"></a>

Lambda 関数 URL を設定したら、それを Twilio に渡してイベントデータを送信できるようにする必要があります。詳細については、Twilio ドキュメントで「[Twilio でパブリック URL を設定する](https://www.twilio.com/docs/usage/webhooks/getting-started-twilio-webhooks#configure-your-public-url-with-twilio)」を参照してください。

## ウェブフックまたは Auth トークンを更新する
<a name="furls-update-secret"></a>

### GitHub シークレットを更新する
<a name="update-gh-secret"></a>

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

1. 新しい GitHub シークレットを作成する 詳細については、GitHub ドキュメントの「[暗号化されたシークレット](https://docs.github.com/en/actions/security-guides/encrypted-secrets)」を参照してください。

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で CloudFormation コンソールを開きます。

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

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

1. **[更新]** を選択します。

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

1. **[GitHubWebhookSecret]** で、**[Use existing value]** (既存の値の使用) をオフにし、ステップ 1 で作成した新しい GitHub シークレットを入力して、**[Next]** (次へ) を選択します。

1. [**次へ**] を選択します。

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

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

### Twilio シークレットを更新する
<a name="update-twilio-secret"></a>

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

1. 新しい Twilio シークレットを作成する 詳細については、Twilio ドキュメントで「[Auth トークンとその変更方法](https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them)」を参照してください。

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で CloudFormation コンソールを開きます。

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

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

1. **[更新]** を選択します。

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

1. **[TwilioWebhookSecret]** で、**[Use existing value]** (既存の値の使用) をオフにし、ステップ 1 で作成した新しい Twilio シークレットを入力して、**[Next]** (次へ) を選択します。

1. [**次へ**] を選択します。

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

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

## Lambda 関数を更新する
<a name="furls-update-function"></a>

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

**Lambda 関数にアクセスする**

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で CloudFormation コンソールを開きます。

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

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

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

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

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

**Lambda 関数コードを更新する**

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

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

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

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

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

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

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

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

## 利用可能なイベントタイプ
<a name="furls-event-types"></a>

CloudFormation イベントバスで現在サポートしているイベントタイプは以下のとおりです。
+ **GitHub** - [すべてのイベントタイプ](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads)をサポートしています。
+ **Twilio** - [イベント後のウェブフック](https://www.twilio.com/docs/chat/webhook-events)をサポートしています。

## クォータ、エラーコード、配信の再試行
<a name="furls-quotas-errors"></a>

### クォータ
<a name="furls-quotas"></a>

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


| サービス | クォータ | 
| --- | --- | 
| AWS Lambda | デフォルト: 10 件の同時実行<br />クォータの引き上げのリクエストを含む、クォータの詳細については、「[Lambda のクォータ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)」を参照してください。 | 
| AWS Secrets Manager | デフォルト: 1 秒あたり 5,000 個のリクエスト<br />クォータの引き上げのリクエストを含む、クォータの詳細については、「[AWS Secrets Manager のクォータ](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html)」を参照してください。1 秒あたりのリクエスト数は、[AWS Secrets Manager Python キャッシュクライアント](https://github.com/aws/aws-secretsmanager-caching-python#cache-configuration)を使用して最小化されます。 | 
| Amazon EventBridge | PutEvents アクションの最大エントリサイズは 1 MB です。<br />EventBridge はリージョンベースのレートクォータを強制します。詳細については、「[EventBridge イベントバスのクォータ](eb-quota.md#eb-limits)」を参照してください。 | 

### エラーコード
<a name="furls-errors"></a>

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


| サービス | エラーコード | 説明 | 
| --- | --- | --- | 
| AWS Lambda | 429 「TooManyRequestsExption」 | 同時実行のクォータの制限を超えています。 | 
| AWS Secrets Manager | 500 「Internal Server Error」 | 1 秒あたりのリクエスト数がクォータを超えています。 | 
| Amazon EventBridge | 500 「Internal Server Error」 | リージョンのレートクォータを超えています。 | 

### イベント再配信
<a name="furls-redelivery"></a>

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

#### GitHub
<a name="furls-redelivery-github"></a>

GitHub ウェブフック API を使用すると、ウェブフック呼び出しの配信ステータスをチェックし、必要に応じてイベントを再配信できます。詳細については、次の GitHubドキュメントを参照してください。
+ **組織** - [組織ウェブフックの配信を再配信する](https://docs.github.com/en/rest/orgs/webhooks#redeliver-a-delivery-for-an-organization-webhook)
+ **リポジトリ** - [リポジトリウェブフックの配信を再配信する](https://docs.github.com/en/rest/webhooks/repo-deliveries#redeliver-a-delivery-for-a-repository-webhook)
+ **アプリケーション** - [アプリウェブフックの配信を再配信](https://docs.github.com/en/rest/apps/webhooks#redeliver-a-delivery-for-an-app-webhook)

#### Twilio
<a name="furls-redelivery-twilio"></a>

Twilio ユーザーは、接続の上書きを使用してイベント再試行オプションをカスタマイズできます。詳細については、Twilio ドキュメントの「[Webhooks (HTTP callbacks): Connection Overrides](https://www.twilio.com/docs/usage/webhooks/webhooks-connection-overrides)」 (ウェブフック (HTTP コールバック): 接続の上書き) を参照してください。