Usar um pipeline do OpenSearch Ingestion com o Amazon Managed Streaming for Apache Kafka - Amazon OpenSearch Service

Usar um pipeline do OpenSearch Ingestion com o 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) no pipeline da Ingestão do OpenSearch. Com o Amazon MSK, você pode criar e executar aplicativos que usam o Apache Kafka para processar dados em streaming. A Ingestão do OpenSearch usa AWS PrivateLink para se conectar ao Amazon MSK. Você pode ingerir dados dos clusters do Amazon MSK e do 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 pipeline.

Pré-requisitos do Amazon MSK provisionados

Antes de criar o pipeline da Ingestão do OpenSearch, execute as seguintes etapas:

  1. Crie um cluster provisionado do Amazon MSK seguindo as etapas em Criar um cluster no Guia do desenvolvedor do Amazon Managed Streaming para Apache Kafka. Para o tipo Broker, escolha qualquer opção, exceto os tipos t3, pois eles não são compatíveis com o OpenSearch Ingestion.

  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. Esta política permite que a Ingestão do OpenSearch crie uma conexão AWS PrivateLink com seu cluster do 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:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:111122223333: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:111122223333:cluster/cluster-name/cluster-id" } ] }

    Se seu cluster do Amazon MSK estiver em uma Conta da AWS diferente do seu pipeline, anexe a política a seguir. Observe que o acesso entre contas é possível somente com clusters provisionados do Amazon MSK e não com clusters do Amazon MSK Serverless. O ARN da principal da AWS deve ser o ARN da mesmo perfil de pipeline que você fornece à configuração do pipeline:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:111122223333: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:111122223333:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/pipeline-role" }, "Action": [ "kafka-cluster:*", "kafka:*" ], "Resource": [ "arn:aws:kafka:us-east-1:111122223333:cluster/cluster-name/cluster-id", "arn:aws:kafka:us-east-1:111122223333:topic/cluster-name/cluster-id/*", "arn:aws:kafka:us-east-1:111122223333: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 ou 3, com base no número de zonas que seu cluster do 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 o pipeline da Ingestão do OpenSearch, execute as seguintes etapas:

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

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

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:111122223333: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:111122223333:cluster/cluster-name/cluster-id" } ] }

    Esta política permite que a Ingestão do OpenSearch crie uma conexão AWS PrivateLink com seu cluster do Amazon MSK Serverless e leia dados de tópicos do Kafka. Essa política se aplica quando seu cluster e pipeline estão na mesma Conta da AWS, o que deve ser verdade, pois o Amazon MSK Serverless não é compatível com o acesso entre contas.

  3. Crie um tópico do Kafka seguindo as etapas em Criar um tópico. Verifique se BootstrapServerString é um dos seus URLs de bootstrap do Simple Authentication and Security Layer (SASL) do IAM. O valor de --replication-factor deve ser 2 ou 3, com base no número de zonas que seu cluster do 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 BootstrapServerString é um dos seus URLs de bootstrap do Simple Authentication and Security Layer (SASL) do IAM.

Etapa 1: configurar o perfil de 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:

JSON
{ "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:111122223333:cluster/cluster-name/cluster-id" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:ReadData" ], "Resource": [ "arn:aws:kafka:us-east-1:111122223333:topic/cluster-name/cluster-id/topic-name" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:us-east-1:111122223333:group/cluster-name/*" ] } ] }

Etapa 2: Criar o pipeline

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

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

Você pode usar um esquema do Amazon MSK pré-configurado para criar esse pipeline. Para obter mais informações, consulte Trabalhar com esquemas.

Etapa 3: (opcional) usar o registro do esquema AWS Glue

Ao usar a Ingestão do OpenSearch com o Amazon MSK, você pode usar o formato de dados AVRO para esquemas hospedados no Schema Registry do 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 fornecer AWS Glue permissões de acesso de leitura em sua função de pipeline. Você pode usar a política AWS gerenciada chamada AWSGlueSchemaRegistryReadonlyAccess. Além disso, seu registro deve estar na mesma Conta da AWS e região do pipeline da Ingestão do OpenSearch.

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. A Ingestão do OpenSearch possui ajuste de escala automático integrado para aumentar a escala verticalmente, com base no uso da CPU ou 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.