Apache Kafka용 아마존 매니지드 스트리밍 주제를 Pipes에서 소스로 사용 EventBridge - 아마존 EventBridge

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

Apache Kafka용 아마존 매니지드 스트리밍 주제를 Pipes에서 소스로 사용 EventBridge

EventBridge 파이프를 사용하여 Apache Kafka용 아마존 매니지드 스트리밍 (Amazon) 주제로부터 레코드를 수신할 수 있습니다. MSK 그런 다음, 해당 레코드를 처리를 위해 사용 가능한 대상 중 하나로 보내기 전에 선택적으로 필터링하거나 개선할 수 있습니다. 파이프를 설정할 때 선택할 수 MSK 있는 Amazon 전용 설정이 있습니다. EventBridge Pipes는 메시지 브로커에서 해당 데이터를 대상으로 전송할 때 해당 레코드의 순서를 유지합니다.

MSKAmazon은 Apache Kafka를 사용하여 스트리밍 데이터를 처리하는 애플리케이션을 구축하고 실행하는 데 사용할 수 있는 완전 관리형 서비스입니다. Amazon은 Apache Kafka를 실행하는 클러스터의 설정, 확장 및 관리를 MSK 간소화합니다. MSKAmazon에서는 AWS Identity and Access Management (IAM) 를 사용하여 여러 가용 영역과 보안을 위해 애플리케이션을 구성할 수 있습니다. MSKAmazon은 여러 오픈 소스 버전의 Kafka를 지원합니다.

MSK아마존은 아마존 심플 큐 서비스 (AmazonSQS) 또는 아마존 키네시스를 사용하는 것과 비슷하게 작동합니다. EventBridge소스의 새 메시지를 내부적으로 폴링한 다음 대상을 동기적으로 호출합니다. EventBridge 메시지를 일괄적으로 읽고 이를 함수에 이벤트 페이로드로 제공합니다. 최대 배치 크기는 구성 가능합니다. (기본값은 100개의 메시지입니다.)

Apache Kafka 기반 소스의 경우 배치 창 및 EventBridge 배치 크기와 같은 처리 제어 매개 변수를 지원합니다.

EventBridge 각 파티션에 대해 순차적으로 메시지를 읽습니다. 각 배치를 EventBridge 처리한 후 해당 배치에 있는 메시지의 오프셋을 커밋합니다. 파이프의 대상이 일괄 처리된 메시지에 대해 오류를 반환하는 경우, 처리가 성공하거나 메시지가 만료될 때까지 전체 메시지 배치를 EventBridge 재시도합니다.

EventBridge 대상을 호출할 때 이벤트에서 메시지 배치를 전송합니다. 이벤트 페이로드에는 메시지 배열이 포함됩니다. 각 배열 항목에는 타임스탬프 및 base64로 인코딩된 메시지와 함께 Amazon MSK 주제 및 파티션 식별자의 세부 정보가 들어 있습니다.

이벤트 예제

다음 샘플 이벤트는 파이프가 수신한 정보를 보여줍니다. 이 이벤트를 사용하여 이벤트 패턴을 생성 및 필터링하거나 입력 변환을 정의할 수 있습니다. 모든 필드를 필터링할 수 있는 것은 아닙니다. 필터링할 수 있는 필드에 대한 자세한 내용은 Amazon EventBridge 파이프의 이벤트 필터링 섹션을 참조하세요.

