Uso de una canalización de OpenSearch Ingestion con Amazon Managed Streaming for Apache Kafka - Amazon OpenSearch Service

Uso de una canalización de OpenSearch Ingestion con Amazon Managed Streaming for Apache Kafka

Puede utilizar el complemento de Kafka para incorporar datos de Amazon Managed Streaming para Apache Kafka (Amazon MSK) en su canalización de OpenSearch Ingestion. Con Amazon MSK, puede crear y ejecutar aplicaciones que utilizan Apache Kafka para procesar datos de streaming. OpenSearch Ingestion utiliza AWS PrivateLink para conectarse con Amazon MSK. Puede ingerir datos de clústeres de Amazon MSK y Amazon MSK sin servidor. La única diferencia entre los dos procesos son los pasos de requisitos previos que debe seguir antes de configurar su canalización.

Requisitos previos de Amazon MSK aprovisionado

Antes de crear su canalización de OpenSearch Ingestion, realice los siguientes pasos:

  1. Siga los pasos que se indican en Creating a cluster en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka para crear un clúster aprovisionado de Amazon MSK. En Tipo de agente, elija cualquier opción excepto para los tipos t3, ya que no son compatibles con OpenSearch Ingestion.

  2. Cuando el clúster tenga el estado Activo, siga los pasos que se indican en Activar la conectividad de varias VPC.

  3. Siga los pasos que se indican en Adjuntar una política de clúster al clúster de MSK para adjuntar una de las siguientes políticas, en función de si el clúster y la canalización están en la misma Cuenta de AWS. Esta política permite a OpenSearch Ingestion crear una conexión AWS PrivateLink con su clúster de Amazon MSK y leer datos de los temas de Kafka. Asegúrese de actualizar el resource con su propio ARN.

    Las siguientes políticas se aplican cuando el clúster y la canalización están en la misma Cuenta de 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" } ] }

    Si su clúster de Amazon MSK está en una Cuenta de AWS diferente a la de su canalización, adjunte la siguiente política en su lugar. Tenga en cuenta que el acceso entre cuentas solo es posible con los clústeres de Amazon MSK aprovisionados y no con los clústeres de Amazon MSK sin servidor. El ARN para la AWS de principal debe ser el ARN del mismo rol de canalización que proporcionó a la configuración de YAML de la canalización:

    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. Cree un tema de Kafka siguiendo los pasos de Creación de un tema. Asegúrese de que BootstrapServerString sea una de las URL de arranque del punto de conexión privado (VPC única). El valor de --replication-factor debe ser 2 o 3, en función del número de zonas que tenga su clúster de Amazon MSK. El valor de las --partitions debe ser como mínimo 10.

  5. Produzca y consuma datos siguiendo los pasos de Producir y consumir datos. De nuevo, asegúrese de que BootstrapServerString sea una de las URL de arranque del punto de conexión privado (VPC única).

Requisitos previos de Amazon MSK sin servidor

Antes de crear su canalización de OpenSearch Ingestion, realice los siguientes pasos:

  1. Siga los pasos que se indican en Create an MSK Serverless cluster en la Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka para crear un clúster de Amazon MSK sin servidor.

  2. Cuando el clúster tenga el estado Activo, siga los pasos que se indican en Attach a cluster policy to the MSK cluster para adjuntar la siguiente política. Asegúrese de actualizar el resource con su propio 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 a OpenSearch Ingestion crear una conexión de AWS PrivateLink con su clúster de Amazon MSK sin servidor y leer datos de los temas de Kafka. Esta política se aplica cuando el clúster y la canalización se encuentran en la misma Cuenta de AWS, lo que debe ser cierto, ya que Amazon MSK sin servidor no admite el acceso entre cuentas.

  3. Cree un tema de Kafka siguiendo los pasos de Creación de un tema. Asegúrese de que BootstrapServerString sea una de las URL de arranque de IAM de su capa de seguridad y autenticación simple (SASL). El valor de --replication-factor debe ser 2 o 3, en función del número de zonas que tenga su clúster de Amazon MSK sin servidor. El valor de las --partitions debe ser como mínimo 10.

  4. Produzca y consuma datos siguiendo los pasos de Producir y consumir datos. De nuevo, asegúrese de que BootstrapServerString sea una de las URL de arranque de IAM de su capa de seguridad y autenticación simple (SASL).

Paso 1: Configurar un rol de canalización

Una vez configurado el clúster aprovisionado o sin servidor de Amazon MSK, agregue los siguientes permisos de Kafka al rol de canalización que desee usar en la configuración de la canalización:

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/*" ] } ] }

Paso 2: crear la canalización

A continuación, puede configurar una canalización de OpenSearch Ingestion como la siguiente, en la que se especifica a Kafka como fuente:

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

Puede utilizar un esquema de Amazon MSK preconfigurado para crear esta canalización. Para obtener más información, consulte Uso de esquemas.

Paso 3: (opcional) utilizar AWS Glue Schema Registry

Al utilizar OpenSearch Ingestion con Amazon MSK, puede utilizar el formato de datos AVRO para los esquemas alojados en AWS Glue Schema Registry. Con AWS Glue Schema Registry, puede descubrir, controlar y evolucionar de forma centralizada los esquemas de flujo de datos.

Para usar esta opción, habilite el type de esquema en la configuración de su canalización:

schema: type: "aws_glue"

También debe proporcionar a AWS Glue permisos de acceso de lectura en su rol de canalización. Puede usar la política administrada por AWS denominada AWSGlueSchemaRegistryReadonlyAccess. Además, su registro debe estar en la misma Cuenta de AWS y región que su canalización de OpenSearch Ingestion.

Paso 4: (opcional) configurar las unidades de cómputo (OCU) recomendadas para la canalización de Amazon MSK

Cada unidad de cómputo tiene un consumidor por tema. Los agentes equilibran las particiones entre estos consumidores para un tema determinado. Sin embargo, cuando el número de particiones es superior al número de consumidores, Amazon MSK aloja varias particiones en cada consumidor. OpenSearch Ingestion tiene un escalado automático integrado para escalar o reducir verticalmente según el uso de la CPU o la cantidad de registros pendientes en la canalización.

Para un rendimiento óptimo, distribuya las particiones entre varias unidades de cómputo para el procesamiento paralelo. Si los temas tienen un gran número de particiones (por ejemplo, más de 96, que es el número máximo de OCU por canalización), se recomienda configurar una canalización con 1–96 OCU. Esto se debe a que se escalará automáticamente según sea necesario. Si un tema tiene un número reducido de particiones (por ejemplo, menos de 96), mantenga la unidad de cómputo máxima igual a la cantidad de particiones.

Cuando una canalización tenga más de un tema, seleccione el tema con el mayor número de particiones como referencia para configurar las unidades de cómputo máximas. Al agregar otra canalización con un nuevo conjunto de OCU al mismo tema y grupo de consumidores, se puede escalar el rendimiento de forma casi lineal.