Uso de una canalización OpenSearch de ingestión con Amazon Managed Streaming for Apache Kafka - OpenSearch Servicio Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

Puede usar el complemento de Kafka para incorporar datos de Amazon Managed Streaming for Apache Kafka (MSKAmazon) OpenSearch a su canal de ingestión. Con AmazonMSK, puede crear y ejecutar aplicaciones que utilicen Apache Kafka para procesar datos de streaming. OpenSearch Ingestion utiliza AWS PrivateLink para conectarse a AmazonMSK. Puede ingerir datos de clústeres de Amazon MSK y Amazon MSK Serverless. La única diferencia entre los dos procesos son los pasos previos que debes seguir antes de configurar tu canalización.

MSKRequisitos previos de Amazon

Antes de crear tu canalización OpenSearch de ingestión, lleva a cabo los siguientes pasos:

  1. Cree un clúster MSK aprovisionado por Amazon siguiendo los pasos que se indican en la Guía para desarrolladores de Amazon Managed Streaming for Apache Kafka Developer Guide. Para el tipo de agente, elige cualquier opción excepto los t3 tipos, ya que Ingestion no los OpenSearch admite.

  2. Cuando el clúster tenga el estado Activo, sigue los pasos que se indican en Activar la VPC conectividad múltiple.

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

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

    Si tu MSK clúster de Amazon está en un proceso Cuenta de AWS diferente al tuyo, adjunta 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 Serverless. El ARN campo for AWS principal debe ser el ARN mismo rol de canalización que usted proporciona a su configuración de canalización: YAML

    { "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. Cree un tema de Kafka siguiendo los pasos de Creación de un tema. Asegúrese de que BootstrapServerString se trate de uno de los bootstrap de punto final privado (únicoVPC). URLs El valor de --replication-factor debe ser 2 o3, en función del número de zonas que tenga tu MSK clúster de Amazon. 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úrate de que BootstrapServerString sea uno de tus bootstrap URLs de punto final privado (únicoVPC).

Requisitos previos de Amazon MSK Serverless

Antes de crear su canalización OpenSearch de ingestión, lleve a cabo los siguientes pasos:

  1. Cree un clúster de Amazon MSK Serverless siguiendo los pasos de la Guía para desarrolladores de Amazon Managed Streaming for Apache Kafka Developer Guide. MSK

  2. Cuando el clúster tenga el estado Activo, siga los pasos que se indican en Adjuntar una política de clúster al MSK clúster para adjuntar la siguiente política. Asegúrese de actualizarla resource con la suya propiaARN.

    { "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" } ] }

    Esta política permite a OpenSearch Ingestion crear una AWS PrivateLink conexión con su clúster de Amazon MSK Serverless y leer datos de los temas de Kafka. Esta política se aplica cuando el clúster y la canalización están en el mismo lugar Cuenta de AWS, lo que debe ser cierto, ya que Amazon MSK Serverless 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 se trate de uno de sus programas básicos de nivel de autenticación y seguridad simple (SASL). IAM URLs El valor de --replication-factor debe ser 2 o3, en función del número de zonas que tenga su clúster de Amazon MSK Serverless. El valor de las --partitions debe ser como mínimo 10.

  4. Produzca y consuma datos siguiendo los pasos de Producir y consumir datos. Una vez más, asegúrese de que BootstrapServerString se trate de uno de los IAM bootstrap URLs de la capa de autenticación y seguridad simple (SASL).

Paso 1: configurar el rol de canalización

Una vez que hayas configurado tu clúster MSK aprovisionado o sin servidor de Amazon, añade los siguientes permisos de Kafka en el rol de canalización que quieras usar en tu configuración de canalización:

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

Paso 2: crear la canalización

A continuación, puede configurar una canalización de OpenSearch ingestión 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: "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

Puedes usar un MSK blueprint de Amazon preconfigurado para crear esta canalización. Para obtener más información, consulte Uso de esquemas para crear una canalización.

Paso 3: (opcional) Usa el registro de esquemas AWS Glue

Al utilizar OpenSearch Ingestión con AmazonMSK, puede utilizar el formato de AVRO datos para los esquemas alojados en el registro de AWS Glue esquemas. 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 permisos de acceso AWS Glue de lectura en su rol de canalización. Puedes usar la política AWS gestionada llamada AWSGlueSchemaRegistryReadonlyAccess. Además, tu registro debe estar en la misma región Cuenta de AWS y en la misma región que tu canal OpenSearch de ingestión.

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

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 mayor que el número de consumidores, Amazon MSK aloja varias particiones en cada consumidor. OpenSearch Ingestion tiene un escalado automático incorporado para escalar hacia arriba o hacia abajo en función del CPU uso o la cantidad de registros pendientes en proceso.

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 máximo OCUs por canalización), se recomienda configurar una canalización de 1 OCUs a 96. 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. Si añades otra canalización con un nuevo conjunto de OCUs temas y grupos de consumidores, puedes escalar el rendimiento de forma casi lineal.