Lambda로 Amazon DocumentDB 이벤트 처리하기

Lambda로 Amazon DocumentDB 이벤트 처리하기

Amazon DocumentDB(MongoDB 호환) 변경 스트림의 이벤트를 처리하려면 Lambda 함수를 사용하고 Amazon DocumentDB 클러스터를 이벤트 소스로 구성할 수 있어요. 그런 다음 Amazon DocumentDB 클러스터에서 데이터가 변경될 때마다 Lambda 함수를 호출해서 이벤트 기반 워크로드를 자동화할 수 있어요.

참고 Lambda는 Amazon DocumentDB 버전 4.0과 5.0만 지원해요. Lambda는 버전 3.6을 지원하지 않아요. 또한 이벤트 소스 매핑의 경우 Lambda는 인스턴스 기반 클러스터와 리전 클러스터만 지원해요. Lambda는 탄력적 클러스터나 글로벌 클러스터를 지원하지 않아요. 이 제한은 Lambda를 클라이언트로 사용해 Amazon DocumentDB에 연결하는 경우에는 적용되지 않아요. Lambda는 CRUD 작업을 수행하기 위해 모든 클러스터 유형에 연결할 수 있어요.

Lambda는 Amazon DocumentDB 변경 스트림의 이벤트를 도착 순서대로 순차적으로 처리해요. 이 때문에 함수는 한 번에 Amazon DocumentDB에서 하나의 동시 호출만 처리할 수 있어요. 함수를 모니터링하려면 동시성 지표를 추적할 수 있어요.

경고 Lambda 이벤트 소스 매핑은 각 이벤트를 최소 한 번 처리하며 레코드의 중복 처리가 발생할 수 있어요. 중복 이벤트와 관련된 잠재적 문제를 피하려면 함수 코드를 멱등으로 만들 것을 강력히 권장해요. 자세한 내용은 AWS Knowledge Center의 Lambda 함수를 멱등으로 만들려면 어떻게 하나요를 참고하세요.

주제

출처: AWS Lambda 개발자 안내서

본문

예시 Amazon DocumentDB 이벤트

{
    "eventSourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:canaryclusterb2a659a2-qo5tcmqkcl03",
    "events": [
        {
            "event": {
                "_id": {
                    "_data": "0163eeb6e7000000090100000009000041e1"
                },
                "clusterTime": {
                    "$timestamp": {
                        "t": 1676588775,
                        "i": 9
                    }
                },
                "documentKey": {
                    "_id": {
                        "$oid": "63eeb6e7d418cd98afb1c1d7"
                    }
                },
                "fullDocument": {
                    "_id": {
                        "$oid": "63eeb6e7d418cd98afb1c1d7"
                    },
                    "anyField": "sampleValue"
                },
                "ns": {
                    "db": "test_database",
                    "coll": "test_collection"
                },
                "operationType": "insert"
            }
        }
    ],
    "eventSource": "aws:docdb"
}

이 예시의 이벤트와 그 형태에 대한 자세한 내용은 MongoDB 문서 웹사이트의 Change Events를 참고하세요.

사전 요구 사항 및 권한

