Confluent Cloud Kafka에서 OpenSearch Ingestion 파이프라인 사용 - Amazon OpenSearch Service

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

Confluent Cloud Kafka에서 OpenSearch Ingestion 파이프라인 사용

OpenSearch Ingestion 파이프라인을 사용하여 Confluent Cloud Kafka 클러스터에서 Amazon OpenSearch Service 도메인 및 OpenSearch Serverless 컬렉션으로 데이터를 스트리밍할 수 있습니다. OpenSearch Ingestion은 Confluent Cloud Kafka 클러스터에서 OpenSearch Service 또는 OpenSearch Serverless가 관리하는 도메인 또는 컬렉션으로 데이터를 스트리밍하기 위한 퍼블릭 및 프라이빗 네트워크 구성을 모두 지원합니다.

Confluent Cloud 퍼블릭 Kafka 클러스터에 대한 연결

OpenSearch Ingestion 파이프라인을 사용하여 퍼블릭 구성을 통해 자체 관리형 Confluent Cloud Kafka 클러스터에서 데이터를 마이그레이션할 수 있습니다. 즉, 도메인 DNS 이름을 공개적으로 확인할 수 있습니다. 이렇게 하려면 Confluent Cloud 퍼블릭 Kafka 클러스터를 소스로, OpenSearch Service 또는 OpenSearch Serverless를 대상으로 하는 OpenSearch Ingestion 파이프라인을 설정합니다. 이렇게 하면 자체 관리형 소스 클러스터에서 AWS관리형 대상 도메인 또는 컬렉션으로 스트리밍 데이터가 처리됩니다.

사전 조건

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

  1. 소스 역할을 하는 Confluent Cloud Kafka 클러스터를 생성합니다. 클러스터에는 OpenSearch Service로 수집할 데이터가 포함되어 있어야 합니다.

  2. 데이터를 마이그레이션할 OpenSearch Service 도메인 또는 OpenSearch Serverless 컬렉션을 생성합니다. 자세한 내용은 OpenSearch Service 도메인 생성컬렉션 생성 섹션을 참조하세요.

  3. AWS Secrets Manager를 사용하여 Confluent Cloud Kafka 클러스터에서 인증을 설정합니다. AWS Secrets Manager 시크릿 교체의 단계를 수행하여 시크릿 교체를 활성화합니다.

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

    다음 샘플 도메인 액세스 정책은 다음 단계에서 생성하는 파이프라인 역할을 사용하여 도메인에 데이터를 쓰도록 허용합니다. 자체 ARN으로 resource을 업데이트해야 합니다.

    JSON
    { "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 역할을 생성하려면 섹션을 참조하세요Amazon OpenSearch Ingestion 내 역할 및 사용자 설정.

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

Confluent Cloud Kafka 클러스터 파이프라인 사전 조건을 설정한 후 파이프라인 구성에 사용할 파이프라인 역할을 구성하고 OpenSearch Service 도메인 또는 OpenSearch Serverless 컬렉션에 쓸 수 있는 권한과 Secrets Manager에서 시크릿을 읽을 수 있는 권한을 추가합니다.

네트워크 인터페이스를 관리하려면 다음 권한이 필요합니다.

JSON
{ "Version": "2012-10-17", "Statement": [ { "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" } } } ] }

다음은 AWS Secrets Manager 서비스에서 보안 암호를 읽는 데 필요한 권한입니다.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": ["secretsmanager:GetSecretValue"], "Resource": ["arn:aws:secretsmanager:region:account-id:secret:,secret-name"] } ] }

Amazon OpenSearch Service 도메인에 쓰려면 다음 권한이 필요합니다.

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

2단계: 파이프라인 생성

이제 Confluent Cloud Kafka를 소스로 지정하는 다음과 같은 OpenSearch Ingestion 파이프라인을 구성할 수 있습니다.

여러 OpenSearch Service 도메인을 데이터의 대상으로 지정할 수 있습니다. 이 기능을 사용하여 조건부로 라우팅하거나 수신 데이터를 여러 OpenSearch Service 도메인으로 복제할 수 있습니다.

소스 Confluent Kafka의 데이터를 OpenSearch Serverless VPC 컬렉션으로 마이그레이션할 수도 있습니다. 파이프라인 구성 내에서 네트워크 액세스 정책을 제공해야 합니다. Confluent 스키마 레지스트리를 사용하여 Confluent 스키마를 정의할 수 있습니다.

version: "2" kafka-pipeline: source: kafka: encryption: type: "ssl" topics: - name: "topic-name" group_id: "group-id" bootstrap_servers: - "bootstrap-server.us-east-1.aws.private.confluent.cloud:9092" authentication: sasl: plain: username: ${aws_secrets:confluent-kafka-secret:username} password: ${aws_secrets:confluent-kafka-secret:password} schema: type: confluent registry_url: https://my-registry.us-east-1.aws.confluent.cloud api_key: "${{aws_secrets:schema-secret:schema_registry_api_key}}" api_secret: "${{aws_secrets:schema-secret:schema_registry_api_secret}}" basic_auth_credentials_source: "USER_INFO" sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] aws: region: "us-east-1" aws: secrets: confluent-kafka-secret: secret_id: "my-kafka-secret" region: "us-east-1" schema-secret: secret_id: "my-self-managed-kafka-schema" region: "us-east-1"

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

VPC에서 Confluent Cloud Kafka 클러스터에 대한 연결

