Docs Menu
Docs Home
/
MongoDB Atlas
/ /

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

項目一覧

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

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

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

注意

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

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

注意

EventBridge triggerイベントの個々のエントリは 256 KB より小さくなければなりません。

PutEventsエントリのサイズを小さくする方法については、「パフォーマンスの最適化」セクションを参照してください。

1

triggerイベントをAWS Eventbridge に送信するには、イベントを受信するアカウントのAWS account ID {0 が必要です。

  1. Amazon EventBridge コンソール を開きます ナビゲーションPartner event sources メニューで [ ] をクリックします。

  2. MongoDB提携するイベントソースを検索し、[ Set up ] をクリックします。

  3. MongoDB提携するイベントソースのページからCopy [] をクリックして、Amazon Web Services IDアカウント をクリップボードにコピーします。

2

AWS account ID が取得されたら、データベースtriggerまたは予定されたtriggerを構成して、イベントを EventBridge に送信できます。

Atlas UIまたは App Services CLI を使用して trigger を構成できます。

Atlas UIで、次の設定で新しいデータベースtriggerまたは予定さtriggerたトリガー を作成し、構成します。

  1. イベントタイプとしてEventBridgeを選択します。

  2. EventBridge からコピーしたAWS Account IDを貼り付けます。

  3. trigger イベントを送信するAWS Regionを選択します。

    注意

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

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

  4. (データベース trigger のみの任意) trigger エラーを処理する関数を構成します。

    詳細については、このページの「カスタム エラー処理」セクションを参照してください。

    trigger 構成の EventBridge 入力ボックス。
    クリックして拡大します
  5. 拡張JSONを有効にするには、 Advanced (Optional)セクションでEnable Extended JSON設定を切り替えます。

    デフォルトでは 、trigger はイベントオブジェクト内のBSON typesを標準のJSON型に変換します。

    拡張JSONを有効にすると、代わりにイベントオブジェクトが拡張JSON形式に直列化されることで、 BSON type 情報が保持されます。 これにより、読みやすさと相互運用性を犠牲にして、型情報が保持されます。

  1. MongoDB Atlas ユーザーの認証

    MongoDB Atlas Administration APIキーを使用して、App Services CLI にログします。

    appservices login --api-key="<API KEY>" --private-api-key="<PRIVATE KEY>"
  2. アプリの最新の構成ファイルを取得する

    次のコマンドを実行して、構成ファイルのローカルコピーを取得します。

    appservices pull --remote=<App ID>

    デフォルトでは 、コマンドは現在の 作業ディレクトリにファイルをプルします。 任意の--localフラグを使用してディレクトリパスを指定できます。

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

  4. account_idフィールドに、EventBridge からコピーしたAWS Account IDを設定します。

  5. regionフィールドをAmazon Web Servicesリージョンに設定します。

    注意

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

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

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

    デフォルトでは 、trigger はイベントオブジェクト内のBSON typesを標準のJSON型に変換します。

    拡張JSONを有効にすると、代わりにイベントオブジェクトが拡張JSON形式に直列化されることで、 BSON type 情報が保持されます。 これにより、読みやすさと相互運用性を犠牲にして、型情報が保持されます。

  7. (データベース trigger のみの任意) trigger エラーを処理する関数を構成します。

    詳細については、このページの「カスタム エラー処理」セクションを参照してください。

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

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

EventBridge コンソールに戻ります。

  1. ナビゲーション ペインでパートナーイベントソースを選択します。

  2. Partner event sourcesテーブルで、 Pending trigger ソースを検索及び選択し、 Associate with event busをクリックします。

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

関連付けが確認されると、triggerイベントソースのステータスがPendingからActiveに変わり、イベントイベント名と一致するように更新されます。 その提携するイベントソースのイベントでtriggerするルールを作成できるようになりました。

詳細については、「 SaaS パートナー イベントでトリガーするルールの作成 」を参照してください。

注意

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

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

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

一時停止されたデータベース trigger の詳細については、「 一時停止された trigger 」を参照してください

App Services CLI を使用して、または App Services Admin APIを通じて Atlas UIに新しいエラー ハンドラーを作成できます。

この手順では、 Create a Triggerページで新しい関数を直接作成する方法について説明します。

Functionsページから関数を作成することもできます。 Atlas で関数を定義する方法の詳細については、「 関数の定義 」を参照してください。

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

Create a TriggerページのConfigure Error Functionセクションから、 + NewFunctionを選択します。

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

2

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

3

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

4

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

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

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

5

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

App Services CLI を使用して、エラー ハンドラーで trigger の構成を更新できます。 詳しくは、「アプリの更新手順 」を参照してください。

1

MongoDB Atlas Administration APIキーを使用して、App Services CLI にログします。

appservices login --api-key="<API KEY>" --private-api-key="<PRIVATE KEY>"
2

次のコマンドを実行して、構成ファイルのローカルコピーを取得します。

appservices pull --remote=<App ID>

デフォルトでは 、コマンドは現在の 作業ディレクトリにファイルをプルします。 任意の--localフラグを使用してディレクトリパスを指定できます。

3

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

の例としては、次のテンプレート エラー ハンドラーを参照してください。

<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}');
};

関数の作成の詳細については、「関数 」を参照してください。

4

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

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

5

次のコマンドを実行して、変更を配置します。

appservices push

注意

この手順では、App Services Admin APIエンドポイントを参照します。 Atlas Administration APIエンドポイントは 使用されませ

1

MongoDB Atlas Administration APIキー ペア を使用して Login エンドポイントを呼び出します。

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へのアクセスを許可します。 すべての App Services Admin APIリクエストのAuthorizationヘッダーに Bearer トークンとして含める必要があります。

Tip

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

App Services Admin API認証に関するドキュメント

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 Eventbridgetrigger POSTエンドポイントへの リクエスト、失敗した のエラーを処理する関数を作成します。

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 put リクエストのコード。 エラー ハンドラーで使用されるエラー コードのリストについては、このページの「エラー コード」セクションを参照してください。

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

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

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

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

エントリ サイズを縮小する方法の詳細については、「パフォーマンスの最適化 」を参照してください。

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

Tip

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

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

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

Atlas UIのTriggersページから、 Logsタブを選択します。

すべてのログはデフォルトで表示されます。 エラー ハンドラーのログのみを表示するには、 Show errors onlyトグルをクリックします。

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

appservices logs list --type=trigger_error_handler

注意

この手順では、App Services Admin APIエンドポイントを参照します。 Atlas Administration APIエンドポイントは 使用されませ

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

EventBridge triggerイベントの個々のエントリは 256 KB より小さくなければなりません。

詳細については、「Amazon Web Services のドキュメント 」を参照してAmazon putEventsイベントエントリ サイズを計算します 。データベーストリガーを使用する場合、 プロジェクト式には指定されたフィールドのみを含めることができるため、 EventBridge にメッセージを送信する前にドキュメントサイズを縮小できます。 プロジェクト式の詳細については、データベースtriggerプロジェクト式 のドキュメントを参照してください。

戻る

trigger を無効にする