AWS EventBridge에 트리거 이벤트 전송
이 페이지의 내용
MongoDBMongoDB 는 Atlas Function 을 호출하는 대신 AWS Eventbridge Atlas trigger Atlas 트리거하다 이벤트를 이벤트 버스로 보낼 수 있는 AWS Eventbridge 제휴하다 이벤트 소스를 Atlas Function 제공합니다. EventBridge로 이벤트를 전송하도록 모든 트리거하다 유형을 구성할 수 있습니다.trigger 데이터베이스 트리거는 사용자 지정 오류 처리도 지원 trigger 하여 중요하지 않은 오류로 인한 트리거하다 일시 중단을 줄입니다.
trigger 이벤트를 EventBridge로 전송하기 위해서는 Amazon Web Services 계정 ID 만 있으면 됩니다. 이 가이드 에서는 계정 ID 찾기, trigger 구성, trigger 이벤트 소스를 이벤트 버스와 연결하고, 사용자 지정 오류 처리를 설정하는 방법을 안내합니다.
절차
참고
EventBridge trigger 이벤트 의 개별 항목은 256 KB보다 작아야 합니다.
성능 최적화 섹션에서 PutEvents
항목의 크기를 줄이는 방법을 알아보세요.
MongoDB 제휴하다 이벤트 소스 설정
트리거 이벤트를 AWS EventBridge로 전송하려면 이벤트를 수신해야 하는 계정의 AWS account ID가 필요합니다.
Amazon EventBridge 콘솔 열기 탐색 Partner event sources 메뉴에서 를 클릭합니다.
MongoDB 제휴하다 이벤트 소스를 검색한 다음 Set up 을(를) 클릭합니다.
MongoDB 제휴하다 이벤트 소스 페이지에서 Copy 를 클릭하여 Amazon Web Services 계정 ID 를 클립보드에 복사합니다.
트리거 구성
AWS account ID이(가) 있으면 데이터베이스 trigger 또는 예약된 trigger 를 구성하여 이벤트를 EventBridge로 보낼 수 있습니다.
trigger Atlas UI App Services CLI 에서 또는 를 사용하여 를 구성할 수 있습니다.
Atlas UI 에서 다음 설정을 사용하여 새 데이터베이스 trigger 또는 예약된 trigger 를 만들고 구성합니다.
이벤트 유형으로 EventBridge 를 선택합니다.
EventBridge에서 복사한 AWS Account ID 를 붙여넣습니다.
trigger 이벤트를 보낼 AWS Region 를 선택합니다.
(데이터베이스 트리거의 경우에만 선택 사항) trigger 오류를 처리하다 함수를 구성합니다.
자세한 내용은 이 페이지의 사용자 지정 오류 처리 섹션을 참조하세요.
클릭하여 확대확장 JSON 을 활성화 하려면 Advanced (Optional) 섹션에서 Enable Extended JSON 설정을 토글합니다.
기본적으로 트리거는 이벤트 객체의 BSON types를 표준 JSON types로 변환합니다.
확장 JSON 을 활성화하면 대신 이벤트 객체를 확장 JSON 형식 으로 직렬화하여 BSON 유형 정보를 보존합니다. 이렇게 하면 가독성과 상호 운용성을 희생하면서 유형 정보를 보존합니다.
MongoDB Atlas 사용자 인증하기
MongoDB Atlas 관리 API 키 를 사용하여 App Services CLI 에 로그인 합니다.
appservices login --api-key="<API KEY>" --private-api-key="<PRIVATE KEY>" 앱의 최신 구성 파일 가져오기
다음 명령을 실행하여 구성 파일의 로컬 복사본을 가져옵니다.
appservices pull --remote=<App ID> 기본값 으로 이 명령은 파일을 현재 작업 디렉토리 로 가져옵니다. 선택 사항인
--local
플래그를 사용하여 디렉토리 경로를 지정할 수 있습니다.로컬
/triggers
디렉토리 에 trigger 구성 파일 을 만듭니다.function_name
필드 를 생략하고AWS_EVENTBRIDGE
이벤트 프로세서를 정의합니다.account_id
필드 를 EventBridge에서 복사한 AWS Account ID 로 설정합니다.region
필드 를 Amazon Web Services 리전으로 설정합니다.확장 JSON을 활성화하려면
extended_json_enabled
필드를true
로 설정합니다.기본적으로 트리거는 이벤트 객체의 BSON types를 표준 JSON types로 변환합니다.
확장 JSON 을 활성화하면 대신 이벤트 객체를 확장 JSON 형식 으로 직렬화하여 BSON 유형 정보를 보존합니다. 이렇게 하면 가독성과 상호 운용성을 희생하면서 유형 정보를 보존합니다.
(데이터베이스 트리거의 경우에만 선택 사항) trigger 오류를 처리하다 함수를 구성합니다.
자세한 내용은 이 페이지의 사용자 지정 오류 처리 섹션을 참조하세요.
trigger 구성 파일 은 다음과 유사해야 합니다.
{ "name": "...", "type": "...", "event_processors": { "AWS_EVENTBRIDGE": { "config": { "account_id": "<AWS Account ID>", "region": "<AWS Region>", "extended_json_enabled": <boolean> } } } }
트리거 이벤트 소스를 이벤트 버스에 연결하기
EventBridge 콘솔로 돌아갑니다.
탐색 창에서 파트너 이벤트 소스를 선택합니다.
Partner event sources 테이블에서 Pending trigger 소스를 찾아 선택한 다음 Associate with event bus를 클릭합니다.
Associate with event bus 화면에서 다른 계정 및 조직에 필요한 액세스 권한을 정의한 다음 Associate 을(를) 클릭합니다.
연결이 확인되면 trigger 이벤트 소스의 상태가 Pending 에서 Active로 변경되고 이벤트 버스의 이름이 이벤트 소스 이름과 일치하도록 업데이트됩니다. 이제 해당 제휴하다 이벤트 소스의 이벤트에 대해 trigger 되는 규칙을 만들 수 있습니다.
사용자 지정 오류 처리
참고
데이터베이스 트리거만 사용자 지정 오류 처리기 지원
현재는 데이터베이스 트리거만 사용자 지정 오류 처리를 지원 합니다. 인증 트리거 및 예정된 트리거는 현재 사용자 지정 오류 처리를 지원 하지 않습니다.
재시도가 성공하지 못한 경우 trigger 실패 시 실행할 오류 핸들러를 만들 수 있습니다. 사용자 지정 오류 처리를 사용하면 AWS Eventbridge 의 오류가 trigger 를 일시 중단할 만큼 심각한지, 또는 오류를 무시하고 다른 이벤트를 계속 처리 할 수 있는 수준인지 결정할 수 있습니다.
일시 중단된 데이터베이스 트리거에 대한 자세한 내용은 일시 중단된 트리거를 참조하세요 .
새 사용자 지정 오류 처리기 만들기
Atlas UI 에서 App Services CLI 를 사용하거나 App Services Admin API 를 통해 새 오류 핸들러를 만들 수 있습니다.
이 절차에서는 Create a Trigger 페이지에서 직접 새 함수를 생성하는 방법을 안내합니다.
Functions 페이지에서 함수를 만들 수도 있습니다. Atlas 에서 함수를 정의하는 방법에 대한 자세한 내용은 함수 정의를 참조하세요 .
함수 코드 작성하기
Function 섹션에서는 함수 편집기에서 직접 JavaScript 코드를 작성합니다. 함수 편집기에는 필요에 따라 편집할 수 있는 기본 함수가 포함되어 있습니다. 함수 생성에 대한 자세한 내용은 함수 설명서를 참조하세요.
기능 테스트
함수 편집기 아래의 Testing Console 탭에서 테스트 콘솔의 주석에 표시된 대로 error
및 changeEvent
매개변수에 예시 값을 전달하여 함수를 테스트할 수 있습니다.
이러한 매개변수에 대한 자세한 내용은 이 페이지의 오류 처리기 매개변수 섹션을 참조하세요.
Run을(를) 클릭하여 테스트를 실행합니다.
trigger를 사용하여 오류 처리기로 의 구성을 업데이트 할 수 App Services CLI 있습니다. 자세한 내용 은 앱 업데이트 절차를 참조하세요.
MongoDB Atlas 사용자 인증하기
MongoDB Atlas 관리 API 키 를 사용하여 App Services CLI 에 로그인 합니다.
appservices login --api-key="<API KEY>" --private-api-key="<PRIVATE KEY>"
오류 처리기 작성
함수 정의 의 단계에 따라 오류 핸들러 소스 코드 및 구성 파일 을 쓰기 (write) 합니다.
예시 로 다음 템플릿 오류 처리기를 참조하세요.
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
속성을 추가합니다.
trigger 구성 파일 은 다음과 유사해야 합니다.
{ "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 구성 파일을 참조하세요.
변경 사항 배포
다음 명령을 실행하여 변경 사항을 배포 합니다.
appservices push
참고
이 절차는 App Services Admin API 엔드포인트를 참조합니다. Atlas 관리 API 엔드포인트를 사용하지 않습니다 .
MongoDB Atlas 사용자 인증하기
MongoDB Atlas 관리 API 키 쌍 을 사용하여 Login endpoint(로그인 엔드포인트)를 호출합니다.
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
헤더에 베어러 토큰으로 포함해야 합니다.
배포 초안 만들기(선택 사항)
초안은 단일 단위로 배포 하거나 삭제할 수 있는 애플리케이션 변경 사항 그룹 을 나타냅니다. 초안을 생성하지 않으면 업데이트가 자동으로 개별적으로 배포 됩니다.
초안을 생성하려면 본문이 없는 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>'
오류 처리기 함수 만들기
새 함수 생성 엔드포인트에 대한 요청 을 통해 실패한 에 대한 오류를 처리하다 하는 함수를 생성합니다.AWS Eventbridge trigger 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 }'
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
요청 을 보내 초안의 모든 변경 사항을 배포 할 수 있습니다.
첫 번째 단계로 초안을 생성하지 않은 경우 개별 함수 및 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>' \
오류 핸들러 매개변수
기본 오류 처리기에는 error
및 changeEvent
의 두 가지 매개변수가 있습니다.
error
다음과 같은 두 가지 속성이 있습니다.
code
: 오류가 발생한 EventBridge 넣기 요청 에 대한 코드입니다. 오류 핸들러에서 사용하는 오류 코드 목록은 이 페이지의 오류 코드 섹션을 참조하세요.message
: 오류가 발생한 EventBridge 넣기 요청의 필터링되지 않은 오류 메시지입니다.
changeEvent
EventBridge에서 요청한 데이터 변경 사항입니다. 변경 이벤트의 유형과 해당 구성에 대한 자세한 내용은 변경 이벤트 유형을 참조하세요.
오류 코드
EventBridge에서 오류를 수신한 경우 이벤트 프로세서는 오류를 DOCUMENT_TOO_LARGE
또는 OTHER
로 구문 분석합니다. 이 구문 분석된 오류는 error
매개변수를 통해 오류 핸들러 함수에 전달됩니다.
DOCUMENT_TOO_LARGE
EventBridge trigger 이벤트 에 대한 항목이 256 KB보다 크면 EventBridge에서 오류가 발생합니다. 오류에는 다음 중 하나가 포함됩니다.
상태 코드: 400 및
total size of the entries in the request is over the limit
.상태 코드: 413, 이는 페이로드가 너무 큽니다.
항목 크기 줄이기에 대한 자세한 내용은 성능 최적화를 참조하세요.
OTHER
다른 모든 오류에 대한 기본 버킷입니다.
팁
기타 코드가 있는 오류에 대한 오류 처리 최적화
OTHER
코드가 있는 오류에 대한 오류 처리를 최적화하기 위해 가장 일반적인 오류 메시지에 대한 특수 오류 처리 사례를 만들 수 있습니다. 어떤 오류에 특별한 사례가 필요한지 확인하려면 error.message
에서 가장 일반적인 오류 메시지를 추적하는 것이 좋습니다.
오류 핸들러 로그
애플리케이션 로그에서 EventBridge 트리거 오류 핸들러에 대한 트리거 오류 핸들러 로그 를 볼 수 있습니다.
Atlas UI 의 Triggers
페이지에서 Logs 탭 을 선택합니다.
기본값 모든 로그가 표시됩니다. 오류 핸들러 로그만 보려면 Show errors only 토글을 클릭합니다.
모든 오류 핸들러 로그를 보려면 trigger_error_handler
값을 --type
플래그에 전달합니다.
appservices logs list --type=trigger_error_handler
참고
이 절차는 App Services Admin API 엔드포인트를 참조합니다. Atlas 관리 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 프로젝트 표현식 문서를 참조하세요.