Amazon DocumentDB를 Lambda 함수의 이벤트 소스로 사용하기 전에 다음 사전 요구 사항을 확인하세요. 다음을 수행해야 해요:

  • 함수와 동일한 AWS 계정 및 AWS 리전에 기존 Amazon DocumentDB 클러스터가 있어야 합니다. 기존 클러스터가 없다면 Amazon DocumentDB 개발자 안내서의 Amazon DocumentDB 시작하기 단계에 따라 만들 수 있어요. 또는 튜토리얼: AWS Lambda와 Amazon DocumentDB Streams 사용의 첫 단계에서 필요한 모든 사전 요구 사항이 있는 Amazon DocumentDB 클러스터를 만들도록 안내해요.
  • Lambda가 Amazon DocumentDB 클러스터와 연결된 Amazon Virtual Private Cloud(Amazon VPC) 리소스에 액세스하도록 허용합니다. 자세한 내용은 네트워크 보안 구성을 참고하세요.
  • Amazon DocumentDB 클러스터에서 TLS를 활성화합니다. 이것이 기본 설정이에요. TLS를 비활성화하면 Lambda가 클러스터와 통신할 수 없어요.
  • Amazon DocumentDB 클러스터에서 변경 스트림을 활성화합니다. 자세한 내용은 Amazon DocumentDB 개발자 안내서의 Amazon DocumentDB와 함께 변경 스트림 사용을 참고하세요.
  • Lambda에 Amazon DocumentDB 클러스터에 액세스할 수 있는 자격 증명을 제공합니다. 이벤트 소스를 설정할 때 클러스터에 액세스하는 데 필요한 인증 세부 정보(사용자 이름 및 비밀번호)가 포함된 AWS Secrets Manager 키를 제공하세요. 설정 중 이 키를 제공하려면 다음 중 하나를 수행하세요:
    • Lambda 콘솔을 사용해 설정한다면 Secrets manager key 필드에 키를 제공하세요.

    • AWS Command Line Interface(AWS CLI)를 사용해 설정한다면 source-access-configurations 옵션에 이 키를 제공하세요. 이 옵션은 create-event-source-mapping 명령이나 update-event-source-mapping 명령과 함께 포함할 수 있어요. 예를 들어:

      aws lambda create-event-source-mapping \
          ...
          --source-access-configurations  '[{"Type":"BASIC_AUTH","URI":"arn:aws:secretsmanager:us-west-2:123456789012:secret:DocDBSecret-AbC4E6"}]' \
          ...
      
  • Lambda에 Amazon DocumentDB 스트림과 관련된 리소스를 관리할 권한을 부여합니다. 함수의 실행 역할에 다음 권한을 수동으로 추가하세요:
  • Lambda로 보내는 Amazon DocumentDB 변경 스트림 이벤트의 크기를 6MB 미만으로 유지합니다. Lambda는 최대 6MB의 페이로드 크기를 지원해요. 변경 스트림이 6MB보다 큰 이벤트를 Lambda에 보내려고 하면 Lambda는 메시지를 삭제하고 OversizedRecordCount 지표를 내보내요. Lambda는 모든 지표를 최선 노력 방식으로 내보내요.

참고 Lambda 함수에는 일반적으로 최대 15분의 제한이 있지만, Amazon MSK, 자체 관리형 Apache Kafka, Amazon DocumentDB, Amazon MQ for ActiveMQ 및 RabbitMQ용 이벤트 소스 매핑은 최대 시간 제한이 14분인 함수만 지원해요. 이 제약은 이벤트 소스 매핑이 함수 오류와 재시도를 제대로 처리할 수 있도록 보장해요.

네트워크 보안 구성

이벤트 소스 매핑을 통해 Lambda에 Amazon DocumentDB에 대한 전체 액세스 권한을 부여하려면 클러스터가 공개 엔드포인트(공개 IP 주소)를 사용하거나, 클러스터를 만든 Amazon VPC에 대한 액세스를 제공해야 해요.

Lambda와 함께 Amazon DocumentDB를 사용할 때 함수가 Amazon VPC의 리소스에 액세스할 수 있게 해주는 AWS PrivateLink VPC 엔드포인트를 만들어요.

참고 이벤트 폴러에 기본(온디맨드) 모드를 사용하는 이벤트 소스 매핑이 있는 함수에는 AWS PrivateLink VPC 엔드포인트가 필요해요. 이벤트 소스 매핑이 프로비저닝 모드를 사용한다면 AWS PrivateLink VPC 엔드포인트를 구성할 필요가 없어요.

다음 리소스에 대한 액세스를 제공하는 엔드포인트를 만드세요:

  • Lambda — Lambda 서비스 보안 주체에 대한 엔드포인트를 만듭니다.
  • AWS STS — 서비스 보안 주체가 사용자를 대신해 역할을 맡을 수 있도록 AWS STS에 대한 엔드포인트를 만듭니다.
  • Secrets Manager — 클러스터가 자격 증명을 저장하는 데 Secrets Manager를 사용한다면 Secrets Manager에 대한 엔드포인트를 만듭니다.

또는 Amazon VPC의 각 공용 서브넷에 NAT 게이트웨이를 구성하세요. 자세한 내용은 VPC 연결 Lambda 함수에 대한 인터넷 액세스 활성화를 참고하세요.

