Docs Menu
Docs Home
/ /
Atlas App Services
/

AWS EventBridge에 트리거 이벤트 전송

이 페이지의 내용

  • 개요
  • 절차
  • MongoDB 제휴하다 이벤트 소스 설정
  • 트리거 구성
  • 트리거 이벤트 소스를 이벤트 버스에 연결하기
  • 사용자 지정 오류 처리
  • 새 사용자 지정 오류 처리기 만들기
  • 오류 핸들러 매개변수
  • 오류 코드
  • 오류 핸들러 로그
  • 이벤트 예시
  • 성능 최적화

MongoDB 는 Atlas Function 을 호출하는 대신 Atlas Trigger 이벤트를 이벤트 버스로 보낼 수 있는 AWS Eventbridge 제휴하다 이벤트 소스를 제공합니다. EventBridge로 이벤트를 전송하도록 모든 트리거 유형을 구성할 수 있습니다. 데이터베이스 트리거는 사용자 지정 오류 처리도 지원 하여 중요하지 않은 오류로 인한 트리거하다 일시 중단을 줄입니다.

trigger 이벤트를 EventBridge로 전송하기 위해서는 Amazon Web Services 계정 ID가 필요합니다. 이 가이드에서는 계정 ID 찾기, trigger 구성, trigger 이벤트 소스를 이벤트 버스와 연결하고 사용자 지정 오류 처리를 설정하는 과정을 안내합니다.

참고

공식 AWS 파트너 이벤트 소스 가이드

이 가이드는 Amazon의 SaaS 파트너로부터 이벤트 수신 을 기반으로 합니다. 문서화.

참고

EventBridge 트리거 이벤트에 대한 AWS 풋 엔트리는 256KB보다 작아야 합니다.

성능 최적화 섹션에서 PutEvents 항목의 크기를 줄이는 방법을 알아보세요.

1

trigger 이벤트를 AWS Eventbridge 로 전송하려면 이벤트를 수신해야 하는 계정의 AWS account ID 이(가) 필요합니다. Amazon EventBridge 콘솔 Partner event sources 열기 탐색 메뉴에서 을 클릭합니다. Atlas Search에서 MongoDB 파트너 이벤트 소스를 검색한 다음 Set up 을(를) 클릭합니다.

MongoDB 0} 파트너 이벤트 Copy 소스 페이지에서 을 클릭하여 AWS 계정 ID를 클립보드에 복사합니다.

2

AWS account ID가 있으면 이벤트를 EventBridge로 전송하도록 트리거를 구성할 수 있습니다.

App Services UI에서 새 데이터베이스 트리거, 인증 트리거 또는 예약된 트리거를 만들고 구성한 다음 EventBridge 이벤트 유형을 선택합니다.

EventBridge에서 복사한 AWS Account ID을(를) 붙여넣고 트리거 이벤트를 보낼 AWS Region을(를) 선택합니다.

선택 사항으로 트리거 오류를 처리하는 함수를 구성할 수 있습니다. 사용자 지정 오류 처리는 데이터베이스 트리거에만 유효합니다. 자세한 내용은 이 페이지의 사용자 지정 오류 처리 섹션을 참조하세요.

트리서 구성의 EventBridge 입력 상자입니다.

기본적으로 트리거는 이벤트 객체의 BSON 유형을 표준 JSON 유형으로 변환합니다. BSON 유형 정보를 보존하려면 이벤트 객체를 확장 JSON 형식 으로 직렬화할 수 있습니다. 확장 JSON은 가독성과 상호 운용성이 떨어지는 대신 유형 정보를 보존합니다.

확장 JSON을 활성화하려면 Advanced (Optional) 섹션에서 Enable Extended JSON 토글을 클릭합니다.

/triggers 디렉토리에 trigger 구성 파일을 생성하세요. function_name 필드를 생략하고 AWS_EVENTBRIDGE 이벤트 프로세서를 정의합니다.

account_id 필드를 EventBridge에서 복사한 AWS Account ID 필드로 설정하고 region 필드를 AWS 리전으로 설정합니다.