OpenSearch Ingestion 파이프라인을 사용하여 VPC에서 실행되는 Confluent Cloud Kafka 클러스터에서 데이터를 마이그레이션할 수도 있습니다. 이렇게 하려면 Confluent Cloud Kafka 클러스터를 소스로, OpenSearch Service 또는 OpenSearch Serverless를 대상으로 하는 OpenSearch Ingestion 파이프라인을 설정합니다. 이렇게 하면 Confluent Cloud Kafka 소스 클러스터에서 AWS관리형 대상 도메인 또는 컬렉션으로 스트리밍 데이터를 처리합니다.

OpenSearch Ingestion은 Confluent에서 지원되는 모든 네트워크 모드에서 구성된 Confluent Cloud Kafka 클러스터를 지원합니다. OpenSearch Ingestion에서 다음 네트워크 구성 모드가 소스로 지원됩니다.

  • AWS VPC 피어링

  • AWS PrivateLink 전용 클러스터용

  • AWS PrivateLink 엔터프라이즈 클러스터용

  • AWS Transit Gateway

사전 조건

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

  1. OpenSearch Service로 수집하려는 데이터가 포함된 VPC 네트워크 구성을 사용하여 Confluent Cloud Kafka 클러스터를 생성합니다.

  2. 데이터를 마이그레이션할 OpenSearch Service 도메인 또는 OpenSearch Serverless 컬렉션을 생성합니다. 자세한 내용은 및 단원을 참조하십시오 OpenSearch Service 도메인 생성컬렉션 생성.

  3. AWS Secrets Manager를 사용하여 Confluent Cloud Kafka 클러스터에서 인증을 설정합니다. AWS Secrets Manager 시크릿 교체의 단계를 수행하여 시크릿 교체를 활성화합니다.

  4. Confluent Cloud Kafka 클러스터에 액세스할 수 있는 VPC의 ID를 가져옵니다. OpenSearch Ingestion에서 사용할 VPC CIDR을 선택합니다.

    참고

    를 사용하여 파이프라인 AWS Management Console 을 생성하는 경우 Confluent Cloud Kafka 클러스터를 사용하려면 OpenSearch Ingestion 파이프라인도 VPC에 연결해야 합니다. 이를 수행하려면 네트워크 구성 섹션을 찾아 VPC에 연결 확인란을 선택하고 제공된 기본 옵션 중 하나에서 CIDR을 선택하거나 직접 선택합니다. RFC 1918 Best Current Practice에 정의된 대로 프라이빗 주소 공간에서 모든 CIDR을 사용할 수 있습니다.

    사용자 지정 CIDR을 제공하려면 드롭다운 메뉴에서 기타를 선택합니다. OpenSearch Ingestion과 자체 관리형 OpenSearch 간의 IP 주소 충돌을 방지하려면 자체 관리형 OpenSearch VPC CIDR이 OpenSearch Ingestion의 CIDR과 달라야 합니다.

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

    참고

    AWS PrivateLink 를 사용하여 Confluent Cloud Kafka를 연결하는 경우 VPC DHCP 옵션을 구성해야 합니다. DNS 호스트 이름DNS 확인이 활성화되어 있어야 합니다.

    특히 다음 옵션 세트 값을 사용합니다.

    domain-name: aws.private.confluent.cloud domain-name-servers: AmazonProvidedDNS

    이렇게 변경하면 Confluent PrivateLink 엔드포인트의 DNS 확인이 VPC 내에서 올바르게 작동합니다.

    다음 샘플 도메인 액세스 정책은 다음 단계에서 생성하는 파이프라인 역할을 사용하여 도메인에 데이터를 쓰도록 허용합니다. 자체 ARN으로 resource을 업데이트해야 합니다.

    JSON
    { "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 역할을 생성하려면 섹션을 참조하세요Amazon OpenSearch Ingestion 내 역할 및 사용자 설정.

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

파이프라인 사전 조건을 설정한 후 파이프라인 구성에서 사용하려는 파이프라인 역할을 구성하고 역할에서 다음 권한을 추가합니다.

JSON
{ "Version": "2012-10-17", "Statement": [ { "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" } } } ] }

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

2단계: 파이프라인 생성

이제 Kafka를 소스로 지정하는 다음과 같은 OpenSearch Ingestion 파이프라인을 구성할 수 있습니다.

여러 OpenSearch Service 도메인을 데이터의 대상으로 지정할 수 있습니다. 이 기능을 사용하여 조건부로 라우팅하거나 수신 데이터를 여러 OpenSearch Service 도메인으로 복제할 수 있습니다.

소스 Confluent Kafka의 데이터를 OpenSearch Serverless VPC 컬렉션으로 마이그레이션할 수도 있습니다. 파이프라인 구성 내에서 네트워크 액세스 정책을 제공해야 합니다. Confluent 스키마 레지스트리를 사용하여 Confluent 스키마를 정의할 수 있습니다.

version: "2" kafka-pipeline: source: kafka: encryption: type: "ssl" topics: - name: "topic-name" group_id: "group-id" bootstrap_servers: - "bootstrap-server.us-east-1.aws.private.confluent.cloud:9092" authentication: sasl: plain: username: ${aws_secrets:confluent-kafka-secret:username} password: ${aws_secrets:confluent-kafka-secret:password} schema: type: confluent registry_url: https://my-registry.us-east-1.aws.confluent.cloud api_key: "${{aws_secrets:schema-secret:schema_registry_api_key}}" api_secret: "${{aws_secrets:schema-secret:schema_registry_api_secret}}" basic_auth_credentials_source: "USER_INFO" sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] aws: region: "us-east-1" index: "confluent-index" extension: aws: secrets: confluent-kafka-secret: secret_id: "my-kafka-secret" region: "us-east-1" schema-secret: secret_id: "my-self-managed-kafka-schema" region: "us-east-2"