Amazon DocumentDB에 대한 이벤트 소스 매핑을 만들 때 Lambda는 Amazon VPC에 구성된 서브넷과 보안 그룹에 대해 탄력적 네트워크 인터페이스(ENI)가 이미 있는지 확인해요. 기존 ENI를 찾으면 재사용하려고 시도하고, 그렇지 않으면 Lambda가 이벤트 소스에 연결하고 함수를 호출하기 위한 새 ENI를 만들어요.

참고 Lambda 함수는 항상 Lambda 서비스가 소유한 VPC 내부에서 실행돼요. 함수의 VPC 구성은 이벤트 소스 매핑에 영향을 주지 않아요. Lambda가 이벤트 소스에 연결하는 방식을 결정하는 것은 이벤트 소스의 네트워킹 구성뿐이에요.

클러스터를 포함하는 Amazon VPC의 보안 그룹을 구성하세요. 기본적으로 Amazon DocumentDB는 27017 포트를 사용해요.

  • 인바운드 규칙 – 이벤트 소스와 연결된 보안 그룹의 기본 브로커 포트에서 모든 트래픽을 허용합니다. 또는 자체 참조 보안 그룹 규칙을 사용해서 동일한 보안 그룹 내 인스턴스의 액세스를 허용할 수 있습니다.
  • 아웃바운드 규칙 – 함수가 AWS 서비스와 통신해야 한다면 외부 대상에 대해 포트 443의 모든 트래픽을 허용합니다. 또는 다른 AWS 서비스와 통신할 필요가 없다면 자체 참조 보안 그룹 규칙을 사용해서 브로커에 대한 액세스를 제한할 수 있습니다.
  • Amazon VPC 엔드포인트 인바운드 규칙 – Amazon VPC 엔드포인트를 사용한다면 Amazon VPC 엔드포인트와 연결된 보안 그룹이 클러스터 보안 그룹의 포트 443 인바운드 트래픽을 허용해야 합니다.

클러스터가 인증을 사용한다면 Secrets Manager 엔드포인트의 엔드포인트 정책을 제한할 수도 있어요. Secrets Manager API를 호출하기 위해 Lambda는 Lambda 서비스 보안 주체가 아니라 함수 역할을 사용해요.

예시 VPC 엔드포인트 정책 — Secrets Manager 엔드포인트

{
      "Statement": [
          {
              "Action": "secretsmanager:GetSecretValue",
              "Effect": "Allow",
              "Principal": {
                  "AWS": [
                      "arn:aws::iam::123456789012:role/{{my-role}}"
                  ]
              },
              "Resource": "arn:aws::secretsmanager:{{us-west-2}}:123456789012:secret:{{my-secret}}"
          }
      ]
  }

Amazon VPC 엔드포인트를 사용하면 AWS가 엔드포인트의 탄력적 네트워크 인터페이스(ENI)를 사용해서 함수를 호출하는 API 호출을 라우팅해요. Lambda 서비스 보안 주체는 해당 ENI를 사용하는 모든 역할과 함수에 대해 lambda:InvokeFunction을 호출할 수 있어야 해요.

기본적으로 Amazon VPC 엔드포인트에는 리소스에 대한 광범위한 액세스를 허용하는 개방형 IAM 정책이 있어요. 모범 사례는 이러한 정책을 해당 엔드포인트를 사용해 필요한 작업만 수행하도록 제한하는 거예요. 이벤트 소스 매핑이 Lambda 함수를 호출할 수 있도록 하려면 VPC 엔드포인트 정책이 Lambda 서비스 보안 주체의 sts:AssumeRole 및 lambda:InvokeFunction 호출을 허용해야 해요. VPC 엔드포인트 정책을 조직 내에서 시작된 API 호출만 허용하도록 제한하면 이벤트 소스 매핑이 제대로 작동하지 않으므로 이러한 정책에는 "Resource": "*"가 필요해요.

다음 예시 VPC 엔드포인트 정책은 AWS STS 및 Lambda 엔드포인트에 대해 Lambda 서비스 보안 주체에 필요한 액세스 권한을 부여하는 방법을 보여줘요.