[ { "eventSource": "aws:kafka", "eventSourceArn": "arn:aws:kafka:sa-east-1:123456789012:cluster/vpc-2priv-2pub/751d2973-a626-431c-9d4e-d7975eb44dd7-2", "eventSourceKey": "mytopic-0", "topic": "mytopic", "partition": "0", "offset": 15, "timestamp": 1545084650987, "timestampType": "CREATE_TIME", "key":"abcDEFghiJKLmnoPQRstuVWXyz1234==", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers": [ { "headerKey": [ 104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101 ] } ] } ]

폴링 및 스트리밍 시작 위치

파이프 생성 및 업데이트 중 스트림 소스 폴링은 최종적으로 일관됩니다.

  • 파이프 생성 중 스트림에서 이벤트 폴링을 시작하는 데 몇 분 정도 걸릴 수 있습니다.

  • 소스 폴링 구성에 대한 파이프 업데이트 중 스트림에서 이벤트 폴링을 중지했다가 다시 시작하는 데 몇 분 정도 걸릴 수 있습니다.

즉, 스트림의 시작 위치로 LATEST를 지정하면 파이프 생성 또는 업데이트 중에 전송된 이벤트가 파이프에서 누락될 수 있습니다. 누락된 이벤트가 없도록 하기 위해서는 스트림 시작 위치를 TRIM_HORIZON으로 지정하세요.

MSK클러스터 인증

EventBridge Amazon MSK 클러스터에 액세스하고, 레코드를 검색하고, 기타 작업을 수행할 권한이 필요합니다. MSKAmazon은 MSK 클러스터에 대한 클라이언트 액세스를 제어하기 위한 여러 옵션을 지원합니다. 어떤 인증 방법이 사용되는지에 대한 자세한 내용은 부트스트랩 EventBridge 브로커를 선택하는 방법 단원을 참조하세요.

인증되지 않은 액세스

개발에는 인증되지 않은 액세스만 사용하는 것이 좋습니다. 클러스터에 대해 IAM 역할 기반 인증이 비활성화된 경우에만 인증되지 않은 액세스가 작동합니다.

SASL/인증 SCRAM

MSKAmazon은 전송 계층 보안 () 암호화를 통한 단순 인증 및 보안 계층/솔티드 챌린지 응답 인증 메커니즘 (SASL/SCRAMTLS) 인증을 지원합니다. 클러스터에 EventBridge 연결하려면 인증 자격 증명 (로그인 자격 증명) 을 비밀에 저장합니다. AWS Secrets Manager

Secrets Manager 사용에 대한 자세한 내용은 Amazon Managed Streaming for Apache Kafka 개발자 안내서AWS Secrets Manager를 사용한 사용자 이름 및 암호 인증을 참조하세요.

MSKAmazon은SASL/PLAIN인증을 지원하지 않습니다.

IAM 역할 기반 인증

IAMMSK클러스터에 연결하는 클라이언트의 ID를 인증하는 데 사용할 수 있습니다. MSK클러스터에서 IAM 인증이 활성화되어 있고 인증을 위한 암호를 제공하지 않으면 EventBridge 자동으로 기본적으로 인증을 사용합니다IAM. IAM사용자 또는 역할 기반 정책을 만들고 배포하려면 콘솔 또는 을 사용하십시오. IAM API 자세한 내용은 Apache Kafka용 Amazon 관리형 스트리밍 개발자 안내서의 IAM액세스 제어를 참조하십시오.

EventBridge MSK클러스터에 연결하고, 레코드를 읽고, 기타 필요한 작업을 수행할 수 있도록 하려면 파이프의 실행 역할에 다음 권한을 추가하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:DescribeGroup", "kafka-cluster:AlterGroup", "kafka-cluster:DescribeTopic", "kafka-cluster:ReadData", "kafka-cluster:DescribeClusterDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:region:account-id:cluster/cluster-name/cluster-uuid", "arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/topic-name", "arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/consumer-group-id" ] } ] }

이러한 권한의 범위를 특정 클러스터, 주제 및 그룹으로 설정할 수 있습니다. 자세한 내용은 Apache MSKKafka용 아마존 매니지드 스트리밍 개발자 가이드에서 Amazon Kafka 작업을 참조하십시오.

상호 인증 TLS

상호 TLS (mTLS) 는 클라이언트와 서버 간에 양방향 인증을 제공합니다. 클라이언트는 서버가 클라이언트를 확인할 수 있도록 서버에 인증서를 보내고, 서버는 클라이언트가 서버를 확인할 수 있도록 클라이언트에 인증서를 보냅니다.

Amazon의 MSK 경우 클라이언트 EventBridge 역할을 합니다. 클라이언트 인증서 (Secrets Manager에서는 보안 인증서) 를 구성하여 클러스터의 브로커에 EventBridge 인증합니다MSK. 클라이언트 인증서는 서버의 신뢰 저장소에 있는 인증 기관(CA)에서 서명해야 합니다. MSK클러스터는 브로커를 EventBridge 인증하기 위해 서버 인증서를 전송합니다. EventBridge 서버 인증서는 AWS 신뢰 저장소에 있는 CA에서 서명해야 합니다.

MSK아마존은 자체 서명된 서버 인증서를 지원하지 않습니다. 아마존의 모든 브로커는 기본적으로 EventBridge 신뢰하는 Amazon Trust CAs Services에서 서명한 공개 인증서를 MSK 사용하기 때문입니다.

TLSm용 MSK Amazon에 대한 자세한 내용은 Apache Kafka용 Amazon 관리형 스트리밍 개발자 안내서의 상호 TLS 인증을 참조하십시오.

m 시크릿 구성 TLS

CLIENT_ _ CERTIFICATE TLS _ AUTH 비밀번호에는 인증서 필드와 개인 키 필드가 필요합니다. 암호화된 프라이빗 키의 경우 비밀 정보에 프라이빗 키 암호가 필요합니다. 인증서와 개인 키 모두 PEM 형식이어야 합니다.

참고

EventBridge 개인 키 암호화 알고리즘은 PBES1지원하지만 지원하지는 않습니다PBES2.

인증서 필드에는 클라이언트 인증서부터 시작하여 중간 인증서가 이어지고 루트 인증서로 끝나는 인증서 목록이 포함되어야 합니다. 각 인증서는 다음 구조의 새 줄에서 시작해야 합니다.

-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----

Secrets Manager는 최대 65,536바이트의 보안 정보를 지원하므로 긴 인증서 체인을 위한 충분한 공간입니다.

개인 키는 다음과 같은 구조의 PKCS#8 형식이어야 합니다.

-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----

암호화된 프라이빗 키의 경우 다음 구조를 사용합니다.

-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----

다음 예제는 암호화된 개인 키를 사용하는 m TLS 인증을 위한 비밀의 내용을 보여줍니다. 암호화된 개인 키의 경우 비밀 정보에 프라이빗 키 암호를 포함합니다.

{ "privateKeyPassword": "testpassword", "certificate": "-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }

부트스트랩 EventBridge 브로커를 선택하는 방법

EventBridge 클러스터에서 사용할 수 있는 인증 방법과 인증을 위한 암호 제공 여부에 따라 부트스트랩 브로커를 선택합니다. m TLS 또는 SASL /에 대한 암호를 제공하면 해당 SCRAM 인증 EventBridge 방법이 자동으로 선택됩니다. 암호를 제공하지 않는 경우 클러스터에서 활성화된 가장 강력한 인증 방법을 EventBridge 선택합니다. 다음은 가장 강력한 인증부터 가장 약한 인증까지 브로커를 EventBridge 선택하는 우선 순위입니다.

  • m TLS (m에 대해 제공된 암호) TLS

  • SASL/SCRAM(비밀번호는 SASL /에 SCRAM 제공됨)

  • SASLIAM(비밀번호는 제공되지 않으며 IAM 인증이 활성화되어 있음)

  • 미인증 TLS (비밀번호가 제공되지 않고 인증이 IAM 활성화되지 않음)

  • 일반 텍스트 (비밀번호는 제공되지 않으며, 인증 및 IAM 미인증 모두 활성화되지 않음TLS)

참고

가장 안전한 브로커 유형에 연결할 EventBridge 수 없는 경우 다른 (약한) 브로커 유형에 연결을 시도하지 않습니다. 더 약한 브로커 유형을 EventBridge 선택하려면 클러스터에서 더 강력한 인증 방법을 모두 비활성화하세요.

네트워크 구성

EventBridge Amazon MSK 클러스터와 연결된 Amazon Virtual Private Cloud (AmazonVPC) 리소스에 액세스할 수 있어야 합니다.

  • Amazon MSK 클러스터에 액세스하려면 VPC 소스의 서브넷에 대한 아웃바운드 인터넷 액세스를 사용할 EventBridge 수 있습니다. 프라이빗 서브넷의 경우 게이트웨이 또는 자체 NAT 게이트웨이가 될 수 있습니다. NAT 에 NAT 퍼블릭 IP 주소가 있고 인터넷에 연결할 수 있는지 확인하십시오. 퍼블릭 서브넷의 경우 VPC 엔드포인트를 사용해야 합니다 (아래 설명 참조).

  • EventBridge 또한 Pipes는 이벤트 전달을 지원하므로 공용 인터넷을 AWS PrivateLink통과하지 않고도 Amazon Virtual Private Cloud (Amazon VPC) 에 있는 이벤트 소스에서 Pipes 대상으로 이벤트를 보낼 수 있습니다. 인터넷 게이트웨이를 배포하거나, 방화벽 규칙을 구성하거나, 프록시 서버를 설정할 필요 없이 Pipes를 사용하여 Amazon Managed Streaming for Apache Kafka (Amazon MSK), 자체 관리형 Apache Kafka 및 프라이빗 서브넷에 있는 Amazon MQ 소스에서 폴링할 수 있습니다. VPC엔드포인트를 사용하여 퍼블릭 서브넷의 Kafka 클러스터에서 전송을 지원할 수도 있습니다.

    엔드포인트를 설정하려면 VPC 사용 설명서의 VPC엔드포인트 생성을 참조하십시오.AWS PrivateLink 서비스 이름에서 을 선택합니다com.amazonaws.region.pipes-data.

Amazon VPC 보안 그룹을 다음 규칙 (최소) 으로 구성하십시오.

  • 인바운드 규칙 — 소스에 지정된 보안 그룹에 대한 Amazon MSK Broker 포트의 모든 트래픽을 허용합니다.

  • 아웃바운드 규칙 - 모든 대상에 대해 포트 443의 모든 트래픽을 허용합니다. Amazon MSK Broker 포트에서 소스에 지정된 보안 그룹에 대한 모든 트래픽을 허용합니다.

    브로커 포트에는 다음이 포함됩니다.

    • 일반 텍스트의 경우 9092

    • 9094의 경우 TLS

    • 9096에 대해 SASL

    • 9098에 대해 IAM

참고

Amazon을 통해 Amazon VPC 구성을 검색할 수 있습니다. MSK API 설정하는 동안 이 옵션을 구성할 필요가 없습니다.

사용자 지정이 가능한 소비자 그룹 ID

Apache Kafka를 소스로 설정할 때 소비자 그룹 ID를 지정할 수 있습니다. 이 소비자 그룹 ID는 파이프를 조인하려는 Apache Kafka 소비자 그룹의 기존 식별자입니다. 이 기능을 사용하여 진행 중인 Apache Kafka 레코드 처리 설정을 다른 소비자로부터 다른 소비자로 마이그레이션할 수 있습니다. EventBridge

소비자 그룹 ID를 지정하고 해당 소비자 그룹 내에 다른 활성 폴러가 있는 경우 Apache Kafka는 모든 소비자에게 메시지를 배포합니다. 즉, Apache Kafka 주제에 대한 모든 메시지를 EventBridge 수신하지는 않습니다. 해당 주제의 모든 메시지를 EventBridge 처리하려면 해당 소비자 그룹의 다른 설문조사를 모두 끄십시오.

또한 소비자 그룹 ID를 지정하고 Apache Kafka가 동일한 ID를 가진 유효한 기존 소비자 그룹을 찾는 경우 파이프의 매개 변수를 EventBridge 무시합니다. StartingPosition 대신 소비자 그룹의 커밋된 오프셋에 따라 레코드 처리를 EventBridge 시작합니다. 소비자 그룹 ID를 지정했는데 Apache Kafka가 기존 소비자 그룹을 찾을 수 없는 경우 지정된 것으로 EventBridge 소스를 구성합니다. StartingPosition

지정하는 소비자 그룹 ID는 모든 Apache Kafka 이벤트 소스 중에서 고유해야 합니다. 지정된 소비자 그룹 ID로 파이프를 생성한 후에는 이 값을 업데이트할 수 없습니다.

Amazon MSK 소스의 오토 스케일링

Amazon MSK 소스를 처음 생성할 때 Apache Kafka 주제의 모든 파티션을 처리하도록 소비자 한 명을 EventBridge 할당합니다. 각 소비자는 증가한 워크로드를 처리하기 위해 여러 프로세서를 병렬로 실행합니다. 또한 EventBridge 워크로드에 따라 소비자 수를 자동으로 늘리거나 줄입니다. 각 파티션에서 메시지 순서를 유지하기 위해 최대 소비자 수는 주제의 파티션당 하나의 소비자입니다.

1분 간격으로 주제에 있는 모든 파티션의 소비자 오프셋 지연을 EventBridge 평가합니다. 지연이 너무 높으면 파티션이 처리할 수 있는 속도보다 EventBridge 더 빨리 메시지를 수신하는 것입니다. 필요한 경우 주제에 소비자를 EventBridge 추가하거나 제거합니다. 소비자를 추가 또는 제거하는 크기 조정 프로세스는 평가 후 3분 이내에 진행됩니다.

대상에 과부하가 걸리면 소비자 수를 EventBridge 줄이십시오. 이 동작은 소비자가 검색하고 파이프에 보낼 수 있는 메시지 수를 줄임으로써 파이프의 워크로드를 줄입니다.