Usando um pipeline OpenSearch de ingestão com Amazon Managed Streaming for Apache Kafka - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando um pipeline OpenSearch de ingestão com Amazon Managed Streaming for Apache Kafka

Você pode usar o plug-in Kafka para ingerir dados do Amazon Managed Streaming for Apache Kafka (Amazon MSK) em seu pipeline de ingestão. OpenSearch Com o Amazon MSK, você pode criar e executar aplicativos que usam o Apache Kafka para processar dados em streaming. OpenSearch A ingestão é usada AWS PrivateLink para se conectar ao Amazon MSK. Você pode ingerir dados dos clusters Amazon MSK e Amazon MSK Serverless. A única diferença entre os dois processos são as etapas de pré-requisito que você deve seguir antes de configurar seu funil.

Pré-requisitos do Amazon MSK

Antes de criar seu pipeline OpenSearch de ingestão, execute as seguintes etapas:

  1. Crie um cluster provisionado pelo Amazon MSK seguindo as etapas em Criação de um cluster no Guia do desenvolvedor do Amazon Managed Streaming for Apache Kafka. Para o tipo de corretor, escolha qualquer opção, exceto t3 os tipos, pois eles não são compatíveis com a OpenSearch ingestão.

  2. Depois que o cluster tiver um status Ativo, siga as etapas em Ativar a conectividade de várias VPCs.

  3. Siga as etapas em Anexar uma política de cluster ao cluster MSK para anexar uma das políticas a seguir, dependendo se o cluster e o pipeline estão na mesma Conta da AWS. Essa política permite que o OpenSearch Inestion crie uma AWS PrivateLink conexão com seu cluster Amazon MSK e leia dados de tópicos do Kafka. Lembre-se de atualizar o resource com seu próprio ARN.

    As políticas a seguir se aplicam quando o cluster e o pipeline estão na mesma Conta da AWS:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" } ] }

    Se seu cluster Amazon MSK estiver em um pipeline Conta da AWS diferente do seu pipeline, anexe a seguinte política em vez disso. Observe que o acesso entre contas só é possível com clusters Amazon MSK provisionados e não com clusters Amazon MSK Serverless. O ARN do AWS principal deve ser o ARN da mesma função de pipeline que você fornece à configuração YAML do pipeline:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "kafka-cluster:*", "kafka:*" ], "Resource": [ "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id", "arn:aws:kafka:us-east-1:{msk-account-id}:topic/cluster-name/cluster-id/*", "arn:aws:kafka:us-east-1:{msk-account-id}:group/cluster-name/*" ] } ] }
  4. Crie um tópico do Kafka seguindo as etapas em Criar um tópico. Assegure-se de que BootstrapServerString seja um dos URLs de bootstrap do endpoint privado (VPC única). O valor de --replication-factor deve ser 2 ou3, com base no número de zonas que seu cluster Amazon MSK tem. O valor de --partitions deve ser pelo menos 10.

  5. Produza e consuma dados seguindo as etapas em Produzir e consumir dados. Novamente, verifique se BootstrapServerString é um dos seus URLs de bootstrap de endpoint privado (VPC única).

Pré-requisitos do Amazon MSK Serverless

Antes de criar seu pipeline OpenSearch de ingestão, execute as seguintes etapas:

  1. Crie um cluster Amazon MSK Serverless seguindo as etapas em Criar um cluster MSK Serverless no Guia do desenvolvedor do Amazon Managed Streaming for Apache Kafka.

  2. Depois que o cluster tiver um status Ativo, siga as etapas em Anexar uma política de cluster ao cluster MSK para anexar a política a seguir. Lembre-se de atualizar o resource com seu próprio ARN.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" } ] }

    Essa política permite que o OpenSearch Inestion crie uma AWS PrivateLink conexão com seu cluster Amazon MSK Serverless e leia dados de tópicos do Kafka. Essa política se aplica quando seu cluster e pipeline estão no mesmo lugar, o que deve ser verdade Conta da AWS, pois o Amazon MSK Serverless não oferece suporte ao acesso entre contas.

  3. Crie um tópico do Kafka seguindo as etapas em Criar um tópico. Certifique-se de que BootstrapServerString seja um dos seus URLs de bootstrap do IAM Simple Authentication and Security Layer (SASL). O valor para --replication-factor deve ser 2 ou3, com base no número de zonas que seu cluster Amazon MSK Serverless tem. O valor de --partitions deve ser pelo menos 10.

  4. Produza e consuma dados seguindo as etapas em Produzir e consumir dados. Novamente, verifique se esse BootstrapServerString é um dos seus URLs de bootstrap do IAM Simple Authentication and Security Layer (SASL).