예시 VPC 엔드포인트 정책 — AWS STS 엔드포인트

{
      "Statement": [
          {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "lambda.amazonaws.com"
                  ]
              },
              "Resource": "*"
          }
      ]
    }

예시 VPC 엔드포인트 정책 — Lambda 엔드포인트

{
      "Statement": [
          {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "lambda.amazonaws.com"
                  ]
              },
              "Resource": "*"
          }
      ]
  }

Amazon DocumentDB 이벤트 소스 매핑 만들기(콘솔)

Lambda 함수가 Amazon DocumentDB 클러스터의 변경 스트림에서 읽으려면 이벤트 소스 매핑을 만들어요. 이 섹션은 Lambda 콘솔에서 이 작업을 수행하는 방법을 설명해요. AWS SDK 및 AWS CLI 지침은 Amazon DocumentDB 이벤트 소스 매핑 만들기(SDK 또는 CLI)를 참고하세요.

Amazon DocumentDB 이벤트 소스 매핑을 만들려면(콘솔)

  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수 이름을 선택합니다.

  3. 함수 개요(Function overview)에서 트리거 추가(Add trigger)를 선택합니다.

  4. 트리거 구성(Trigger configuration)의 드롭다운 목록에서 DocumentDB를 선택합니다.

  5. 필수 옵션을 구성한 다음 추가(Add)를 선택합니다.

Lambda는 Amazon DocumentDB 이벤트 소스에 대해 다음 옵션을 지원해요:

  • DocumentDB 클러스터(DocumentDB cluster) – Amazon DocumentDB 클러스터를 선택합니다.
  • 트리거 활성화(Activate trigger) – 트리거를 즉시 활성화할지 선택합니다. 이 확인란을 선택하면 이벤트 소스 매핑 생성 시 함수가 지정된 Amazon DocumentDB 변경 스트림에서 즉시 트래픽을 받기 시작합니다. 테스트를 위해 이벤트 소스 매핑을 비활성화 상태로 만들려면 확인란을 해제하는 것을 권장합니다. 생성 후에는 언제든지 이벤트 소스 매핑을 활성화할 수 있습니다.
  • 데이터베이스 이름(Database name) – 소비할 클러스터 내 데이터베이스 이름을 입력합니다.
  • (선택 사항) 컬렉션 이름(Collection name) – 소비할 데이터베이스 내 컬렉션 이름을 입력합니다. 컬렉션을 지정하지 않으면 Lambda는 데이터베이스의 각 컬렉션에서 모든 이벤트를 수신합니다.
  • 배치 크기(Batch size) – 단일 배치에서 검색할 최대 메시지 수를 최대 10,000까지 설정합니다. 기본 배치 크기는 100입니다.
  • 시작 위치(Starting position) – 스트림에서 레코드 읽기를 시작할 위치를 선택합니다.
    • Latest – 스트림에 추가된 새 레코드만 처리합니다. 함수는 Lambda가 이벤트 소스를 만든 후에만 레코드 처리를 시작합니다. 즉 이벤트 소스가 성공적으로 생성될 때까지 일부 레코드가 버려질 수 있습니다.
    • Trim horizon – 스트림의 모든 레코드를 처리합니다. Lambda는 클러스터의 로그 보존 기간을 사용해서 이벤트 읽기를 시작할 위치를 결정합니다. 구체적으로 Lambda는 current_time - log_retention_duration부터 읽기 시작합니다. Lambda가 모든 이벤트를 제대로 읽으려면 변경 스트림이 이 타임스탬프 전에 이미 활성화되어 있어야 합니다.
    • At timestamp – 특정 시간부터 레코드를 처리합니다. Lambda가 모든 이벤트를 제대로 읽으려면 변경 스트림이 지정된 타임스탬프 전에 이미 활성화되어 있어야 합니다.
  • 인증(Authentication) – 클러스터의 브로커에 액세스하기 위한 인증 방법을 선택합니다.
    • BASIC_AUTH – 기본 인증의 경우 클러스터에 액세스하기 위한 자격 증명이 포함된 Secrets Manager 키를 제공해야 합니다.
  • Secrets Manager 키(Secrets Manager key) – Amazon DocumentDB 클러스터에 액세스하는 데 필요한 인증 세부 정보(사용자 이름 및 비밀번호)가 포함된 Secrets Manager 키를 선택합니다.
  • (선택 사항) 배치 창(Batch window) – 함수를 호출하기 전에 레코드를 모으는 최대 시간(초)을 최대 300까지 설정합니다.
  • (선택 사항) 전체 문서 구성(Full document configuration) – 문서 업데이트 작업의 경우 스트림으로 보낼 내용을 선택합니다. 기본값은 Default로, 각 변경 스트림 이벤트에 대해 Amazon DocumentDB가 변경 사항을 설명하는 델타만 보낸다는 뜻입니다. 이 필드에 대한 자세한 내용은 MongoDB Javadoc API 문서의 FullDocument를 참고하세요.
    • Default – Lambda는 변경 사항을 설명하는 부분 문서만 보냅니다.
    • UpdateLookup – Lambda는 변경 사항을 설명하는 델타와 전체 문서의 사본을 보냅니다.