기본적으로 트리거는 이벤트 객체의 BSON 유형을 표준 JSON 유형으로 변환합니다. BSON 유형 정보를 보존하려면 이벤트 객체를 확장 JSON 형식 으로 직렬화할 수 있습니다. 확장 JSON은 가독성과 상호 운용성이 떨어지는 대신 유형 정보를 보존합니다.

확장 JSON을 활성화하려면 extended_json_enabled 필드를 true로 설정합니다.

선택 사항으로 트리거 오류를 처리하는 함수를 구성할 수 있습니다. 사용자 지정 오류 처리는 데이터베이스 트리거에만 유효합니다. 자세한 내용은 이 페이지의 사용자 지정 오류 처리 섹션을 참조하세요.

트리거 구성 파일은 다음과 유사해야 합니다.

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

참고

지원되는 AWS 지역

지원되는 AWS 리전의 전체 목록은 Amazon의 SaaS 파트너에서 이벤트 수신 가이드를 참조하세요.

3

EventBridge 콘솔로 돌아가서 탐색 창에서 파트너 이벤트 소스를 선택합니다. Partner event sources 테이블에서 Pending 트리거 소스를 찾아 선택한 다음 Associate with event bus를 클릭합니다.

Associate with event bus 화면에서 다른 계정 및 조직에 필요한 액세스 권한을 정의한 다음 Associate를 클릭합니다.

확인되면 트리거 이벤트 소스의 상태가 Pending에서 Active로 변경되고 이벤트 버스의 이름이 이벤트 소스 이름과 일치하도록 업데이트됩니다. 이제 파트너 이벤트 소스의 이벤트에 대한 트리거 규칙을 생성할 수 있습니다. 자세한 내용은 SaaS 파트너 이벤트에서 트리거하는 규칙 생성을 참조하세요.

참고

데이터베이스 트리거만 사용자 지정 오류 처리기 지원

현재는 데이터베이스 트리거만 사용자 지정 오류 처리를 지원합니다. 인증 트리거와 예약된 트리거는 현재 사용자 지정 오류 처리를 지원하지 않습니다.

재시도에 성공하지 못한 경우 트리거 실패 시 실행할 오류 핸들러를 만들 수 있습니다. 사용자 지정 오류 처리를 사용하면 AWS EventBridge의 오류가 트리거를 일시 중단할 만큼 심각한지, 또는 오류를 무시하고 다른 이벤트를 계속 처리할 수 있는지 확인할 수 있습니다. 일시 중단된 데이터베이스 트리거에 대한 자세한 내용은 일시 중단된 트리거를 참조하세요 .

아래와 같이 트리거 만들기 페이지 또는 함수 탭에서 직접 새 함수를 만들 수 있습니다. App Services에서 함수를 정의하는 방법에 대한 자세한 내용은 함수 정의를 참조하세요.

UI에서 EventBridge 사용자 정의 오류 처리 구성.
1

Configure Error Function 섹션에서 + New Function를 선택합니다.

이미 정의된 경우 드롭다운에서 기존 함수를 선택할 수도 있습니다.

2

0}Name 필드에 함수를 식별할 수 있는 고유한 이름을 입력합니다. 해당 이름은 애플리케이션의 다른 모든 기능과 구별되어야 합니다.

3

Function 섹션에서는 함수 편집기에서 직접 JavaScript 코드를 작성합니다. 함수 편집기에는 필요에 따라 편집할 수 있는 기본 함수가 포함되어 있습니다. 함수 생성에 대한 자세한 내용은 함수 설명서를 참조하세요.

4

함수 편집기 아래의 Testing Console 탭에서 테스트 콘솔의 주석에 표시된 대로 errorchangeEvent 매개변수에 예시 값을 전달하여 함수를 테스트할 수 있습니다.

이러한 매개변수에 대한 자세한 내용은 이 페이지의 오류 처리기 매개변수 섹션을 참조하세요.

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 속성을 추가합니다. 트리거 구성 파일은 다음과 유사해야 합니다.