Etapa 1: configurar a função do pipeline

Depois de configurar seu cluster provisionado ou sem servidor do Amazon MSK, adicione as seguintes permissões do Kafka na função do pipeline que você deseja usar na configuração do pipeline:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster", "kafka:DescribeClusterV2", "kafka:GetBootstrapBrokers" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:ReadData" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:topic/cluster-name/cluster-id/topic-name" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:group/cluster-name/*" ] } ] }

Etapa 2: Criar o pipeline

Em seguida, você pode configurar um pipeline de OpenSearch ingestão como o seguinte, que especifica o Kafka como fonte:

version: "2" log-pipeline: source: kafka: acknowledgements: true topics: - name: "topic-name" group_id: "group-id" aws: msk: arn: "arn:aws:kafka:{region}:{account-id}:cluster/cluster-name/cluster-id" region: "us-west-2" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" processor: - grok: match: message: - "%{COMMONAPACHELOG}" - date: destination: "@timestamp" from_time_received: true sink: - opensearch: hosts: ["https://search-domain-endpoint.us-east-1.es.amazonaws.com"] index: "index_name" aws_sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" aws_region: "us-east-1" aws_sigv4: true

Você pode usar um blueprint pré-configurado do Amazon MSK para criar esse pipeline. Para ter mais informações, consulte Usar esquemas para criar um pipeline.

Etapa 3: (Opcional) Usar o Registro do AWS Glue Esquema

Ao usar o OpenSearch Inestion com o Amazon MSK, você pode usar o formato de dados AVRO para esquemas hospedados no Schema Registry. AWS Glue Com o registro de esquema do AWS Glue, você pode descobrir, controlar e evoluir centralmente esquemas de fluxo de dados.

Para usar essa opção, habilite o esquema type na configuração do seu pipeline:

schema: type: "aws_glue"

Você também deve AWS Glue fornecer permissões de acesso de leitura em sua função de funil. Você pode usar a política AWS gerenciada chamada AWSGlueSchemaRegistryReadonlyAccess. Além disso, seu registro deve estar na mesma Conta da AWS região do pipeline OpenSearch de ingestão.

Etapa 4: (opcional) configurar unidades computacionais (OCUs) recomendadas para o pipeline do Amazon MSK

Cada unidade computacional tem um consumidor por tópico. Os corretores equilibram as partições entre esses consumidores para um determinado tópico. No entanto, quando o número de partições é maior que o número de consumidores, o Amazon MSK hospeda várias partições em cada consumidor. OpenSearch A ingestão tem escalonamento automático integrado para aumentar ou diminuir a escala com base no uso da CPU ou no número de registros pendentes no pipeline.

Para um desempenho ideal, distribua suas partições em várias unidades de computação para processamento paralelo. Se os tópicos tiverem um grande número de partições (por exemplo, mais de 96, que é o máximo de OCUs por pipeline), recomendamos que você configure um pipeline com 1 a 96 OCUs. Isso ocorre porque ele será escalado automaticamente conforme necessário. Se um tópico tiver um número baixo de partições (por exemplo, menos de 96), mantenha o máximo de unidades computacionais igual ao número de partições.

Quando um pipeline tiver mais de um tópico, escolha o tópico com o maior número de partições como referência para configurar o máximo de unidades computacionais. Ao adicionar outro pipeline com um novo conjunto de OCUs ao mesmo tópico e grupo de consumidores, você pode escalar o throughput quase linearmente.