Amazon DocumentDB 이벤트 소스 매핑 만들기(SDK 또는 CLI)

AWS SDK로 Amazon DocumentDB 이벤트 소스 매핑을 만들거나 관리하려면 다음 API 작업을 사용할 수 있어요:

AWS CLI로 이벤트 소스 매핑을 만들려면 create-event-source-mapping 명령을 사용하세요. 다음 예시는 이 명령을 사용해서 my-function 함수를 Amazon DocumentDB 변경 스트림에 매핑해요. 이벤트 소스는 Amazon 리소스 이름(ARN)으로 지정되며 배치 크기는 500이고 Unix 시간의 타임스탬프부터 시작해요. 이 명령은 Lambda가 Amazon DocumentDB에 연결하는 데 사용하는 Secrets Manager 키도 지정해요. 또한 읽을 데이터베이스와 컬렉션을 지정하는 document-db-event-source-config 매개변수를 포함해요.

aws lambda create-event-source-mapping --function-name my-function \
    --event-source-arn arn:aws:rds:us-west-2:123456789012:cluster:privatecluster7de2-epzcyvu4pjoy
    --batch-size 500 \
    --starting-position AT_TIMESTAMP \
    --starting-position-timestamp 1541139109 \
    --source-access-configurations '[{"Type":"BASIC_AUTH","URI":"arn:aws:secretsmanager:us-east-1:123456789012:secret:DocDBSecret-BAtjxi"}]' \
    --document-db-event-source-config '{"DatabaseName":"test_database", "CollectionName": "test_collection"}' \

다음과 같은 출력이 표시될 거예요:

{
    "UUID": "2b733gdc-8ac3-cdf5-af3a-1827b3b11284",
    "BatchSize": 500,
    "DocumentDBEventSourceConfig": {
        "CollectionName": "test_collection",
        "DatabaseName": "test_database",
        "FullDocument": "Default"
    },
    "MaximumBatchingWindowInSeconds": 0,
    "EventSourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:privatecluster7de2-epzcyvu4pjoy",
    "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
    "LastModified": 1541348195.412,
    "LastProcessingResult": "No records processed",
    "State": "Creating",
    "StateTransitionReason": "User action"
}

생성 후 update-event-source-mapping 명령을 사용해서 Amazon DocumentDB 이벤트 소스의 설정을 업데이트할 수 있어요. 다음 예시는 배치 크기를 1,000으로, 배치 창을 10초로 업데이트해요. 이 명령에는 list-event-source-mapping 명령이나 Lambda 콘솔로 검색할 수 있는 이벤트 소스 매핑의 UUID가 필요해요.

aws lambda update-event-source-mapping --function-name my-function \
    --uuid f89f8514-cdd9-4602-9e1f-01a5b77d449b \
    --batch-size 1000 \
    --batch-window 10

다음과 같은 출력이 표시될 거예요:

{
    "UUID": "2b733gdc-8ac3-cdf5-af3a-1827b3b11284",
    "BatchSize": 500,
    "DocumentDBEventSourceConfig": {
        "CollectionName": "test_collection",
        "DatabaseName": "test_database",
        "FullDocument": "Default"
    },
    "MaximumBatchingWindowInSeconds": 0,
    "EventSourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:privatecluster7de2-epzcyvu4pjoy",
    "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
    "LastModified": 1541359182.919,
    "LastProcessingResult": "OK",
    "State": "Updating",
    "StateTransitionReason": "User action"
}

