Docs Menu
Docs Home
/ /
Atlas App Services
/

trigger イベントを AWS EventBridge に送信する

項目一覧

  • Overview
  • 手順
  • MongoDB パートナー イベント ソースを設定する
  • trigger の構成
  • trigger イベントソースとイベント バスの関連付け
  • カスタムエラー処理
  • 新しいカスタム エラー ハンドラーの作成
  • Error Handler Parameters
  • エラー コード
  • エラー ハンドラー ログ
  • サンプル イベント
  • パフォーマンスの最適化

MongoDBはAWS Eventbridge 提携するイベントソースを提供しており、Atlas Function を呼び出す代わりに Atlas trigger イベントをイベントバスに送信できます。イベントを EventBridge に送信するには、任意の trigger タイプを構成できます。データベーストリガーは、非致命的なエラーによるトリガーの停止を減らすために、カスタムエラー処理もサポートしています。

triggerイベントを EventBridge に送信するために必要なものはすべて、 Amazon Web ServicesアカウントIDです。 このガイドでは、アカウント ID の検索、trigger の構成、trigger イベントソースとイベント バスの関連付け、カスタム エラー処理の設定について説明します。

注意

公式 AWS パートナー イベント ソース ガイド

このガイドは 、SaaS パートナーからの Amazon の受信イベント に基づいています ドキュメント。

注意

Amazon Web ServicesEventBridgetrigger イベントの の配置エントリは 256 KB 未満である必要があります。

パフォーマンスの最適化セクションの putEvents エントリのサイズを縮小する方法について学びます。

1

triggerイベントをAWS Eventbridge に送信するには、イベントを受信するアカウントのAWS account ID {0 が必要です。Amazon EventBridge コンソール を開きます ナビゲーションPartner event sources メニューで [ ] をクリックします。MongoDBパートナー イベント ソースを検索し、[ Set upをクリックします。

MongoDB パートナー イベント ソースのページで、[Copy] をクリックして AWS アカウント ID をクリップボードにコピーします。

2

AWS account IDを取得したら、イベントを EventBridge に送信するよう trigger を構成できます。

Atlas App Services UI で、新しいデータベースtrigger認証trigger 、またはスケジュールされたtriggerを作成して構成し、 EventBridge イベントタイプを選択します。

EventBridge からコピーしたAWS Account IDを貼り付け、trigger イベントを送信するAWS Regionを選択します。

オプションで、trigger エラーを処理する関数を構成できます。 カスタム エラー処理はデータベース trigger でのみ有効です。 詳細については、このページの「カスタム エラー処理」セクションを参照してください。

trigger 構成の EventBridge 入力ボックス。

デフォルトでは、trigger はイベント オブジェクト内のBSON typesを標準のJSON型に変換します。 BSON type 情報を保持するには、代わりにイベント オブジェクトを拡張 JSON 形式にシリアル化します。 拡張 JSON は、読みやすさと相互運用性を犠牲にして、型情報を保持します。

拡張 JSON を有効にするには、 Advanced (Optional)セクションのEnable Extended JSONトグルをクリックします。

/triggersディレクトリにtrigger 構成ファイルを作成します。 function_nameフィールドを省略し、 AWS_EVENTBRIDGEイベント プロセッサを定義します。

account_id フィールドを EventBridge からコピーした AWS Account ID に設定し、region フィールドをAmazon Web Servicesリージョンに設定します。

デフォルトでは、trigger はイベント オブジェクト内のBSON typesを標準のJSON型に変換します。 BSON type 情報を保持するには、代わりにイベント オブジェクトを拡張 JSON 形式にシリアル化します。 拡張 JSON は、読みやすさと相互運用性を犠牲にして、型情報を保持します。

拡張 JSON を有効にするには、 extended_json_enabledフィールドをtrueに設定します。

オプションで、trigger エラーを処理する関数を構成できます。 カスタム エラー処理はデータベース trigger でのみ有効です。 詳細については、このページの「カスタム エラー処理」セクションを参照してください。

trigger 構成ファイルは、次のようになります。

{
"name": "...",
"type": "...",
"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "<AWS Account ID>",
"region": "<AWS Region>",
"extended_json_enabled": <boolean>
}
}
}
}

注意

サポート対象の AWS リージョン

サポートされているAmazon Web Services リージョンの完全なリストについて は、Amazon SaaS パートナーから の の受信イベント を参照してください ガイドを参照してください。

3

EventBridge コンソールに戻り、ナビゲーション ペインでパートナー イベント ソースを選択します。Partner event sources テーブルで、Pending trigger ソースを検索及び選択し、[Associate with event bus] をクリックします。

Associate with event bus 画面で、他のアカウントや組織に対して必要なアクセス権限を定義し、[Associate] をクリックします。

