Docs Menu
Docs Home
/
MongoDB Atlas
/ /

AWS EventBridge에 트리거 이벤트 전송

이 페이지의 내용

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

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

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

참고

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

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

참고

EventBridge trigger 이벤트 의 개별 항목은 256 KB보다 작아야 합니다.

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

1

트리거 이벤트를 AWS EventBridge로 전송하려면 이벤트를 수신해야 하는 계정의 AWS account ID가 필요합니다.

  1. Amazon EventBridge 콘솔 열기 탐색 Partner event sources 메뉴에서 를 클릭합니다.

  2. MongoDB 제휴하다 이벤트 소스를 검색한 다음 Set up 을(를) 클릭합니다.

  3. MongoDB 제휴하다 이벤트 소스 페이지에서 Copy 를 클릭하여 Amazon Web Services 계정 ID 를 클립보드에 복사합니다.

2

AWS account ID이(가) 있으면 데이터베이스 trigger 또는 예약된 trigger 를 구성하여 이벤트를 EventBridge로 보낼 수 있습니다.

trigger Atlas UI App Services CLI 에서 또는 를 사용하여 를 구성할 수 있습니다.

Atlas UI 에서 다음 설정을 사용하여 새 데이터베이스 trigger 또는 예약된 trigger 를 만들고 구성합니다.

  1. 이벤트 유형으로 EventBridge 를 선택합니다.

  2. EventBridge에서 복사한 AWS Account ID 를 붙여넣습니다.

  3. trigger 이벤트를 보낼 AWS Region 를 선택합니다.

    참고

    지원되는 AWS 지역

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

  4. (데이터베이스 트리거의 경우에만 선택 사항) trigger 오류를 처리하다 함수를 구성합니다.

    자세한 내용은 이 페이지의 사용자 지정 오류 처리 섹션을 참조하세요.

    트리서 구성의 EventBridge 입력 상자입니다.
    클릭하여 확대
  5. 확장 JSON 을 활성화 하려면 Advanced (Optional) 섹션에서 Enable Extended JSON 설정을 토글합니다.

    기본적으로 트리거는 이벤트 객체의 BSON types를 표준 JSON types로 변환합니다.

    확장 JSON 을 활성화하면 대신 이벤트 객체를 확장 JSON 형식 으로 직렬화하여 BSON 유형 정보를 보존합니다. 이렇게 하면 가독성과 상호 운용성을 희생하면서 유형 정보를 보존합니다.

  1. MongoDB Atlas 사용자 인증하기

    MongoDB Atlas 관리 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 지역

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

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

    기본적으로 트리거는 이벤트 객체의 BSON types를 표준 JSON types로 변환합니다.

    확장 JSON 을 활성화하면 대신 이벤트 객체를 확장 JSON 형식 으로 직렬화하여 BSON 유형 정보를 보존합니다. 이렇게 하면 가독성과 상호 운용성을 희생하면서 유형 정보를 보존합니다.

  7. (데이터베이스 트리거의 경우에만 선택 사항) 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 를 일시 중단할 만큼 심각한지, 또는 오류를 무시하고 다른 이벤트를 계속 처리 할 수 있는 수준인지 결정할 수 있습니다.

일시 중단된 데이터베이스 트리거에 대한 자세한 내용은 일시 중단된 트리거를 참조하세요 .

Atlas UI 에서 App Services CLI 를 사용하거나 App Services Admin API 를 통해 새 오류 핸들러를 만들 수 있습니다.

이 절차에서는 Create a Trigger 페이지에서 직접 새 함수를 생성하는 방법을 안내합니다.

Functions 페이지에서 함수를 만들 수도 있습니다. Atlas 에서 함수를 정의하는 방법에 대한 자세한 내용은 함수 정의를 참조하세요 .

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

Create a Trigger 페이지의 Configure Error Function 섹션에서 + NewFunction 을(를) 선택합니다.

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

2

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

3

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

4

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

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

Run을(를) 클릭하여 테스트를 실행합니다.

5

사용자 지정 오류 처리기가 만족스러우면 Save을(를) 클릭합니다.

trigger를 사용하여 오류 처리기로 의 구성을 업데이트 할 수 App Services CLI 있습니다. 자세한 내용 은 앱 업데이트 절차를 참조하세요.

1

MongoDB Atlas 관리 API 키 를 사용하여 App Services CLI 에 로그인 합니다.

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

다음 명령을 실행하여 구성 파일의 로컬 복사본을 가져옵니다.

appservices pull --remote=<App ID>

기본값 으로 이 명령은 파일을 현재 작업 디렉토리 로 가져옵니다. 선택 사항인 --local 플래그를 사용하여 디렉토리 경로를 지정할 수 있습니다.

3

함수 정의 의 단계에 따라 오류 핸들러 소스 코드 및 구성 파일 을 쓰기 (write) 합니다.

예시 로 다음 템플릿 오류 처리기를 참조하세요.

<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 관리 API 엔드포인트를 사용하지 않습니다 .

1

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

다음도 참조하세요.

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 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
}'
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 요청 을 보내 초안의 모든 변경 사항을 배포 할 수 있습니다.

첫 번째 단계로 초안을 생성하지 않은 경우 개별 함수 및 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의 두 가지 매개변수가 있습니다.

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

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

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

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

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

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

항목 크기 줄이기에 대한 자세한 내용은 성능 최적화를 참조하세요.

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

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

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 프로젝트 표현식 문서를 참조하세요.

돌아가기

트리거 비활성화