

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
<a name="configure-client-msk"></a>

Puede usar el [complemento de Kafka para incorporar](https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/sources/kafka/) datos de [Amazon Managed Streaming for Apache](https://docs.aws.amazon.com/msk/latest/developerguide/) Kafka (Amazon MSK) OpenSearch a su canal de ingestión. Con Amazon MSK, puede crear y ejecutar aplicaciones que utilizan Apache Kafka para procesar datos de streaming. OpenSearch Ingestion utiliza AWS PrivateLink para conectarse a 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.

**Topics**
+ [Requisitos previos de Amazon MSK aprovisionado](#msk-prereqs)
+ [Requisitos previos de Amazon MSK sin servidor](#msk-serverless-prereqs)
+ [Paso 1: Configurar un rol de canalización](#msk-pipeline-role)
+ [Paso 2: crear la canalización](#msk-pipeline)
+ [Paso 3: (opcional) Utilice el registro de esquemas AWS Glue](#msk-glue)
+ [Paso 4: (opcional) Configurar las unidades de cómputo recomendadas (OCUs) para la canalización de Amazon MSK](#msk-ocu)

## Requisitos previos de Amazon MSK aprovisionado
<a name="msk-prereqs"></a>

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

1. Siga los pasos que se indican en [Creating a cluster](https://docs.aws.amazon.com/msk/latest/developerguide/msk-create-cluster.html#create-cluster-console) en la *Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka* para crear un clúster aprovisionado de Amazon MSK. Para el **tipo de agente**, elige cualquier opción excepto los `t3` tipos, ya que OpenSearch Ingestion no los admite.

1. Cuando el clúster tenga el estado **Activo**, siga los pasos que se indican en [Activar la conectividad de varias VPC](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access-mult-vpc.html#mvpc-cluster-owner-action-turn-on).

1. Siga los pasos que se indican en [Adjuntar una política de clúster al clúster de MSK](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access-mult-vpc.html#mvpc-cluster-owner-action-policy) 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 AWS PrivateLink conexión 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 tu clúster de Amazon MSK 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 sin servidor. El ARN de AWS `principal` debe ser el ARN de la misma función de canalización que proporcionaste a la configuración 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/*"
         ]
       }
     ]
   }
   ```

------

1. Cree un tema de Kafka siguiendo los pasos de [Creación de un tema](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html). Asegúrese de que `BootstrapServerString` sea uno de los bootstrap del punto final privado (VPC única). URLs 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`.

1. Produzca y consuma datos siguiendo los pasos de [Producir y consumir datos](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html). De nuevo, asegúrate de que `BootstrapServerString` sea uno de los bootstrap de tu punto final privado (VPC única). URLs

## Requisitos previos de Amazon MSK sin servidor
<a name="msk-serverless-prereqs"></a>

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

1. Siga los pasos que se indican en [Create an MSK Serverless cluster](https://docs.aws.amazon.com/msk/latest/developerguide/create-serverless-cluster.html#) en la *Guía para desarrolladores de Amazon Managed Streaming para Apache Kafka* para crear un clúster de Amazon MSK sin servidor.

1. Cuando el clúster tenga el estado **Activo**, siga los pasos que se indican en [Attach a cluster policy to the MSK cluster](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access-mult-vpc.html#mvpc-cluster-owner-action-policy) 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 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 se encuentran en el mismo lugar Cuenta de AWS, lo que debe ser cierto, ya que Amazon MSK Serverless no admite el acceso entre cuentas.

1. Cree un tema de Kafka siguiendo los pasos de [Creación de un tema](https://docs.aws.amazon.com/msk/latest/developerguide/msk-serverless-create-topic.html). Asegúrese de que `BootstrapServerString` sea uno de sus programas de IAM de nivel simple de autenticación y seguridad (SASL). URLs 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`.

1. Produzca y consuma datos siguiendo los pasos de [Producir y consumir datos](https://docs.aws.amazon.com/msk/latest/developerguide/msk-serverless-produce-consume.html). Una vez más, asegúrate de que `BootstrapServerString` sea uno de los bootstrap de IAM de capa simple de autenticación y seguridad (SASL). URLs

## Paso 1: Configurar un rol de canalización
<a name="msk-pipeline-role"></a>

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 name="msk-pipeline"></a>

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: "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](pipeline-blueprint.md).

## Paso 3: (opcional) Utilice el registro de esquemas AWS Glue
<a name="msk-glue"></a>

Al utilizar OpenSearch Ingestion con Amazon MSK, puede utilizar el formato de datos AVRO para los esquemas alojados en el registro de esquemas. AWS Glue Con [AWS Glue Schema Registry](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html), 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 AWS Glue permisos de acceso de lectura en su rol de canalización. Puedes usar la política AWS gestionada llamada [AWSGlueSchemaRegistryReadonlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSGlueSchemaRegistryReadonlyAccess.html). 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 canalización de Amazon MSK
<a name="msk-ocu"></a>

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 incorporado para escalar hacia arriba o hacia abajo según el uso de la CPU 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 con 1 a OCUs 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.