確認が完了すると、trigger イベントソースのステータスがPendingからActiveに変わり、イベント バスの名前がイベントソース名と一致するように更新されます。 そのパートナー イベント ソースのイベントでtriggerされるルールの作成を開始できるようになりました。 詳細については、「 SaaS パートナー イベントでトリガーするルールの作成 」を参照してください。

注意

データベーストリガーのみがカスタムエラーハンドラーをサポートします

現在、データベーストリガーのみがカスタムエラー処理をサポートしています。 認証トリガーとスケジュールされたトリガーは現時点ではカスタムエラー処理をサポートしていません。

再試行が成功しない場合に、trigger が失敗したときに実行されるエラー ハンドラーを作成できます。 カスタムエラー処理を使用すると、 AWS Eventbridgeからのエラーがtriggerを一時停止するのに十分であるか、またはエラーを無視して他のイベントの処理を続行できるかどうかを判断できます。 中断されたデータベース trigger の詳細については、「 中断された trigger 」を参照してください

以下のように trigger の作成 ページ、または [ 関数 ] タブから新しい関数を直接作成できます。 Atlas App Services で関数を定義する方法の詳細については、「 関数の定義 」を参照してください。

UI 内の EventBridge カスタムエラー処理構成。
1

Configure Error Functionセクションで、[+ New Function] を選択します。

また、ドロップダウンから関数がすでに定義されている場合は、既存の関数を選択することもできます。

2

Name フィールドに関数を識別できる一意の名前を入力します。この名前は、アプリケーション内の他のすべての関数と異なる必要があります。

3

Functionセクションでは、関数エディターで JavaScript コードを直接記述します。 関数エディターには、必要に応じて編集できるデフォルトの関数が含まれています。 関数の作成の詳細については、関数のドキュメントを参照してください。

4

Testing Console関数エディターの下の タブでは、テスト コンソールのコメントに示されているように、error パラメーターとchangeEvent パラメーターにサンプル値を渡すことで関数をテストできます。

これらのパラメーターの詳細については、このページの「エラー ハンドラー パラメーター」セクションを参照してください。

テストを実行するには、 Runをクリックします。

5

カスタム エラー ハンドラーが満足できるものになったら、[ Save ] をクリックします。

エラーハンドラーを使用して trigger の構成を更新するには、次の手順に従ってアプリを更新 します。 ステップ3で構成ファイルを更新するときは、次の操作を行います。

1

関数の定義の手順に従って、エラー ハンドラーのソースコードと構成ファイルを記述します。

エラー ハンドラーのソースコードについては、次のテンプレート エラー ハンドラーを参照してください。

<functionName>.js
exports = async function(error, changeEvent) {
// This sample function will log additional details if the error is not
// a DOCUMENT_TOO_LARGE error
if (error.code === 'DOCUMENT_TOO_LARGE') {
console.log('Document too large error');
// Comment out the line below in order to skip this event and not suspend the Trigger
throw new Error(`Encountered error: ${error.code}`);
}
console.log('Error sending event to EventBridge');
console.log(`DB: ${changeEvent.ns.db}`);
console.log(`Collection: ${changeEvent.ns.coll}`);
console.log(`Operation type: ${changeEvent.operationType}`);
// Throw an error in your function to suspend the trigger and stop processing additional events
throw new Error(`Encountered error: ${error.message}`);
};
2

Triggersフォルダー内の trigger 構成ファイルにerror_handler属性を追加します。 trigger 構成ファイルは、次のようになります。

<triggerName>.json
{
"name": "...",
"type": "DATABASE",
"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "<AWS Account ID>",
"region": "<AWS Region>",
"extended_json_enabled": <boolean>
}
}
},
"error_handler": {
"config": {
"enabled": <boolean>,
"function_name": "<Error Handler Function Name>"
}
}
}

triggertrigger 構成ファイルの詳細については、trigger 構成ファイル を参照してください

1

MongoDB Atlas API キー ペアを使用して、管理ユーザー認証エンドポイントを呼び出します。

curl -X POST \
https://services.cloud.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"username": "<Public API Key>",
"apiKey": "<Private API Key>"
}'

認証に成功すると、レスポンス本文にはaccess_token値を持つ JSON オブジェクトが含まれます。

{
"access_token": "<access_token>",
"refresh_token": "<refresh_token>",
"user_id": "<user_id>",
"device_id": "<device_id>"
}

access_tokenは App Services Admin API へのアクセスを許可します。 すべての管理 API リクエストのAuthorizationヘッダーに Bearer トークンとして含める必要があります。

Tip

以下も参照してください。

2

配置案は、単一のユニットとして配置または破棄できるアプリケーション変更のグループを表します。 配置案を作成しない場合、更新は自動的に個別に配置されます。

