AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

튜토리얼: 트리거에서 타사 API 호출

이 튜토리얼에서는 데이터베이스 트리거를 생성합니다. 트리거는 문서 컬렉션 에 삽입될 때 타사 API 호출합니다. 트리거의 함수는 공식 AWS 소프트웨어 개발 키트(SDK)를 외부 종속성으로 추가합니다. 그런 다음 함수는 SDK를 사용하여 삽입된 문서 S3 버킷에 확장 JSON 객체 로 쓰기 (write) .

이 튜토리얼의 AWS S3 예시 Node.js 라이브러리가 있는 모든 타사 서비스에 적용되는 패턴 보여줍니다.

  • 서비스의 npm 패키지 외부 종속성으로 추가합니다.

  • 필요한 자격 자격 증명 시크릿으로 저장하고 함수의 값에서 참조하세요.

  • 함수 내에서 require()가 포함된 패키지 가져오고 저장한 자격 증명 사용하여 호출합니다.

이 튜토리얼을 완료하려면 다음이 필요합니다.

다음 값과 비밀을 생성하여 AWS 자격 증명 저장 .

  • AwsAccessKeyId: Value that contains your AWS access key ID.

  • AwsSecretAccessKeySecret: Secret that contains your AWS secret access key.

  • AwsSecretAccessKey: Secret에 연결되는 값입니다. 이를 통해 함수의 시크릿 액세스 키에 액세스 하면서 시크릿으로 안전하게 저장할 수 있습니다.

1

Atlas에서 Triggers 페이지로 이동합니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Streaming Data 제목 아래의 Triggers를 클릭합니다.

트리거 페이지가 표시됩니다.

  1. View All Apps 버튼을 클릭합니다.

  2. 트리거를 생성하려는 앱 클릭합니다.

  3. 사이드바에서 Build 제목 아래의 Values를 클릭합니다.

2
  1. Create a Value를 클릭합니다.

  2. Value Name(으)로 AwsAccessKeyId 을(를) 입력합니다.

  3. Value 유형을 선택합니다.

  4. Custom Content 옵션을 선택하고 AWS 액세스 키 ID 입력합니다.

    참고

    액세스 키 ID 따옴표("<accessKeyId>")가 포함된 문자열 값으로 입력해야 합니다.

  5. Save Draft를 클릭합니다.

3

참고

시크릿 값에는 직접 액세스할 수 없으므로 시크릿에 연결되는 두 번째 값을 생성해야 합니다.

  1. Create a Value를 클릭합니다.

  2. Value Name(으)로 AwsSecretAccessKey 을(를) 입력합니다.

  3. Value 유형을 선택합니다.

  4. Link to Secret 옵션을 선택합니다.

  5. AwsSecretAccessKeySecret을 입력하고 Create "AwsSecretAccessKeySecret"을 클릭하여 시크릿의 이름을 지정합니다.

    AWS 시크릿 액세스 키를 시크릿 이름 아래에 표시되는 필드 에 붙여넣습니다.

  6. Save Draft 를 클릭하여 Secret과 Value를 모두 생성합니다.

문서 삽입될 때 새 함수를 호출하는 데이터베이스 트리거를 생성합니다. aws-sdk 종속성을 추가하고 동일한 형식으로 함수 코드를 정의합니다.

1

Atlas에서 Triggers 페이지로 이동합니다.

  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Streaming Data 제목 아래의 Triggers를 클릭합니다.

트리거 페이지가 표시됩니다.

2
  1. Add Trigger을 클릭하여 트리거 구성 페이지를 엽니다.

  2. Database 트리거 유형을 선택한 후 다음 값을 사용하여 트리거를 구성합니다:

    설정
    값
    Trigger Name

    WriteDocumentToS3Trigger

    Watch Against

    Collection

    Cluster Name

    테스트 클러스터 의 이름

    Database Name

    테스트 데이터베이스 의 이름

    Collection Name

    테스트 컬렉션 의 이름

    Operation Type

    Insert만 선택합니다.

    Event Type

    Function

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

3
  1. Function 섹션에서 Add Dependency을 클릭합니다.

  2. Add Dependency 창 에서 Define a Package Name로 aws-sdk을 입력하고 Package Version을 비워 두어 최신 버전을 사용합니다.

  3. 패키지 를 추가하려면 Add 를 클릭합니다.

4

YOUR_AWS_REGION 및 YOUR_S3_BUCKET_NAME를 AWS Management Console의 자체 AWS 리전과 전체 버킷 이름으로 바꿉니다.

1/*
2 * Write a newly-inserted document to an S3 bucket as an Extended JSON object.
3 */
4exports = async function writeDocumentToS3(changeEvent) {
5 const { fullDocument } = changeEvent;
6
7 // require calls must be in the exports function
8 const S3 = require("aws-sdk/clients/s3");
9 const s3 = new S3({
10 accessKeyId: context.values.get("AwsAccessKeyId"),
11 secretAccessKey: context.values.get("AwsSecretAccessKey"),
12 region: "YOUR_AWS_REGION",
13 });
14
15 const key = `inserted-documents/${fullDocument._id.toString()}.json`;
16
17 // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
18 await s3.putObject({
19 Bucket: "YOUR_S3_BUCKET_NAME",
20 Key: key,
21 Body: EJSON.stringify(fullDocument),
22 ContentType: "application/json",
23 }).promise();
24
25 return `Wrote document ${fullDocument._id} to ${key}`;
26};

문서 삽입될 때마다 함수는 다음을 수행합니다.

  • 변경 이벤트의 fullDocument 필드 에서 삽입된 문서 읽습니다.

  • 값에 저장된 AWS 자격 증명 으로 인증하는 S3 클라이언트 생성합니다.

  • 버킷의 inserted-documents/ 접두사에 문서 <_id>.json(으)로 씁니다.

참고

함수는 문서의 _id를 S3 객체 키의 일부로 사용합니다. 문서가 ObjectId 이외의 _id 유형을 사용하는 경우, 키가 예상한 것과 다를 수 있습니다.

5

중요

앱 에 대해 배포서버 초안이 활성화된 경우 Review & Deploy를 클릭하여 값, 비밀, 종속성, 함수 및 트리거를 배포 . 배포 때까지 트리거가 실행 되지 않고 다음 단계가 실패합니다.

트리거가 감시하는 컬렉션 에 테스트 문서 삽입합니다. 해당 확장 JSON 객체 S3 버킷의 inserted-documents/ 접두사 아래에 나타나는지 확인합니다.

2

다음 예시 에서는 테스트 컬렉션 에 문서 하나를 삽입합니다. YOUR_DATABASE_NAME 및 YOUR_COLLECTION_NAME을 트리거를 생성할 때 입력한 데이터베이스 및 컬렉션 으로 바꿉니다.

// Replace YOUR_DATABASE_NAME and YOUR_COLLECTION_NAME with the
// database and collection that the Trigger watches.
use YOUR_DATABASE_NAME
db.YOUR_COLLECTION_NAME.insertOne({
tutorialTest: "atlas-trigger-s3",
createdAt: new Date()
})

출력에서 insertedId 값을 확인합니다. 함수는 이 값을 S3 객체 의 이름으로 사용합니다.

3

AWS Management Console에서 S3 버킷을 열고 inserted-documents/ 접두사로 이동합니다. <insertedId>.json라는 객체 표시되며, 여기서 <insertedId>는 이전 단계의 insertedId 값입니다.

참고

객체 나타나지 않으면 트리거의 실행 로그를 검토 . 방법을 학습 트리거 로그를 참조하세요.