Lambda는 설정을 비동기식으로 업데이트하므로 프로세스가 완료될 때까지 출력에서 이러한 변경 사항이 보이지 않을 수 있어요. 이벤트 소스 매핑의 현재 설정을 보려면 get-event-source-mapping 명령을 사용하세요.

aws lambda get-event-source-mapping --uuid f89f8514-cdd9-4602-9e1f-01a5b77d449b

다음과 같은 출력이 표시될 거예요:

{
    "UUID": "2b733gdc-8ac3-cdf5-af3a-1827b3b11284",
    "DocumentDBEventSourceConfig": {
        "CollectionName": "test_collection",
        "DatabaseName": "test_database",
        "FullDocument": "Default"
    },
    "BatchSize": 1000,
    "MaximumBatchingWindowInSeconds": 10,
    "EventSourceArn": "arn:aws:rds:us-west-2:123456789012:cluster:privatecluster7de2-epzcyvu4pjoy",
    "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
    "LastModified": 1541359182.919,
    "LastProcessingResult": "OK",
    "State": "Enabled",
    "StateTransitionReason": "User action"
}

Amazon DocumentDB 이벤트 소스 매핑을 삭제하려면 delete-event-source-mapping 명령을 사용하세요.

aws lambda delete-event-source-mapping \
    --uuid 2b733gdc-8ac3-cdf5-af3a-1827b3b11284

폴링 및 스트림 시작 위치

이벤트 소스 매핑 생성 및 업데이트 중 스트림 폴링은 최종적 일관성이 있다는 점을 유의하세요.

  • 이벤트 소스 매핑 생성 중 스트림에서 이벤트 폴링을 시작하는 데 몇 분이 걸릴 수 있어요.
  • 이벤트 소스 매핑 업데이트 중 스트림에서 이벤트 폴링을 중지하고 다시 시작하는 데 몇 분이 걸릴 수 있어요.

이 동작은 스트림의 시작 위치로 LATEST를 지정하면 이벤트 소스 매핑이 생성 또는 업데이트 중 이벤트를 놓칠 수 있다는 뜻이에요. 이벤트가 놓이지 않도록 하려면 스트림 시작 위치를 TRIM_HORIZON 또는 AT_TIMESTAMP로 지정하세요.

Amazon DocumentDB 이벤트 소스 모니터링

Amazon DocumentDB 이벤트 소스를 모니터링하는 데 도움을 주기 위해 Lambda는 함수가 레코드 배치 처리를 마치면 IteratorAge 지표를 내보내요. 반복자 수명은 가장 최근 이벤트의 타임스탬프와 현재 타임스탬프의 차이예요. 본질적으로 IteratorAge 지표는 배치에서 마지막으로 처리된 레코드가 얼마나 오래되었는지 나타내요.

함수가 현재 새 이벤트를 처리하고 있다면 반복자 수명을 사용해서 레코드가 추가된 시점과 함수가 처리하는 시점 사이의 대기 시간을 추정할 수 있어요. IteratorAge가 증가하는 추세는 함수에 문제가 있음을 나타낼 수 있어요. 자세한 내용은 CloudWatch 지표와 함께 Lambda 사용을 참고하세요.

Amazon DocumentDB 변경 스트림은 이벤트 간 긴 시간 간격을 처리하도록 최적화되지 않았어요. Amazon DocumentDB 이벤트 소스가 오랜 기간 동안 이벤트를 받지 않으면 Lambda가 이벤트 소스 매핑을 비활성화할 수 있어요. 이 시간 간격의 길이는 클러스터 크기와 다른 워크로드에 따라 몇 주에서 몇 달까지 다양할 수 있어요.

더 알아보기 (Learn more)

이 주제는 Lambda로 Amazon DocumentDB 이벤트를 처리하는 방법을 설명해요. 자세한 내용은 Lambda 개발자 안내서의 관련 주제와 Amazon DocumentDB 개발자 안내서를 참고하세요.