配置案を作成するには、配置案を作成するエンドポイントに本文を入れずにPOSTリクエストを送信します。

curl -X POST 'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/drafts' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'
3

新しい関数の作成 エンドポイントへの リクエストを介して、失敗した のエラーを処理する関数を作成します。AWS EventbridgetriggerPOST

curl -X POST \
https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/functions \
-H 'Authorization: Bearer <access_token>' \
-d '{
"name": "string",
"private": true,
"source": "string",
"run_as_system": true
}'
4

エンドポイントの作成 AWS EventbridgetriggerエンドポイントへのPOST リクエストにより、エラー処理が有効になっている を作成します。trigger

curl -X POST \
https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/triggers \
-H 'Authorization: Bearer <access_token>' \
-d '{
"name": "string",
"type": "DATABASE",
"config": {
"service_id": "string",
"database": "string",
"collection": "string",
"operation_types": {
"string"
},
"match": ,
"full_document": false,
"full_document_before_change": false,
"unordered": true
},
"event_processors": {
"AWS_EVENTBRIDGE": {
"account_id": "string",
"region": "string",
"extended_json_enabled": false
},
},
"error_handler": {
"enabled": true,
"function_id": "string"
}
}'
5

配置案を作成した場合は、配置案を配置案に含まれるすべての変更を配置できPOST 。 最初のステップとして配置案を作成しなかった場合、個々の関数と trigger リクエストは自動的に配置されます。

curl -X POST \
'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/drafts/{draftId}/deployment' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access_token>' \

デフォルトのエラー ハンドラーには、 errorchangeEventの 2 つのパラメータがあります。

次の 2 つの属性を持つ。

  • code: エラーが発生した EventBridge 配置リクエストのコード。 エラーハンドラーで使用されるエラーコードの一覧については、以下のセクションを参照してください。

  • message: エラーが発生した EventBridge put リクエストからのフィルタリングされていないエラー メッセージ。

EventBridge によって行われたデータに対するリクエストされた変更。 変更イベントの種類とその構成の詳細については、「変更イベント タイプ 」を参照してください。

EventBridge からエラーが受信された場合、イベント プロセッサはエラーをDOCUMENT_TOO_LARGEまたはOTHERとして解析します。 この解析されたエラーは、 errorパラメーターを介してエラー ハンドラー関数に渡されます。

EventBridge trigger イベントの put エントリが 256 KB を超える場合、EventBridge はエラーをスローします。 エラーには次のいずれかが含まれます。

入力サイズを縮小する方法の詳細については、以下の「パフォーマンスの最適化」セクションを参照してください。

その他のすべてのエラーのデフォルトのバケット。

Tip

他のコードによるエラーのエラー処理の最適化

最も一般的なエラー メッセージに対して特別なエラー処理ケースを作成して、 OTHERコードでエラーのエラー処理を最適化できます。 どのエラーに特殊なケースが必要かを判断するには、 error.messageで表示される最も一般的なエラー メッセージを追跡することをお勧めします。

EventBridgetrigger エラー ハンドラーのtrigger trigger は、アプリケーション ログで表示できます。

  1. App Services UI の左側のナビゲーションで [ Logsをクリックします。

  2. アプリのすべてのエラー ハンドラー ログを表示するには、 ドロップダウンをクリックし、 を選択します。Filter by TypeTriggers Error Handlers

アプリのすべてのエラー ハンドラー ログを表示するには、 trigger_error_handler値を--typeフラグに渡します。

appservices logs list --type=trigger_error_handler

App Services ログの取得エンドポイントへのGETリクエストを使用して、 TRIGGER_ERROR_HANDLERタイプのログを取得します。

curl -X GET 'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/logs' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access_token>'
-d '{
"type": "TRIGGER_ERROR_HANDLER"
}'

アプリケーション ログの表示の詳細については、「アプリケーション ログの表示 」を参照してください。

trigger次のオブジェクトは、イベントを に送信し、エラーを処理するAWS Eventbridge を構成します。

"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "012345678901",
"region": "us-east-1"
}
}
},
"error_handler": {
"config": {
"enabled": true,
"function_name": "myErrorHandler.js"
}
}

Amazon Web ServicesEventBridgetrigger イベントの の配置エントリは 256 KB 未満である必要があります。

詳細については、「Amazon Web Services のドキュメント 」を参照してAmazon putEvents イベント エントリ サイズを計算します。

データベーストリガーを使用する場合、プロジェクト式は EventBridge にメッセージを送信する前にドキュメント サイズを縮小するのに役立ちます。 この式により、指定されたフィールドのみを含めることができ、ドキュメント サイズを縮小できます。

詳細については、 データベースtriggerプロジェクト式 のドキュメントを参照してください。

戻る

trigger を無効にする