Amazon OpenSearch DocumentDB에서 통합 파이프라인 사용 - 아마존 OpenSearch 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon OpenSearch DocumentDB에서 통합 파이프라인 사용

Amazon DocumentDB와 함께 통합 파이프라인을 사용하여 Amazon 서비스 도메인 및 OpenSearch 컬렉션에 문서 변경 (예: 생성, 업데이트, 삭제) 을 스트리밍할 수 있습니다. OpenSearch OpenSearch 통합 파이프라인은 Amazon DocumentDB 클러스터에서 사용 가능한 경우 변경 데이터 캡처 (CDC) 메커니즘 API 또는 폴링을 활용하여 Amazon DocumentDB 클러스터에서 데이터를 지속적으로 스트리밍할 수 있는 대규모의 지연 시간이 짧은 방법을 제공할 수 있습니다.

Amazon DocumentDB를 데이터 처리 소스로 사용할 수 있는 두 가지 방법, 즉 전체 초기 스냅샷을 포함하는 방법과 사용하지 않는 방법이 있습니다.

전체 초기 스냅샷은 전체 Amazon DocumentDB 컬렉션에 대한 대량 쿼리입니다. 아마존 DocumentDB는 이 스냅샷을 아마존 S3에 업로드합니다. 거기에서 OpenSearch 통합 파이프라인은 이를 도메인의 한 인덱스로 보내거나 도메인의 여러 인덱스로 분할합니다. Amazon DocumentDB의 데이터를 일관되게 유지하기 위해 파이프라인은 Amazon DocumentDB OpenSearch 컬렉션의 모든 생성, 업데이트 및 삭제 이벤트를 인덱스 또는 인덱스에 저장된 문서와 동기화합니다. OpenSearch

전체 초기 스냅샷을 사용하는 경우 OpenSearch 통합 파이프라인은 먼저 스냅샷을 수집한 다음 Amazon DocumentDB 변경 스트림에서 데이터를 읽기 시작합니다. 결국 Amazon DocumentDB와 Amazon DocumentDB 간의 데이터 일관성을 거의 실시간으로 따라잡고 유지합니다. OpenSearch

Amazon DocumentDB와의 OpenSearch 통합 기능을 사용하여 스냅샷 없이 이벤트를 스트리밍할 수도 있습니다. 다른 메커니즘의 전체 스냅샷이 이미 있거나 Amazon DocumentDB 컬렉션에서 현재 이벤트를 변경 스트림과 함께 스트리밍하려는 경우 이 옵션을 선택하십시오.

파이프라인 구성에서 스트림을 활성화하려면 이 두 옵션을 모두 사용하여 Amazon DocumentDB 컬렉션에서 변경 스트림을 활성화해야 합니다. 전체 로드나 내보내기만 사용하는 경우 변경 스트림을 활성화할 필요가 없습니다.

사전 조건

OpenSearch 통합 파이프라인을 생성하기 전에 다음 단계를 수행하세요.

  1. Amazon DocumentDB 개발자 안내서의 Amazon DocumentDB 클러스터 생성에 나와 있는 단계에 따라 데이터 읽기 권한이 있는 Amazon DocumentDB 클러스터를 생성하십시오. CDC인프라를 사용하는 경우 변경 스트림을 게시하도록 Amazon DocumentDB 클러스터를 구성해야 합니다.

  2. Amazon DocumentDB TLS 클러스터에서 활성화하십시오.

  3. VPCCIDRIngestion에서 사용할 프라이빗 주소 공간을 설정합니다. OpenSearch

  4. 를 사용하여 Amazon DocumentDB 클러스터에 인증을 설정합니다. AWS Secrets ManagerAmazon DocumentDB의 암호 자동 교체에 나와 있는 단계에 따라 암호 교체를 활성화하십시오. 자세한 내용은 Amazon DocumentDB의 역할 기반 액세스 제어 및 보안을 사용한 데이터베이스 액세스를 참조하십시오.

  5. 변경 스트림을 사용하여 Amazon DocumentDB 컬렉션의 데이터 변경을 구독하는 경우, 파라미터를 사용하여 보존 기간을 최대 7일까지 연장하여 데이터 손실을 방지하십시오. change_stream_log_retention_duration 변경 스트림 이벤트는 이벤트가 기록된 후 기본적으로 3시간 동안 저장되므로 대규모 컬렉션을 수집하기에는 시간이 충분하지 않습니다. 변경 스트림 보존 기간을 수정하려면 변경 스트림 로그 보존 기간 수정을 참조하십시오.

  6. OpenSearch 서비스 도메인 또는 OpenSearch 서버리스 컬렉션을 생성합니다. 자세한 내용은 OpenSearch 서비스 도메인 만들기 및 컬렉션 만들기를 참조하십시오.

  7. 도메인에 리소스 기반 정책을 연결하거나 컬렉션에 데이터 액세스 정책을 연결합니다. 이러한 액세스 정책을 통해 OpenSearch Ingestion은 Amazon DocumentDB 클러스터의 데이터를 도메인 또는 컬렉션에 쓸 수 있습니다.

    다음 샘플 도메인 액세스 정책은 다음 단계에서 생성하는 파이프라인 역할이 도메인에 데이터를 쓸 수 있도록 허용합니다. 직접 업데이트해야 ARN 합니다. resource

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "es:DescribeDomain", "es:ESHttp*" ], "Resource": [ "arn:aws:es:{region}:{account-id}:domain/domain-name" ] } ] }

    컬렉션 또는 도메인에 대한 쓰기 데이터에 액세스할 수 있는 올바른 권한이 있는 IAM 역할을 만들려면 도메인에 필요한 권한컬렉션에 필요한 권한을 참조하십시오.