<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 구성 파일을 참조하세요.

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 헤더에 베어러 토큰으로 포함해야 합니다.

다음도 참조하세요.

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

새 함수 생성 엔드포인트에 POST 요청을 통해 실패한 AWS EventBridge trigger에 대한 오류를 처리하는 함수를 생성합니다.

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

Trigger 생성 엔드포인트에 대한 POST 요청을 통해 오류 처리가 활성화된 AWS EventBridge 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 요청을 배포 초안 배포하기 엔드포인트로 보내서 초안의 모든 변경 사항을 배포할 수 있습니다. 첫 번째 단계로 초안을 생성하지 않은 경우 개별 함수와 트리거 요청은 자동으로 배포됩니다.

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의 두 가지 매개변수가 있습니다.

다음과 같은 두 가지 속성이 있습니다.

  • code: 오류가 발생한 EventBridge 넣기 요청의 코드입니다. 오류 핸들러에서 사용하는 오류 코드 목록은 아래 섹션을 참조하세요.

  • message: 오류가 발생한 EventBridge 넣기 요청의 필터링되지 않은 오류 메시지입니다.

EventBridge에서 요청한 데이터 변경 사항입니다. 변경 이벤트의 유형과 해당 구성에 대한 자세한 내용은 변경 이벤트 유형을 참조하세요.

EventBridge에서 오류를 받은 경우 이벤트 프로세서는 오류를 DOCUMENT_TOO_LARGE 또는 OTHER 로 구문 분석합니다. 이 구문 분석된 오류는 error 매개변수를 통해 오류 핸들러 함수로 전달됩니다.

EventBridge trigger 이벤트에 대한 넣기 항목이 256KB보다 큰 경우 EventBridge에서 오류가 발생합니다. 오류에는 다음 중 하나가 포함됩니다.

풋 엔트리 크기를 줄이는 방법에 대한 자세한 내용은 아래의 성능 최적화 섹션을 참조하세요.

다른 모든 오류에 대한 기본 버킷입니다.

기타 코드가 있는 오류에 대한 오류 처리 최적화

OTHER 코드가 있는 오류에 대한 오류 처리를 최적화하기 위해 가장 일반적인 오류 메시지에 대한 특수 오류 처리 사례를 만들 수 있습니다. 어떤 오류에 특별한 사례가 필요한지 확인하려면 error.message 에서 가장 일반적인 오류 메시지를 추적하는 것이 좋습니다.

애플리케이션 로그에서 EventBridge 트리거 오류 핸들러에 대한 트리거 오류 핸들러 로그 를 볼 수 있습니다.

  1. App Services UI의 왼쪽 탐색에서 Logs을(를) 클릭합니다.

  2. 앱의 모든 오류 처리기 로그를 보려면 Filter by Type 드롭다운을 클릭하고 Triggers Error Handlers을(를) 선택합니다.

앱의 모든 오류 처리기 로그를 보려면 trigger_error_handler 값을 --type 플래그에 전달합니다.

appservices logs list --type=trigger_error_handler

앱 서비스 로그 조회 엔드포인트에 대한 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"
}'

애플리케이션 로그 보기에 대해 자세히 알아보려면 애플리케이션 로그 보기를 참조하세요.

다음 객체는 AWS Eventbridge로 이벤트를 전송하고 오류를 처리하도록 트리거를 구성합니다.

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

EventBridge 트리거 이벤트에 대한 AWS 풋 엔트리는 256KB보다 작아야 합니다.

자세한 내용은 Amazon PutEvents 이벤트 항목 크기 계산에 대한 AWS 설명서를 참조하세요.

데이터베이스 트리거를 사용할 때 프로젝트 표현식을 사용하면 EventBridge로 메시지를 보내기 전에 문서 크기를 줄이는 데 유용할 수 있습니다. 이 표현식을 사용하면 지정된 필드만 포함시켜 문서 크기를 줄일 수 있습니다.

데이터베이스 트리거 프로젝트 표현식 설명서에서 자세히 알아보세요.

돌아가기

트리거 비활성화