AWS EventBridge에 트리거 이벤트 전송
이 페이지의 내용
개요
MongoDB 는 Atlas Function 을 호출하는 대신 Atlas Trigger 이벤트를 이벤트 버스로 보낼 수 있는 AWS Eventbridge 제휴하다 이벤트 소스를 제공합니다. EventBridge로 이벤트를 전송하도록 모든 트리거 유형을 구성할 수 있습니다. 데이터베이스 트리거는 사용자 지정 오류 처리도 지원 하여 중요하지 않은 오류로 인한 트리거하다 일시 중단을 줄입니다.
trigger 이벤트를 EventBridge로 전송하기 위해서는 Amazon Web Services 계정 ID가 필요합니다. 이 가이드에서는 계정 ID 찾기, trigger 구성, trigger 이벤트 소스를 이벤트 버스와 연결하고 사용자 지정 오류 처리를 설정하는 과정을 안내합니다.
절차
참고
EventBridge 트리거 이벤트에 대한 AWS 풋 엔트리는 256KB보다 작아야 합니다.
성능 최적화 섹션에서 PutEvents 항목의 크기를 줄이는 방법을 알아보세요.
MongoDB 제휴하다 이벤트 소스 설정
trigger 이벤트를 AWS Eventbridge 로 전송하려면 이벤트를 수신해야 하는 계정의 AWS account ID 이(가) 필요합니다. Amazon EventBridge 콘솔 Partner event sources 열기 탐색 메뉴에서 을 클릭합니다. Atlas Search에서 MongoDB 파트너 이벤트 소스를 검색한 다음 Set up 을(를) 클릭합니다.
MongoDB 0} 파트너 이벤트 Copy 소스 페이지에서 을 클릭하여 AWS 계정 ID를 클립보드에 복사합니다.
트리거 구성
AWS account ID가 있으면 이벤트를 EventBridge로 전송하도록 트리거를 구성할 수 있습니다.
App Services UI에서 새 데이터베이스 트리거, 인증 트리거 또는 예약된 트리거를 만들고 구성한 다음 EventBridge 이벤트 유형을 선택합니다.
EventBridge에서 복사한 AWS Account ID을(를) 붙여넣고 트리거 이벤트를 보낼 AWS Region을(를) 선택합니다.
선택 사항으로 트리거 오류를 처리하는 함수를 구성할 수 있습니다. 사용자 지정 오류 처리는 데이터베이스 트리거에만 유효합니다. 자세한 내용은 이 페이지의 사용자 지정 오류 처리 섹션을 참조하세요.
기본적으로 트리거는 이벤트 객체의 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> } } } }
트리거 이벤트 소스를 이벤트 버스에 연결하기
EventBridge 콘솔로 돌아가서 탐색 창에서 파트너 이벤트 소스를 선택합니다. Partner event sources 테이블에서 Pending 트리거 소스를 찾아 선택한 다음 Associate with event bus를 클릭합니다.
Associate with event bus 화면에서 다른 계정 및 조직에 필요한 액세스 권한을 정의한 다음 Associate를 클릭합니다.
확인되면 트리거 이벤트 소스의 상태가 Pending에서 Active로 변경되고 이벤트 버스의 이름이 이벤트 소스 이름과 일치하도록 업데이트됩니다. 이제 파트너 이벤트 소스의 이벤트에 대한 트리거 규칙을 생성할 수 있습니다. 자세한 내용은 SaaS 파트너 이벤트에서 트리거하는 규칙 생성을 참조하세요.
사용자 지정 오류 처리
참고
데이터베이스 트리거만 사용자 지정 오류 처리기 지원
현재는 데이터베이스 트리거만 사용자 지정 오류 처리를 지원합니다. 인증 트리거와 예약된 트리거는 현재 사용자 지정 오류 처리를 지원하지 않습니다.
재시도에 성공하지 못한 경우 트리거 실패 시 실행할 오류 핸들러를 만들 수 있습니다. 사용자 지정 오류 처리를 사용하면 AWS EventBridge의 오류가 트리거를 일시 중단할 만큼 심각한지, 또는 오류를 무시하고 다른 이벤트를 계속 처리할 수 있는지 확인할 수 있습니다. 일시 중단된 데이터베이스 트리거에 대한 자세한 내용은 일시 중단된 트리거를 참조하세요 .
새 사용자 지정 오류 처리기 만들기
아래와 같이 트리거 만들기 페이지 또는 함수 탭에서 직접 새 함수를 만들 수 있습니다. App Services에서 함수를 정의하는 방법에 대한 자세한 내용은 함수 정의를 참조하세요.
함수 코드 작성하기
Function 섹션에서는 함수 편집기에서 직접 JavaScript 코드를 작성합니다. 함수 편집기에는 필요에 따라 편집할 수 있는 기본 함수가 포함되어 있습니다. 함수 생성에 대한 자세한 내용은 함수 설명서를 참조하세요.
기능 테스트
함수 편집기 아래의 Testing Console 탭에서 테스트 콘솔의 주석에 표시된 대로 error
및 changeEvent
매개변수에 예시 값을 전달하여 함수를 테스트할 수 있습니다.
이러한 매개변수에 대한 자세한 내용은 이 페이지의 오류 처리기 매개변수 섹션을 참조하세요.
Run을(를) 클릭하여 테스트를 실행합니다.
오류 처리기로 trigger 구성을 업데이트하려면 다음 단계에 따라 앱을 업데이트하세요. 3 단계에서 구성 파일을 업데이트하는 경우 다음을 수행하세요.
오류 처리기 작성
함수 정의의 단계에 따라 오류 처리기 소스 코드와 구성 파일을 작성하세요.
오류 처리기 소스 코드는 다음 템플릿 오류 처리기를 참조하세요.
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}`); };
Trigger 구성에 오류 핸들러 추가
Triggers
폴더의 trigger 구성 파일에 error_handler
속성을 추가합니다. 트리거 구성 파일은 다음과 유사해야 합니다.
{ "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 구성 파일을 참조하세요.
MongoDB Atlas 사용자 인증하기
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
헤더에 베어러 토큰으로 포함해야 합니다.
배포 초안 만들기(선택 사항)
초안은 단일 단위로 배포 하거나 삭제할 수 있는 애플리케이션 변경 사항 그룹 을 나타냅니다. 초안을 생성하지 않으면 업데이트가 자동으로 개별적으로 배포 됩니다.
초안을 생성하려면 본문이 없는 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>'
오류 처리기 함수 만들기
새 함수 생성 엔드포인트에 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 }'
AWS EventBridge 트리거 생성
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" } }'
초안 배포
초안을 생성한 경우 본문 없이 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>' \
오류 핸들러 매개변수
기본 오류 처리기에는 error
및 changeEvent
의 두 가지 매개변수가 있습니다.
error
다음과 같은 두 가지 속성이 있습니다.
code
: 오류가 발생한 EventBridge 넣기 요청의 코드입니다. 오류 핸들러에서 사용하는 오류 코드 목록은 아래 섹션을 참조하세요.message
: 오류가 발생한 EventBridge 넣기 요청의 필터링되지 않은 오류 메시지입니다.
changeEvent
EventBridge에서 요청한 데이터 변경 사항입니다. 변경 이벤트의 유형과 해당 구성에 대한 자세한 내용은 변경 이벤트 유형을 참조하세요.
오류 코드
EventBridge에서 오류를 받은 경우 이벤트 프로세서는 오류를 DOCUMENT_TOO_LARGE
또는 OTHER
로 구문 분석합니다. 이 구문 분석된 오류는 error
매개변수를 통해 오류 핸들러 함수로 전달됩니다.
DOCUMENT_TOO_LARGE
EventBridge trigger 이벤트에 대한 넣기 항목이 256KB보다 큰 경우 EventBridge에서 오류가 발생합니다. 오류에는 다음 중 하나가 포함됩니다.
상태 코드: 400 및
total size of the entries in the request is over the limit
.상태 코드: 413, 이는 페이로드가 너무 큽니다.
풋 엔트리 크기를 줄이는 방법에 대한 자세한 내용은 아래의 성능 최적화 섹션을 참조하세요.
OTHER
다른 모든 오류에 대한 기본 버킷입니다.
팁
기타 코드가 있는 오류에 대한 오류 처리 최적화
OTHER
코드가 있는 오류에 대한 오류 처리를 최적화하기 위해 가장 일반적인 오류 메시지에 대한 특수 오류 처리 사례를 만들 수 있습니다. 어떤 오류에 특별한 사례가 필요한지 확인하려면 error.message
에서 가장 일반적인 오류 메시지를 추적하는 것이 좋습니다.
오류 핸들러 로그
애플리케이션 로그에서 EventBridge 트리거 오류 핸들러에 대한 트리거 오류 핸들러 로그 를 볼 수 있습니다.
App Services UI의 왼쪽 탐색에서
Logs
을(를) 클릭합니다.앱의 모든 오류 처리기 로그를 보려면 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로 메시지를 보내기 전에 문서 크기를 줄이는 데 유용할 수 있습니다. 이 표현식을 사용하면 지정된 필드만 포함시켜 문서 크기를 줄일 수 있습니다.