1단계: 파이프라인 역할 구성

Amazon DocumentDB 파이프라인 사전 요구 사항을 설정한 후, 파이프라인 구성에서 사용할 파이프라인 역할을 구성하고 역할에 다음과 같은 Amazon DocumentDB 권한을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowS3ListObjectAccess", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::{s3_bucket}" ], "Condition": { "StringLike": { "s3:prefix": "{s3_prefix}/*" } } }, { "Sid": "allowReadAndWriteToS3ForExportStream", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::{s3_bucket}/{s3_prefix}/*" ] }, { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": ["arn:aws:secretsmanager:{region}:{account-id}:secret:secret-name"] }, { "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:{account-id}:network-interface/*", "arn:aws:ec2:*:{account-id}:subnet/*", "arn:aws:ec2:*:{account-id}:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:Describe*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } } ] }

파이프라인은 이러한 EC2 권한을 사용하여 네트워크 인터페이스를 생성 및 삭제하므로 OpenSearch 수집 파이프라인을 생성하는 데 사용하는 IAM 역할에 대해 위의 Amazon 권한을 제공해야 합니다. VPC 파이프라인은 이 네트워크 인터페이스를 통해서만 Amazon DocumentDB 클러스터에 액세스할 수 있습니다.

2단계: 파이프라인 생성

그런 다음 Amazon DocumentDB를 소스로 지정하는 다음과 같이 OpenSearch 통합 파이프라인을 구성할 수 있습니다. 참고로 getMetadata 함수는 인덱스 이름을 채울 때 메타데이터 키로 사용합니다documentdb_collection. getMetadata메서드를 사용하지 않고 다른 인덱스 이름을 사용하려는 경우 구성을 index: "my_index_name" 사용할 수 있습니다.

version: "2" documentdb-pipeline: source: documentdb: acknowledgments: true host: "https://docdb-cluster-id.us-east-1.docdb.amazonaws.com" port: 27017 authentication: username: ${aws_secrets:secret:username} password: ${aws_secrets:secret:password} aws: sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" s3_bucket: "bucket-name" s3_region: "bucket-region" s3_prefix: "path" #optional path for storing the temporary data collections: - collection: "dbname.collection" export: true stream: true sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] index: "${getMetadata(\"documentdb_collection\")}" index_type: custom document_id: "${getMetadata(\"primary_key\")}" action: "${getMetadata(\"opensearch_action\")}" document_version: "${getMetadata(\"document_version\")}" document_version_type: "external" extension: aws: secrets: secret: secret_id: "my-docdb-secret" region: "us-east-1" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" refresh_interval: PT1H

사전 구성된 Amazon DocumentDB 블루프린트를 사용하여 이 파이프라인을 생성할 수 있습니다. 자세한 내용은 청사진을 사용하여 파이프라인 생성 단원을 참조하십시오.

를 사용하여 파이프라인을 생성하는 경우 Amazon DocumentDB를 소스로 사용하려면 파이프라인도 파이프라인에 연결해야 합니다. AWS Management Console VPC 이렇게 하려면 네트워크 구성 섹션을 찾아 연결 대상 VPC 확인란을 선택한 다음 제공된 기본 옵션 중 하나를 CIDR 선택하거나 직접 선택하십시오. RFC1918년 베스트 커런트 프랙티스에 정의된 대로 개인 주소 CIDR 공간에서 아무거나 사용할 수 있습니다.

사용자 CIDR 지정을 제공하려면 드롭다운 메뉴에서 기타를 선택합니다. 통합 및 Amazon DocumentDB 간의 OpenSearch IP 주소 충돌을 방지하려면 Amazon DocumentDB가 통합 문서와 달라야 합니다. VPC CIDR CIDR OpenSearch

자세한 내용은 파이프라인 액세스 구성을 참조하십시오. VPC

데이터 일관성

파이프라인은 Amazon DocumentDB 클러스터에서 변경 사항을 지속적으로 폴링하거나 수신하고 인덱스의 해당 문서를 업데이트하여 데이터 일관성을 보장합니다. OpenSearch

OpenSearch 수집은 end-to-end 승인을 지원하여 데이터 내구성을 보장합니다. 파이프라인에서는 스냅샷이나 스트림을 읽을 때 병렬 처리를 위해 동적으로 분할을 생성합니다. 파이프라인은 도메인 또는 컬렉션의 모든 레코드를 수집한 후 승인을 받으면 파티션을 완료된 것으로 표시합니다. OpenSearch

OpenSearch 서버리스 검색 컬렉션에 인제스트하려는 경우 파이프라인에서 문서 ID를 생성할 수 있습니다. OpenSearch 서버리스 시계열 컬렉션으로 인제스트하려는 경우 파이프라인은 문서 ID를 생성하지 않으므로 파이프라인 싱크 document_id: "${getMetadata(\"primary_key\")}" 구성에서 문서 ID를 생략해야 합니다.

또한 OpenSearch 통합 파이프라인은 들어오는 이벤트 작업을 해당하는 대량 색인 작업에 매핑하여 문서를 수집하는 데 도움이 됩니다. 이렇게 하면 데이터가 일관되게 유지되므로 Amazon DocumentDB의 모든 데이터 변경 사항이 해당 문서 변경 사항과 조정됩니다. OpenSearch

데이터 형식 매핑

OpenSearch 서비스는 수신되는 각 문서의 데이터 유형을 Amazon DocumentDB의 해당 데이터 유형에 동적으로 매핑합니다. 다음 표는 OpenSearch 서비스가 다양한 데이터 유형을 자동으로 매핑하는 방법을 보여줍니다.

데이터 유형 OpenSearch Amazon DocumentDB
Integer

OpenSearch Amazon DocumentDB 정수 값을 정수로 자동 매핑합니다. OpenSearch

OpenSearch 처음 보낸 문서를 기반으로 필드를 동적으로 매핑합니다. Amazon DocumentDB에 동일한 속성에 대해 여러 데이터 유형이 혼합되어 있는 경우 자동 매핑이 실패할 수 있습니다.

예를 들어 첫 번째 문서에는 long 속성이 있고 이후 문서에는 동일한 속성이 정수인 경우 두 번째 문서를 OpenSearch 인제스트하지 못합니다. 이러한 경우에는 다음과 같이 가장 유연한 숫자 유형을 선택할 수 있는 명시적 매핑 템플릿을 제공해야 합니다.

{ "template": { "mappings": { "properties": { "MixedNumberField": { "type": "float" } } } } }

아마존 DocumentDB는 정수를 지원합니다.

Long

OpenSearch Amazon DocumentDB의 긴 값을 긴 값에 자동으로 매핑합니다. OpenSearch

OpenSearch 처음 보낸 문서를 기반으로 필드를 동적으로 매핑합니다. Amazon DocumentDB에 동일한 속성에 대해 여러 데이터 유형이 혼합되어 있는 경우 자동 매핑이 실패할 수 있습니다.

예를 들어 첫 번째 문서에는 long 속성이 있고 이후 문서에는 동일한 속성이 정수인 경우 두 번째 문서를 OpenSearch 인제스트하지 못합니다. 이러한 경우에는 다음과 같이 가장 유연한 숫자 유형을 선택할 수 있는 명시적 매핑 템플릿을 제공해야 합니다.

{ "template": { "mappings": { "properties": { "MixedNumberField": { "type": "float" } } } } }

아마존 DocumentDB는 롱을 지원합니다.

String

OpenSearch 문자열 값을 텍스트로 자동 매핑합니다. 열거된 값과 같은 일부 상황에서는 키워드 형식에 매핑할 수 있습니다.

다음 예제는 PartType 이름이 지정된 Amazon DocumentDB 속성을 키워드에 매핑하는 방법을 보여줍니다. OpenSearch

{ "template": { "mappings": { "properties": { "PartType": { "type": "keyword" } } } } }

Amazon DocumentDB는 문자열을 지원합니다.

Double

OpenSearch Amazon DocumentDB 이중 값을 두 배로 자동 매핑합니다. OpenSearch

OpenSearch 처음 보낸 문서를 기반으로 필드를 동적으로 매핑합니다. Amazon DocumentDB에 동일한 속성에 대해 여러 데이터 유형이 혼합되어 있는 경우 자동 매핑이 실패할 수 있습니다.

예를 들어 첫 번째 문서에는 long 속성이 있고 이후 문서에는 동일한 속성이 정수인 경우 두 번째 문서를 OpenSearch 인제스트하지 못합니다. 이러한 경우에는 다음과 같이 가장 유연한 숫자 유형을 선택할 수 있는 명시적 매핑 템플릿을 제공해야 합니다.

{ "template": { "mappings": { "properties": { "MixedNumberField": { "type": "float" } } } } }
아마존 DocumentDB는 더블을 지원합니다.
날짜

기본적으로 날짜는 정수 in에 매핑됩니다. OpenSearch 날짜를 날짜에 매핑하는 사용자 지정 매핑 템플릿을 정의할 수 있습니다 OpenSearch .

{ "template": { "mappings": { "properties": { "myDateField": { "type": "date", "format": "epoch_second" } } } } }
Amazon DocumentDB는 날짜를 지원합니다.
Timestamp

기본적으로 타임스탬프는 정수 in에 매핑됩니다. OpenSearch 날짜를 날짜에 매핑하는 사용자 지정 매핑 템플릿을 정의할 수 있습니다. OpenSearch

{ "template": { "mappings": { "properties": { "myTimestampField": { "type": "date", "format": "epoch_second" } } } } }
Amazon DocumentDB는 타임스탬프를 지원합니다.

OpenSearch Amazon DocumentDB 부울 유형을 부울 유형으로 매핑합니다. OpenSearch

Amazon DocumentDB는 부울 유형 속성을 지원합니다.

10진수

OpenSearch Amazon DocumentDB는 속성을 중첩된 필드에 매핑합니다. 중첩 필드 내에도 동일한 매핑이 적용됩니다.

다음 예제는 중첩 필드의 문자열을 다음 키워드 유형에 매핑합니다. OpenSearch

{ "template": { "mappings": { "properties": { "myDecimalField": { "type": "double" } } } } }

이 사용자 지정 매핑을 사용하면 필드를 2배 정밀도로 쿼리하고 집계할 수 있습니다. 원래 값은 문서 _source 속성의 전체 정밀도를 유지합니다. OpenSearch 이 매핑이 없으면 기본적으로 텍스트가 OpenSearch 사용됩니다.

아마존 DocumentDB는 소수를 지원합니다.
정규식 정규식 유형은 중첩된 필드를 생성합니다. 여기에는 및 이 포함됩니다. <myFieldName>.pattern <myFieldName>.options

Amazon DocumentDB는 정규 표현식을 지원합니다.

이진 데이터

OpenSearch Amazon DocumentDB 바이너리 데이터를 텍스트에 자동으로 매핑합니다. OpenSearch 매핑을 제공하여 이를 바이너리 필드로 기록할 수 있습니다. OpenSearch

다음 예제는 imageData 이름이 지정된 Amazon DocumentDB 필드를 이진 필드에 매핑하는 방법을 보여줍니다. OpenSearch

{ "template": { "mappings": { "properties": { "imageData": { "type": "binary" } } } } }
Amazon DocumentDB는 바이너리 데이터 필드를 지원합니다.
ObjectId 유형이 있는 필드는 OpenSearch 텍스트 필드에 objectId 매핑됩니다. 값은 의 문자열 objectId 표현입니다. 아마존 DocumentDB는 지원합니다. objectIds
Null

OpenSearch Amazon DocumentDB 널 타입의 문서를 인제스트할 수 있습니다. 값을 문서에 null 값으로 저장합니다. 이 형식에는 매핑이 없으며 이 필드는 인덱싱되거나 검색할 수 없습니다.

null 형식에 동일한 속성 이름을 사용하다가 나중에 문자열과 같은 다른 유형으로 변경하면 null이 아닌 첫 번째 값에 대한 동적 매핑이 OpenSearch 생성됩니다. 후속 값은 여전히 Amazon DocumentDB 널 값일 수 있습니다.

아마존 DocumentDB는 널 타입 필드를 지원합니다.
정의되지 않음

OpenSearch Amazon DocumentDB 미정의 유형의 문서를 인제스트할 수 있습니다. 값을 문서에 null 값으로 저장합니다. 이 형식에는 매핑이 없으며 이 필드는 인덱싱되거나 검색할 수 없습니다.

정의되지 않은 유형에 동일한 필드 이름을 사용한 후 나중에 문자열과 같은 다른 유형으로 변경하는 경우, 정의되지 않은 첫 번째 값에 대한 동적 매핑이 OpenSearch 생성됩니다. 후속 값은 여전히 Amazon DocumentDB의 정의되지 않은 값일 수 있습니다.

Amazon DocumentDB는 정의되지 않은 유형 필드를 지원합니다.
MinKey

OpenSearch Amazon DocumentDB minKey 유형의 문서를 인제스트할 수 있습니다. 값을 문서에 null 값으로 저장합니다. 이 형식에는 매핑이 없으며 이 필드는 인덱싱되거나 검색할 수 없습니다.

minKey 유형에 동일한 필드 이름을 사용하다가 나중에 문자열과 같은 다른 유형으로 변경하면 첫 번째 값이 아닌 값에 대한 동적 매핑이 OpenSearch 생성됩니다. minKey 후속 값은 여전히 Amazon minKey DocumentDB 값일 수 있습니다.

Amazon minKey DocumentDB는 유형 필드를 지원합니다.
MaxKey

OpenSearch Amazon DocumentDB maxKey 유형의 문서를 인제스트할 수 있습니다. 값을 문서에 null 값으로 저장합니다. 이 형식에는 매핑이 없으며 이 필드는 인덱싱되거나 검색할 수 없습니다.

maxKey 유형에 동일한 필드 이름을 사용하다가 나중에 문자열과 같은 다른 유형으로 변경하면 첫 번째 값이 아닌 값에 대한 동적 매핑이 OpenSearch 생성됩니다. maxKey 후속 값은 여전히 Amazon maxKey DocumentDB 값일 수 있습니다.

Amazon maxKey DocumentDB는 유형 필드를 지원합니다.

수집 파이프라인에서 데드레터 큐 (DLQ) 를 구성하는 것이 좋습니다. OpenSearch 큐를 구성한 경우 OpenSearch 서비스는 동적 매핑 실패로 인해 인제스트되지 못한 모든 실패한 문서를 큐로 보냅니다.

자동 매핑이 실패할 경우 파이프라인 구성에서 template_typetemplate_content를 사용하여 명시적 매핑 규칙을 정의할 수 있습니다. 또는 파이프라인을 시작하기 전에 검색 도메인이나 컬렉션에서 직접 매핑 템플릿을 생성할 수도 있습니다.

제한 사항

Amazon DocumentDB에 대한 OpenSearch 통합 파이프라인을 설정할 때는 다음 제한 사항을 고려하십시오.

  • Amazon DocumentDB와의 OpenSearch 통합 기능은 현재 교차 리전 통합을 지원하지 않습니다. Amazon DocumentDB OpenSearch 클러스터와 통합 파이프라인은 동일한 위치에 있어야 합니다. AWS 리전

  • Amazon DocumentDB와의 OpenSearch 통합 기능은 현재 교차 계정 통합을 지원하지 않습니다. Amazon DocumentDB OpenSearch 클러스터와 통합 파이프라인은 동일한 위치에 있어야 합니다. AWS 계정

  • OpenSearch 통합 파이프라인은 Amazon DocumentDB 클러스터 하나만 소스로 지원합니다.

  • Amazon DocumentDB와의 OpenSearch 통합 기능은 특히 Amazon DocumentDB 인스턴스 기반 클러스터를 지원합니다. Amazon DocumentDB 엘라스틱 클러스터는 지원하지 않습니다.

  • OpenSearch 통합 기능은 Amazon DocumentDB 클러스터의 인증 AWS Secrets Manager 메커니즘으로만 지원됩니다.

  • 다른 데이터베이스 또는 컬렉션에서 데이터를 수집하도록 기존 파이프라인 구성을 업데이트할 수 없습니다. 대신 새 파이프라인을 생성해야 합니다.