

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.

# Características y conceptos clave de Amazon MSK
<a name="operations"></a>

Los clústeres de Amazon MSK aprovisionado ofrecen una amplia gama de características y capacidades que ayudan a optimizar el rendimiento del clúster y a satisfacer las necesidades de streaming. Los temas que se presentan a continuación describen estas funcionalidades en detalle.
+ la [Consola de administración de AWS](https://console.aws.amazon.com/msk),
+ La [referencia de la API de Amazon MSK](https://docs.aws.amazon.com/msk/1.0/apireference)
+ La [referencia de los comandos de la CLI de Amazon MSK](https://docs.aws.amazon.com/cli/latest/reference/kafka/index.html)

**Topics**
+ [Tipos de agentes de Amazon MSK](broker-instance-types.md)
+ [Tamaños del agente de Amazon MSK](broker-instance-sizes.md)
+ [Administración del almacenamiento para agentes Standard](msk-storage-management.md)
+ [Configuración de Amazon MSK aprovisionado](msk-configuration.md)
+ [Reequilibrio inteligente para clústeres](intelligent-rebalancing.md)
+ [Aplicación de parches en clústeres de MSK aprovisionados](patching-impact.md)
+ [El agente no está en línea y el cliente realiza una conmutación por error](troubleshooting-offlinebroker-clientfailover.md)
+ [Seguridad en Amazon MSK](security.md)
+ [Registro de Amazon MSK](msk-logging.md)
+ [Administración de metadatos](metadata-management.md)
+ [Tema: Operaciones](msk-topic-operations-information.md)
+ [Recursos de Amazon MSK](resources.md)
+ [Versiones de Apache Kafka](kafka-versions.md)
+ [Solución de problemas del clúster de Amazon MSK](troubleshooting.md)

# Tipos de agentes de Amazon MSK
<a name="broker-instance-types"></a>

MSK aprovisionado ofrece dos tipos de agentes: Standard y Express. Los corredores estándar le brindan la mayor flexibilidad para configurar sus clústeres, mientras que los corredores Express ofrecen más elasticidad, rendimiento y resiliencia y ease-of-use para ejecutar aplicaciones de streaming de alto rendimiento.

Consulte los siguientes temas para obtener más detalles sobre cada oferta. La siguiente tabla también destaca la comparación de características clave entre los agentes Standard y Express.


| Característica | Agente Standard | Agente Express | 
| --- | --- | --- | 
|  [Administración del almacenamiento](msk-storage-management.md)  |  Administrado por el cliente (las características incluyen almacenamiento EBS, almacenamiento por niveles, rendimiento de almacenamiento aprovisionado, escalado automático y alertas de capacidad de almacenamiento)  |  Completamente administrado por MSK  | 
|  [Instancias compatibles](broker-instance-sizes.md)  |  T3, M5, M7g  |  M7g  | 
|  [Consideraciones de dimensionamiento y escalado](bestpractices-intro.md)  | Rendimiento, conexiones, particiones, almacenamiento |  Rendimiento, conexiones, particiones  | 
| [Escalado de agentes](msk-update-broker-count.md) | Escalado vertical y horizontal | Escalado vertical y horizontal | 
|  [Versiones de Kafka](kafka-versions.md)  |  Consulte [Versiones de Apache Kafka](kafka-versions.md)  |  Comienza en la versión 3.6  | 
|  [Configuración de Apache Kafka](msk-configuration.md)  |  Más configurable  |  Administrado principalmente por MSK para una mayor resiliencia  | 
| [Seguridad](security.md) |  Cifrado, Private/Public acceso, autenticación y autorización: IAM, SASL/SCRAM, mTLS, texto plano, Kafka ACLs  |  Cifrado, Private/Public acceso, autenticación y autorización: IAM, SASL/SCRAM, mTLS, texto plano, Kafka ACLs  | 
| [Supervisión](monitoring.md) |  CloudWatch, Supervisión abierta  |  CloudWatch, Supervisión abierta  | 

**nota**  
No es posible cambiar un clúster de MSK aprovisionado de un tipo de agente Standard a un tipo de agente Express mediante la API de MSK. Debe crear un nuevo clúster con el tipo de agente deseado (Standard o Express).

**Topics**
+ [Agentes Standard de Amazon MSK](msk-broker-types-standard.md)
+ [Agentes Express de Amazon MSK](msk-broker-types-express.md)

# Agentes Standard de Amazon MSK
<a name="msk-broker-types-standard"></a>

Los agentes Standard para MSK aprovisionado ofrecen la mayor flexibilidad para configurar el rendimiento del clúster. Puede elegir entre una amplia gama de configuraciones de clúster para lograr las características de disponibilidad, durabilidad, rendimiento y latencia que requieren las aplicaciones. También puede aprovisionar capacidad de almacenamiento y aumentarla según sea necesario. Amazon MSK gestiona el mantenimiento del hardware de los agentes Standard y de los recursos de almacenamiento asociados, y repara automáticamente los problemas de hardware que puedan surgir. Puede encontrar más detalles en este documento sobre diversos temas relacionados con los agentes Standard, incluidos temas sobre [administración del almacenamiento](msk-storage-management.md), [configuraciones](msk-configuration-standard.md) y [mantenimiento](patching-impact.md#patching-standard-brokers).

# Agentes Express de Amazon MSK
<a name="msk-broker-types-express"></a>

Los agentes Express para MSK aprovisionado simplifican la administración de Apache Kafka, resultan más rentables para operar a escala y ofrecen mayor elasticidad con la baja latencia esperada. Los intermediarios incluyen un pay-as-you-go almacenamiento que se escala automáticamente y no requiere dimensionamiento, aprovisionamiento ni supervisión proactiva. Según el tamaño de instancia seleccionado, cada nodo de agente puede proporcionar hasta tres veces más rendimiento por agente, escalar verticalmente hasta 20 veces más rápido y recuperarse un 90 % más rápido en comparación con los agentes Standard de Apache Kafka. Los agentes Express vienen preconfigurados con los valores predeterminados de prácticas recomendadas de Amazon MSK y aplican cuotas de rendimiento del cliente para minimizar la contención de recursos entre los clientes y las operaciones en segundo plano de Kafka.

A continuación, se presentan algunas características clave y capacidades que se deben considerar al utilizar agentes Express.
+ **Sin administración del almacenamiento**: los agentes Express eliminan la necesidad de [aprovisionar o administrar recursos de almacenamiento](msk-storage-management.md). Obtiene un almacenamiento elástico, prácticamente ilimitado y totalmente gestionado. pay-as-you-go Para casos de uso de alto rendimiento, no es necesario analizar las interacciones entre las instancias de computación y los volúmenes de almacenamiento, ni los cuellos de botella de rendimiento asociados. Estas capacidades simplifican la administración del clúster y eliminan la sobrecarga operativa asociada a la administración del almacenamiento.
+ **Escalado más rápido**: los agentes Express permiten escalar el clúster y mover particiones hasta 20 veces más rápido que con agentes Standard. Esta capacidad es fundamental cuando necesita escalar horizontalmente el clúster para gestionar picos de carga entrantes o reducir horizontalmente para disminuir costos. Consulte las secciones sobre la [expansión del clúster](msk-update-broker-count.md), la [eliminación de intermediarios](msk-remove-broker.md), la [reasignación de particiones](msk-update-broker-type.md) y la [configuración LinkedIn del Cruise Control para reequilibrarlo](cruise-control.md) si desea obtener más información sobre cómo escalar su clúster.
+ **Mayor rendimiento**: los agentes Express ofrecen hasta tres veces más rendimiento por agente que los agentes Standard. Por ejemplo, puede escribir datos de forma segura hasta 500 MBps con cada broker Express de 7g.16x de tamaño, en comparación con los 153,8 con el broker estándar equivalente (ambos números suponen una asignación de ancho de banda suficiente para las operaciones MBps en segundo plano, como la replicación y el reequilibrio).
+ **Configurado para alta resiliencia**: los agentes Express ofrecen automáticamente diversas prácticas recomendadas para mejorar la resiliencia del clúster. Estas incluyen barreras de protección en configuraciones críticas de Apache Kafka, cuotas de rendimiento y reservas de capacidad para operaciones en segundo plano y reparaciones no planificadas. Estas capacidades hacen que sea más seguro y sencillo ejecutar aplicaciones de Apache Kafka a gran escala. Consulte las secciones [Configuraciones de agentes Express](msk-configuration-express.md) y [Cuota de agentes Express de Amazon MSK](limits.md#msk-express-quota) para obtener más detalles.
+ **Sin periodos de mantenimiento**: no existen periodos de mantenimiento para los agentes Express. Amazon MSK actualiza automáticamente el hardware del clúster de forma continua. Consulte [Aplicación de parches para agentes Express](https://docs.aws.amazon.com/msk/latest/developerguide/patching-impact.html#patching-express-brokers) para obtener más detalles.

## Información adicional sobre los agentes Express
<a name="msk-broker-types-express-notes"></a>
+ Los corredores de Express trabajan con Apache Kafka APIs, pero aún no son totalmente compatibles con la API. KStreams 
+ Los corredores Express solo están disponibles en una AZs configuración de 3.
+ Los agentes Express solo están disponibles en determinados tamaños de instancia. Consulte [Precios de Amazon MSK](https://aws.amazon.com/msk/pricing/) para obtener la lista actualizada.
+ Los corredores Express son compatibles con las siguientes versiones de Apache Kafka: 3.6, 3.8 y 3.9.
+ Los corredores Express se pueden crear con el KRaft modo a partir de la versión 3.9 de Apache Kafka.

**Consulte estos blogs**  
Para obtener más información sobre los agentes Express de MSK y ver un ejemplo práctico de agentes Express en uso, lea los siguientes blogs:  
[Presentación de agentes Express para Amazon MSK para ofrecer alto rendimiento y un escalado más rápido para los clústeres de Kafka](https://aws.amazon.com/blogs/aws/introducing-express-brokers-for-amazon-msk-to-deliver-high-throughput-and-faster-scaling-for-your-kafka-clusters/)
[Agentes Express para Amazon MSK: escalado de Kafka con turbo y un rendimiento hasta 20 veces más rápido](https://aws.amazon.com/blogs/big-data/express-brokers-for-amazon-msk-turbo-charged-kafka-scaling-with-up-to-20-times-faster-performance/)  
Este blog muestra cómo los agentes Express:  
Ofrecen mayor rendimiento,permiten un escalado rápido y mejoran el tiempo de recuperación ante fallos
Deshágase de las complejidades de la administración del almacenamiento

# Tamaños del agente de Amazon MSK
<a name="broker-instance-sizes"></a>

Cuando crea un clúster de Amazon MSK aprovisionado, especifica el tamaño de los agentes que desea que tenga. Según el [tipo de agente](broker-instance-types.md), Amazon MSK admite los siguientes tamaños de agente.

**Tamaños de agentes estándar**
+ kafka.t3.small
+ kafka.m5.large, kafka.m5.xlarge, kafka.m5.2xlarge, kafka.m5.4xlarge, kafka.m5.8xlarge, kafka.m5.12xlarge, kafka.m5.16xlarge, kafka.m5.24xlarge
+ kafka.m7g.large, kafka.m7g.xlarge, kafka.m7g.2xlarge, kafka.m7g.4xlarge, kafka.m7g.8xlarge, kafka.m7g.12xlarge, kafka.m7g.16xlarge

**Tamaños de agentes Express**
+ express.m7g.large, express.m7g.xlarge, express.m7g.2xlarge, express.m7g.4xlarge, express.m7g.8xlarge, express.m7g.12xlarge, express.m7g.16xlarge

**nota**  
Es posible que algunos tamaños de corredores no estén disponibles en determinadas AWS regiones. Consulte las tablas de precios actualizadas de instancias de agentes en la [página de precios de Amazon MSK](https://aws.amazon.com/msk/pricing/) para obtener la lista más reciente de instancias disponibles por región.

## Otras notas sobre los tamaños de agentes
<a name="broker-instance-sizes-other-notes"></a>
+ Los corredores M7g utilizan procesadores AWS Graviton (procesadores personalizados basados en ARM creados por Amazon Web Services). Los agentes M7g ofrecen una mejor relación precio-rendimiento que las instancias M5 comparables. Los agentes M7g consumen menos energía que las instancias M5 comparables.
+ Amazon MSK admite agentes M7g en clústeres de MSK aprovisionado que ejecutan las versiones 2.8.2 y 3.3.2 y posteriores de Kafka.
+ Los agentes M7g y M5 tienen un rendimiento de referencia más alto que los agentes T3 y se recomiendan para cargas de trabajo de producción. Los agentes M7g y M5 también pueden tener más particiones por agente que los agentes T3. Utilice los agentes M7g o M5 si está ejecutando cargas de trabajo de grado de producción más grandes o necesita un mayor número de particiones. Para obtener más información sobre los tamaños de las instancias M7g y M5, consulta [Amazon EC2 General](https://aws.amazon.com/ec2/instance-types/) Purpose Instances.
+ Los agentes T3 tienen la capacidad de usar créditos de CPU para rendimiento por ráfagas temporalmente. Utilice los agentes T3 para el desarrollo de bajo costo, si está probando cargas de trabajo de streaming de pequeñas a medianas, o si tiene cargas de trabajo de streaming de bajo rendimiento que experimentan picos temporales en el rendimiento. Le recomendamos que realice una proof-of-concept prueba para determinar si los intermediarios T3 son suficientes para la producción o para una carga de trabajo crítica. Para obtener más información sobre los tamaños de los corredores T3, consulte [Amazon EC2 T3](https://aws.amazon.com/ec2/instance-types/t3/) Instances.

Para más información sobre cómo elegir los tamaños del agente, consulte [Prácticas recomendadas para agentes Standard y Express](bestpractices-intro.md).

# Administración del almacenamiento para agentes Standard
<a name="msk-storage-management"></a>

Amazon MSK ofrece funciones que lo ayudan a administrar el almacenamiento en sus clústeres de MSK.

**nota**  
Con los [agentes Express](msk-broker-types-express.md), no es necesario aprovisionar ni administrar ningún recurso de almacenamiento utilizado por los datos. Esto simplifica la administración del clúster y elimina una de las causas comunes de problemas operativos en los clústeres de Apache Kafka. Además, reduce los costos, ya que no es necesario aprovisionar capacidad de almacenamiento inactiva y solo se paga por lo que se utiliza.

**Tipo de agente estándar**  
Con [agentes estándar](msk-broker-types-standard.md), puede elegir entre una variedad de opciones y capacidades de almacenamiento. Amazon MSK ofrece funciones que lo ayudan a administrar el almacenamiento en sus clústeres de MSK.

Para obtener información sobre la administración del rendimiento, consulte [Aprovisionamiento del rendimiento de almacenamiento para agentes Standard en un clúster de Amazon MSK](msk-provision-throughput.md).

**Topics**
+ [Almacenamiento por niveles para agentes Standard](msk-tiered-storage.md)
+ [Escalado vertical del almacenamiento de los agentes Standard de Amazon MSK](msk-update-storage.md)
+ [Administración del rendimiento del almacenamiento para agentes Standard en un clúster de Amazon MSK](msk-provision-throughput-management.md)

# Almacenamiento por niveles para agentes Standard
<a name="msk-tiered-storage"></a>

El almacenamiento por niveles es un nivel de almacenamiento de bajo costo para Amazon MSK que se puede escalar hasta ofrecer un almacenamiento prácticamente ilimitado, lo que permite crear aplicaciones de datos de streaming de manera rentable.

Puede crear un clúster de Amazon MSK y configurarlo con almacenamiento por niveles que equilibra el rendimiento y el costo. Amazon MSK almacena los datos de streaming en un nivel de almacenamiento principal optimizado para el rendimiento hasta que alcanzan los límites de retención por temas de Apache Kafka. A continuación, Amazon MSK traslada automáticamente los datos al nuevo nivel de almacenamiento de bajo costo.

Cuando la aplicación empiece a leer los datos del almacenamiento por niveles, cabe esperar un aumento de la latencia de lectura durante los primeros bytes. A medida que empiece a leer los datos restantes de forma secuencial desde el nivel de bajo costo, cabe esperar latencias similares a las del nivel de almacenamiento principal. No es necesario aprovisionar almacenamiento para el almacenamiento por niveles de bajo costo ni administrar la infraestructura. Puede almacenar cualquier cantidad de datos y pagar únicamente por lo que utilice. Esta función es compatible con la APIs introducida en el [KIP-405: Kafka](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) Tiered Storage.

Para obtener información sobre el dimensionamiento, la supervisión y la optimización del clúster de Amazon MSK con almacenamiento por niveles, consulte [Prácticas recomendadas para ejecutar cargas de trabajo de producción con almacenamiento por niveles de Amazon MSK](https://aws.amazon.com/blogs/big-data/best-practices-for-running-production-workloads-using-amazon-msk-tiered-storage/).

A continuación, se muestran algunas de las características del almacenamiento por niveles:
+ Puede escalar a un almacenamiento prácticamente ilimitado, sin necesidad de adivinar cómo escalar la infraestructura de Apache Kafka.
+ Puede retener los datos durante más tiempo en los temas de Apache Kafka o aumentar el almacenamiento de los temas sin necesidad de aumentar el número de agentes.
+ Proporciona un búfer de seguridad de mayor duración para administrar los retrasos inesperados en el procesamiento.
+ Puede volver a procesar los datos antiguos en su orden de producción exacto con el código de procesamiento de flujos existente y con Kafka. APIs
+ Las particiones se vuelven a equilibrar más rápido porque no es necesario replicar los datos del almacenamiento secundario en los discos de los agentes.
+ Los datos entre los agentes y el almacenamiento por niveles se trasladan en la VPC y no pasan por Internet.
+ Un equipo cliente puede utilizar el mismo proceso para conectarse a clústeres nuevos con el almacenamiento por niveles habilitado que el que utiliza para conectarse a un clúster sin el almacenamiento por niveles habilitado. Consulte [Crear un equipo cliente](https://docs.aws.amazon.com/msk/latest/developerguide/create-client-machine.html).

## Requisitos de almacenamiento por niveles para los clústeres de Amazon MSK
<a name="msk-tiered-storage-requirements"></a>
+ Debe utilizar la versión 3.0.0 o superior del cliente de Apache Kafka para crear un tema nuevo con el almacenamiento por niveles habilitado. Para hacer la transición de un tema existente a un almacenamiento por niveles, puede volver a configurar un equipo cliente que utilice una versión de cliente de Kafka anterior a la 3.0.0 (la versión mínima admitida de Apache Kafka es la 2.8.2.tiered) para habilitar el almacenamiento por niveles. Consulte [Paso 4: creación de un tema en el clúster de Amazon MSK](create-topic.md).
+ El clúster de Amazon MSK con el almacenamiento por niveles habilitado debe utilizar la versión 3.6.0 o superior, o la versión 2.8.2.tiered.

## Restricciones y limitaciones de almacenamiento por niveles para clústeres de Amazon MSK
<a name="msk-tiered-storage-constraints"></a>

El almacenamiento por niveles tiene las siguientes restricciones y limitaciones:
+ Asegúrese de que los clientes no estén configurados para `read_committed` al leer desde remote\$1tier en Amazon MSK, a menos que la aplicación utilice activamente la característica de transacciones.
+ El almacenamiento por niveles no está disponible en las regiones AWS GovCloud (EE. UU.).
+ El almacenamiento por niveles se aplica solo a los clústeres en modo aprovisionado.
+ El almacenamiento por niveles no admite el tamaño del agente t3.small.
+ El periodo mínimo de retención en el almacenamiento de bajo costo es de 3 días. No hay un periodo mínimo de retención para el almacenamiento principal.
+ El almacenamiento por niveles no admite varios directorios de registros en un agente (características relacionadas con JBOD).
+ El almacenamiento por niveles no admite temas compactados. Asegúrese de que todos los temas que tengan habilitado el almacenamiento por niveles tengan configurada la política de limpieza únicamente como “ELIMINAR”.
+ El clúster con almacenamiento por niveles no admite modificar la política log.cleanup.policy de un tema después de su creación.
+ El almacenamiento por niveles se puede desactivar para temas individuales, pero no para todo el clúster. Una vez deshabilitado, el almacenamiento por niveles no se puede volver a habilitar para un tema.
+ Si utiliza la versión 2.8.2.tiered de Amazon MSK, solo podrá migrar sus datos a otra versión de Apache Kafka de almacenamiento por niveles compatible. Si no quiere seguir utilizando una versión de almacenamiento por niveles compatible, cree un nuevo clúster de MSK y migre sus datos a él.
+ La kafka-log-dirs herramienta no puede informar sobre el tamaño de los datos de almacenamiento por niveles. La herramienta solo informa sobre el tamaño de los segmentos de registro en el almacenamiento principal.

Para obtener información sobre la configuración predeterminada y las restricciones que debe tener en cuenta al configurar el almacenamiento por niveles en el nivel de tema, consulte [Directrices para la configuración a nivel de tema del almacenamiento en niveles de Amazon MSK](msk-guidelines-tiered-storage-topic-level-config.md).

# Cómo se copian los segmentos de registro al almacenamiento por niveles para un tema de Amazon MSK
<a name="msk-tiered-storage-retention-rules"></a>

Al habilitar el almacenamiento por niveles para un tema nuevo o existente, Apache Kafka copia los segmentos de registros cerrados del almacenamiento principal al almacenamiento por niveles.
+ Apache Kafka solo copia los segmentos de registro cerrados. Copia todos los mensajes del segmento de registro en un almacenamiento por niveles.
+ Los segmentos activos no son aptos para la organización por niveles. El tamaño de los segmentos de registro (segment.bytes) o el tiempo de traslado de los segmentos (segment.ms) controlan la velocidad de cierre de los segmentos y la velocidad a la que los copia Apache Kafka en el almacenamiento por niveles.

La configuración de retención de un tema con el almacenamiento por niveles habilitado es diferente de la configuración de un tema sin el almacenamiento por niveles habilitado. Las siguientes reglas controlan la retención de los mensajes en los temas con el almacenamiento por niveles habilitado:
+ La retención se define en Apache Kafka con dos configuraciones: log.retention.ms (tiempo) y log.retention.bytes (tamaño). Estas configuraciones determinan la duración y el tamaño totales de los datos que retiene Apache Kafka en el clúster. Ya sea que habilite o no el modo de almacenamiento por niveles, estas configuraciones se establecen a nivel de clúster. Puede sustituir las configuraciones a nivel de tema con las configuraciones de tema.
+ Al habilitar el almacenamiento por niveles, también puede especificar durante cuánto tiempo el nivel de almacenamiento principal de alto rendimiento almacena los datos. Por ejemplo, si un tema tiene una configuración de retención general (log.retention.ms) de 7 días y una retención local (local.retention.ms) de 12 horas, el almacenamiento principal del clúster retiene los datos solo durante las primeras 12 horas. El nivel de almacenamiento de bajo costo retiene los datos durante 7 días.
+ Las configuraciones de retención habituales se aplican a todo el registro. Esto incluye sus partes por niveles y principales.
+ La configuración local.retention.ms o local.retention.bytes controla la retención de los mensajes en el almacenamiento principal. Apache Kafka copia los segmentos de registros cerrados en un almacenamiento por niveles tan pronto como se cierran (en función de segment.bytes o segment.ms), independientemente de la configuración de retención local. Una vez copiados los segmentos al almacenamiento por niveles, permanecen en el almacenamiento principal hasta que se alcanzan los umbrales local.retention.ms o local.retention.bytes. En ese momento, los datos se eliminan del almacenamiento principal, pero permanecen disponibles en el almacenamiento por niveles. Esto le permite conservar los datos recientes en un almacenamiento primario de alto rendimiento para un acceso rápido, mientras que los datos más antiguos se almacenan en un almacenamiento en niveles de bajo costo.
+ Cuando Apache Kafka copia un mensaje de un segmento de registro en un almacenamiento por niveles, elimina el mensaje del clúster según la configuración retention.ms o retention.bytes.

## Escenario de almacenamiento por niveles de Amazon MSK de ejemplo
<a name="msk-tiered-storage-retention-scenario"></a>

Este escenario ilustra cómo se comporta un tema existente que tiene mensajes en el almacenamiento principal cuando el almacenamiento por niveles está habilitado. Para habilitar el almacenamiento por niveles en este tema, establezca remote.storage.enable en `true`. En este ejemplo, retention.ms se establece en 5 días y local.retention.ms se establece en 2 días. La siguiente es la secuencia de eventos cuando un segmento caduca.

**Momento T0: antes de habilitar el almacenamiento por niveles.**  
Antes de habilitar el almacenamiento por niveles para este tema, hay dos segmentos de registro. Uno de los segmentos está activo para la partición 0 de un tema existente.

![\[Momento T0: antes de habilitar el almacenamiento por niveles.\]](http://docs.aws.amazon.com/es_es/msk/latest/developerguide/images/tiered-storage-segments-1.png)


**Momento T1 (< 2 días): almacenamiento por niveles habilitado. El segmento 0 se copió en un almacenamiento por niveles.**  
Tras habilitar el almacenamiento por niveles para este tema, Apache Kafka copia el segmento 0 del registro cerrado en el almacenamiento por niveles tan pronto como se cierra. El segmento se cierra según la configuración segment.bytes o segment.ms, no según la configuración de retención. Apache Kafka también conserva una copia en el almacenamiento principal. El segmento activo 1 aún no puede copiarse en un almacenamiento por niveles porque sigue activo y no se ha cerrado. En este cronograma, Amazon MSK aún no aplica ninguna de las configuraciones de retención a ninguno de los mensajes del segmento 0 y del segmento 1. (retención local). bytes/ms, retention.ms/bytes)

![\[Momento T1 (< 2 días): almacenamiento por niveles habilitado. El segmento 0 se copió en un almacenamiento por niveles.\]](http://docs.aws.amazon.com/es_es/msk/latest/developerguide/images/tiered-storage-segments-2.png)


**Momento T2: retención local vigente.**  
Después de 2 días, se alcanza el umbral de retención local para el segmento 0. Esto se determina si se establece local.retention.ms en 2 días. El segmento 0 ahora se ha eliminado del almacenamiento principal, pero permanece disponible en el almacenamiento por niveles. Tenga en cuenta que el segmento 0 ya estaba copiado en el almacenamiento por niveles en el momento T1 cuando se cerró, no en el momento T2, cuando expiró la retención local. El segmento activo 1 aún no es apto para ser eliminado ni copiado en un almacenamiento por niveles porque sigue activo.

![\[Momento T2: retención local vigente.\]](http://docs.aws.amazon.com/es_es/msk/latest/developerguide/images/tiered-storage-segments-3.png)


**Momento T3: retención general vigente.**  
 Transcurridos 5 días, la configuración de retención entra en vigencia y Kafka borra el segmento 0 del registro y los mensajes asociados del almacenamiento por niveles. El segmento 1 aún no es apto para la caducidad ni se puede copiar en un almacenamiento por niveles porque está activo. El segmento 1 aún no está cerrado, por lo que no es apto para el traslado de segmentos.

![\[Momento T3: retención general vigente.\]](http://docs.aws.amazon.com/es_es/msk/latest/developerguide/images/tiered-storage-segments-4.png)


# Cree un clúster de Amazon MSK con almacenamiento por niveles con Consola de administración de AWS
<a name="msk-create-cluster-tiered-storage-console"></a>

Este proceso describe cómo crear un clúster de Amazon MSK con almacenamiento por niveles mediante la Consola de administración de AWS.

1. Abra la consola de Amazon MSK en [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/).

1. Elija **Create cluster**.

1. Seleccione **Creación personalizada** para el almacenamiento por niveles.

1. Especifique un nombre para el clúster.

1. En **Tipo de clúster**, seleccione **Aprovisionado**.

1. Elija una versión de Amazon Kafka que admita el almacenamiento por niveles para que Amazon MSK la utilice para crear el clúster. 

1. Especifique un tamaño de agente distinto de **kafka.t3.small**.

1. Seleccione el número de agentes que quiere que Amazon MSK cree en cada zona de disponibilidad. El mínimo es un agente por zona de disponibilidad y el máximo es 30 agentes por clúster.

1. Indique el número de zonas en las que se distribuyen los agentes.

1. Indique el número de agentes de Apache Kafka que se implementan por zona.

1. Seleccione **Opciones de almacenamiento**. Esto incluye el **almacenamiento por niveles y el almacenamiento de EBS** para habilitar el modo de almacenamiento por niveles.

1. Siga el resto de pasos del asistente de creación de clúster. Al finalizar, el **almacenamiento por niveles y el almacenamiento de EBS** aparecen como el modo de almacenamiento del clúster en la vista **Revisar y crear**.

1. Seleccione **Create cluster (Crear clúster)**.

# Cree un clúster de Amazon MSK con almacenamiento por niveles con AWS CLI
<a name="msk-create-cluster-tiered-storage-cli"></a>

Para habilitar el almacenamiento por niveles en un clúster, cree el clúster con la versión y el atributo correctos de Apache Kafka para el almacenamiento por niveles. Siga el ejemplo de código siguiente. Además, complete los pasos de la siguiente sección [Cree un tema de Kafka con el almacenamiento por niveles habilitado con el AWS CLI](#msk-create-topic-tiered-storage-cli).

Consulte [create-cluster](https://docs.aws.amazon.com//cli/latest/reference/kafka/create-cluster.html) para obtener una lista completa de los atributos admitidos para la creación de clústeres.

```
aws kafka create-cluster \
 —cluster-name "MessagingCluster" \
 —broker-node-group-info file://brokernodegroupinfo.json \
 —number-of-broker-nodes 3 \
--kafka-version "3.6.0" \
--storage-mode "TIERED"
```

## Cree un tema de Kafka con el almacenamiento por niveles habilitado con el AWS CLI
<a name="msk-create-topic-tiered-storage-cli"></a>

Para finalizar el proceso que inició al crear un clúster con el almacenamiento por niveles habilitado, cree también un tema con el almacenamiento por niveles habilitado con los atributos del siguiente ejemplo de código. Los atributos específicos del almacenamiento por niveles son los siguientes:
+ `local.retention.ms` (por ejemplo, 10 minutos) para la configuración de retención en función del tiempo o `local.retention.bytes` para los límites de tamaño de los segmentos de registro.
+ `remote.storage.enable` se establece en `true` para habilitar el almacenamiento por niveles.

La siguiente configuración utiliza local.retention.ms, pero puede reemplazar este atributo por local.retention.bytes. Este atributo controla el tiempo que puede transcurrir o los bytes que Apache Kafka puede copiar antes de que Apache Kafka copie los datos del almacenamiento principal al almacenamiento por niveles. Consulte [Topic-level configuration](https://docs.aws.amazon.com//msk/latest/developerguide/msk-configuration-properties.html#msk-topic-confinguration) para más información sobre los atributos de configuración admitidos.

**nota**  
Debe utilizar la versión 3.0.0 del cliente de Apache Kafka y superior. Estas versiones admiten una configuración denominada `remote.storage.enable` solo en esas versiones de cliente de `kafka-topics.sh`. Para habilitar el almacenamiento por niveles en un tema existente que utiliza una versión anterior de Apache Kafka, consulte la sección [Habilitación del almacenamiento por niveles en un tema de Amazon MSK existente](msk-enable-disable-topic-tiered-storage-cli.md#msk-enable-topic-tiered-storage-cli).

```
bin/kafka-topics.sh --create --bootstrap-server $bs --replication-factor 2 --partitions 6 --topic MSKTutorialTopic --config remote.storage.enable=true --config local.retention.ms=100000 --config retention.ms=604800000 --config segment.bytes=134217728
```

# Habilitación y deshabilitación del almacenamiento por niveles en un tema de Amazon MSK existente
<a name="msk-enable-disable-topic-tiered-storage-cli"></a>

En estas secciones, se explica cómo habilitar y deshabilitar el almacenamiento por niveles en un tema que ya creó. Para crear un clúster y un tema nuevos con el almacenamiento por niveles habilitado, consulte [Creating a cluster with tiered storage using the Consola de administración de AWS](https://docs.aws.amazon.com//msk/latest/developerguide/msk-create-cluster-tiered-storage-console).

## Habilitación del almacenamiento por niveles en un tema de Amazon MSK existente
<a name="msk-enable-topic-tiered-storage-cli"></a>

Para habilitar el almacenamiento por niveles en un tema existente, utilice la sintaxis de comando `alter` del ejemplo siguiente. Al habilitar el almacenamiento por niveles en un tema ya existente, no tendrá que limitarse a una versión determinada del cliente de Apache Kafka.

```
bin/kafka-configs.sh --bootstrap-server $bsrv --alter --entity-type topics --entity-name msk-ts-topic --add-config 'remote.storage.enable=true, local.retention.ms=604800000, retention.ms=15550000000'
```

## Deshabilitación del almacenamiento por niveles en un tema de Amazon MSK existente
<a name="msk-disable-topic-tiered-storage-cli"></a>

Para deshabilitar el almacenamiento por niveles en un tema existente, utilice la sintaxis del comando `alter` en el mismo orden en que lo utilizó cuando habilitó el almacenamiento por niveles.

```
bin/kafka-configs.sh --bootstrap-server $bs --alter --entity-type topics --entity-name MSKTutorialTopic --add-config 'remote.log.msk.disable.policy=Delete, remote.storage.enable=false'
```

**nota**  
Al deshabilitar el almacenamiento por niveles, se eliminan por completo los datos del tema del almacenamiento por niveles. Apache Kafka retiene los datos del almacenamiento principal, pero sigue aplicando las reglas de retención principal en función de `local.retention.ms`. Una vez deshabilitado el almacenamiento por niveles en un tema, no se puede volver a habilitar. Si quiere deshabilitar el almacenamiento por niveles en un tema existente, no tendrá que limitarse a una versión determinada del cliente de Apache Kafka.

# Habilite el almacenamiento por niveles en un clúster de Amazon MSK existente mediante CLI AWS
<a name="msk-enable-cluster-tiered-storage-cli"></a>

**nota**  
Puede habilitar el almacenamiento por niveles solo si log.cleanup.policy del clúster está establecida en `delete`, ya que el almacenamiento por niveles no admite temas compactados. Más adelante, podrá configurar log.cleanup.policy de un tema individual en `compact` si el almacenamiento por niveles no está habilitado en ese tema concreto. Consulte [Topic-level configuration](https://docs.aws.amazon.com//msk/latest/developerguide/msk-configuration-properties.html#msk-topic-confinguration) para más información sobre los atributos de configuración admitidos.

1. **Actualice la versión de Kafka**: las versiones en clúster no son números enteros simples. Para buscar la versión actual del clúster, utilice la `DescribeCluster` operación o el comando `describe-cluster` AWS CLI. Un ejemplo de ID de versión es `KTVPDKIKX0DER`.

   ```
   aws kafka update-cluster-kafka-version --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-kafka-version 3.6.0
   ```

1. Edite el modo de almacenamiento del clúster. El siguiente ejemplo de código muestra cómo cambiar el modo de almacenamiento del clúster a `TIERED` mediante la API [https://docs.aws.amazon.com/cli/latest/reference/kafka/update-storage.html](https://docs.aws.amazon.com/cli/latest/reference/kafka/update-storage.html).

   ```
   aws kafka update-storage --current-version Current-Cluster-Version --cluster-arn Cluster-arn --storage-mode TIERED
   ```

# Actualización del almacenamiento por niveles en un clúster de Amazon MSK existente mediante la consola
<a name="msk-update-tiered-storage-console"></a>

Este proceso describe cómo actualizar un clúster de Amazon MSK de almacenamiento por niveles mediante la Consola de administración de AWS.

Asegúrese de que la versión actual de Apache Kafka del clúster de MSK sea 2.8.2.tiered. Consulte la página sobre la [actualización de la versión de Apache Kafka](https://docs.aws.amazon.com/msk/latest/developerguide/version-upgrades.html) si debe actualizar el clúster de MSK a la versión 2.8.2.tiered.

**nota**  
Puede habilitar el almacenamiento por niveles solo si log.cleanup.policy del clúster está establecida en `delete`, ya que el almacenamiento por niveles no admite temas compactados. Más adelante, podrá configurar log.cleanup.policy de un tema individual en `compact` si el almacenamiento por niveles no está habilitado en ese tema concreto. Consulte [Topic-level configuration](https://docs.aws.amazon.com//msk/latest/developerguide/msk-configuration-properties.html#msk-topic-confinguration) para más información sobre los atributos de configuración admitidos.

1. Abra la consola de Amazon MSK en [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/).

1. Vaya a la página de resumen del clúster y elija **Propiedades**.

1. Vaya a la sección **Almacenamiento** y elija **Editar modo de almacenamiento de clúster**.

1. Elija **Almacenamiento por niveles y almacenamiento de EBS** y, luego, **Guardar cambios**.

# Escalado vertical del almacenamiento de los agentes Standard de Amazon MSK
<a name="msk-update-storage"></a>

Puede ampliar la cantidad de almacenamiento de EBS por agente. No puede disminuir el almacenamiento. 

Los volúmenes de almacenamiento siguen estando disponibles durante esta operación de ampliación.

**importante**  
Cuando el almacenamiento se escala para un clúster de MSK, el almacenamiento adicional está disponible de inmediato. Sin embargo, el clúster requiere un periodo de recuperación después de cada evento de escalado del almacenamiento. Amazon MSK utiliza este periodo de recuperación para optimizar el clúster y poder escalarlo de nuevo. Este periodo puede oscilar entre un mínimo de 6 horas y más de 24 horas, en función del tamaño y la utilización del almacenamiento del clúster y en función del tráfico. Esto es aplicable tanto a los eventos de escalado automático como al escalado manual mediante la [UpdateBrokerStorage](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-nodes-storage.html#UpdateBrokerStorage)operación. Para obtener información sobre el tamaño correcto del almacenamiento, consulte [Prácticas recomendadas para agentes Standard](bestpractices.md). 

Puede utilizar el almacenamiento por niveles para escalar verticalmente a cantidades ilimitadas de almacenamiento para el agente. Consulte, [Almacenamiento por niveles para agentes Standard](msk-tiered-storage.md).

**Topics**
+ [Escalado automático para clústeres de Amazon MSK](msk-autoexpand.md)
+ [Escalado manual para agentes Standard](manually-expand-storage.md)

# Escalado automático para clústeres de Amazon MSK
<a name="msk-autoexpand"></a>

Para ampliar automáticamente el almacenamiento del clúster en respuesta al aumento del uso, puede configurar una política de escalado automático de aplicaciones para Amazon MSK. En una política de escalado automático, se establece la utilización del disco objetivo y la capacidad máxima de escalado.

Antes de utilizar el escalado automático para Amazon MSK, debe tener en cuenta lo siguiente:
+ 
**importante**  
Una acción de escalado del almacenamiento solo puede producirse una vez cada seis horas. 

  Le recomendamos que comience con un volumen de almacenamiento del tamaño adecuado para sus demandas de almacenamiento. Para obtener orientación sobre el tamaño correcto de su clúster, consulte [Dimensione correctamente el clúster: número de agentes Standard por clúster](bestpractices.md#brokers-per-cluster).
+ Amazon MSK no reduce el almacenamiento de clústeres en respuesta a la reducción del uso. Amazon MSK no admite reducir el tamaño de los volúmenes de almacenamiento. Si necesita reducir el tamaño del almacenamiento en clúster, debe migrar el clúster existente a un clúster con un almacenamiento más pequeño. Para obtener más información sobre cómo migrar un clúster, consulte [Migración a un clúster de MSK](migration.md).
+ Amazon MSK no admite el escalado automático en las regiones Asia-Pacífico (Osaka), África (Ciudad del Cabo) y Asia-Pacífico (Malasia).
+ Al asociar una política de autoescalado a su clúster, Amazon EC2 Auto Scaling crea automáticamente una CloudWatch alarma de Amazon para el seguimiento de los objetivos. Si eliminas un clúster con una política de autoescalado, esta CloudWatch alarma persiste. Para eliminar la CloudWatch alarma, debe eliminar una política de autoescalado de un clúster antes de eliminarlo. Para obtener más información acerca del seguimiento de objetivos, consulte [Target tracking scaling policies for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html) en la *Guía del usuario de Amazon EC2 Auto Scaling*.

**Topics**
+ [Detalles de la política de escalado automático de Amazon MSK](msk-autoexpand-details.md)
+ [Configuración del escalado automático para su clúster de Amazon MSK](msk-autoexpand-setup.md)

# Detalles de la política de escalado automático de Amazon MSK
<a name="msk-autoexpand-details"></a>

La política de escalado automático define la siguiente métrica predefinida para el clúster:
+ **Objetivo de utilización de almacenamiento**: el umbral de utilización de almacenamiento que Amazon MSK utiliza para activar una operación de escalado automático. Puede establecer el objetivo de utilización entre el 10 y el 80 % de la capacidad de almacenamiento actual. Le recomendamos que habilite el objetivo de utilización del almacenamiento entre el 50 % y el 60 %.
+ **Capacidad máxima de almacenamiento**: el límite máximo de escalado que Amazon MSK puede establecer para el almacenamiento de su agente. Puede configurar una capacidad máxima de almacenamiento de hasta 16 TiB por agente. Para obtener más información, consulte [Cuota de Amazon MSK](limits.md).

Cuando Amazon MSK detecta que la métrica `Maximum Disk Utilization` es igual o superior a la configuración `Storage Utilization Target`, aumenta la capacidad de almacenamiento en una cantidad igual al mayor de los dos números: 10 GiB o el 10 % del almacenamiento actual. Por ejemplo, si tiene 1000 GiB, esa cantidad es de 100 GiB. El servicio comprueba el uso del almacenamiento cada minuto. Las operaciones de escalado adicionales siguen aumentando el almacenamiento en una cantidad igual al mayor de los dos números: 10 GiB o el 10 % del almacenamiento actual.

Para determinar si se han realizado operaciones de autoescalado, utilice la [ ListClusterOperations](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-operations.html#ListClusterOperations)operación.

# Configuración del escalado automático para su clúster de Amazon MSK
<a name="msk-autoexpand-setup"></a>

Puede utilizar la consola de Amazon MSK, la API de Amazon MSK o CloudFormation implementar el escalado automático del almacenamiento. CloudFormation el soporte está disponible a través de. [Application Auto Scaling](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html)

**nota**  
No puede implementar el escalado automático cuando crea un clúster. Primero debe crear el clúster y, a continuación, crear y habilitar una política de escalado automático para él. Sin embargo, puede crear la política mientras el servicio Amazon MSK crea el clúster.

**Topics**
+ [Configure el escalado automático con Amazon MSK Consola de administración de AWS](msk-autoexpand-setup-console.md)
+ [Configuración del escalado automático mediante la CLI](msk-autoexpand-setup-cli.md)
+ [Configuración del escalado automático de Amazon MSK con la API](msk-autoexpand-setup-api.md)

# Configure el escalado automático con Amazon MSK Consola de administración de AWS
<a name="msk-autoexpand-setup-console"></a>

En este proceso, se describe cómo utilizar la consola de Amazon MSK para implementar el escalado automático para almacenamiento.

1. ¿Iniciar sesión en la Consola de administración de AWS consola Amazon MSK y abrirla desde [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. En la lista de clústeres, elija su clúster. Se le redigirá a una página en la que se enumeran los detalles del clúster.

1. En la sección **Escalado automático para el almacenamiento**, elija **Configurar**.

1. Cree una política de escalado automático y asígnele un nombre. Especifique el objetivo de utilización del almacenamiento, la capacidad máxima de almacenamiento y la métrica objetivo.

1. Elija `Save changes`.

Al guardar y habilitar la nueva política, la política se activa para el clúster. A continuación, Amazon MSK amplía el almacenamiento del clúster cuando se alcanza el objetivo de utilización del almacenamiento.

# Configuración del escalado automático mediante la CLI
<a name="msk-autoexpand-setup-cli"></a>

En este proceso, se describe cómo utilizar la CLI de Amazon MSK para implementar el escalado automático para almacenamiento.

1. Utilice el comando para registrar un objetivo de utilización del almacenamiento [ RegisterScalableTarget](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/#available-commands).

1. Utilice el [ PutScalingPolicy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/#available-commands)comando para crear una política de expansión automática.

# Configuración del escalado automático de Amazon MSK con la API
<a name="msk-autoexpand-setup-api"></a>

En este proceso, se describe cómo implementar el escalado automático del almacenamiento con la API de Amazon MSK.

1. Utilice la [ RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html)API para registrar un objetivo de utilización del almacenamiento.

1. Usa la [ PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)API para crear una política de expansión automática.

# Escalado manual para agentes Standard
<a name="manually-expand-storage"></a>

Para aumentar el almacenamiento, espere a que el clúster esté en el estado `ACTIVE`. El escalado del almacenamiento tiene un periodo de recuperación de al menos seis horas entre eventos. Aunque la operación permite disponer de almacenamiento adicional de forma inmediata, el servicio realiza optimizaciones en el clúster que pueden tardar hasta 24 horas o más. La duración de estas optimizaciones es proporcional al tamaño del almacenamiento.

## Ampliar el almacenamiento de información de los corredores mediante Consola de administración de AWS
<a name="update-storage-console"></a>

1. Abra la consola de Amazon MSK en [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/).

1. Elija el clúster de MSK para actualizar el almacenamiento del agente.

1. En la sección **Almacenamiento** elija **Editar**.

1. Especifique el volumen de almacenamiento que desee. Solo se puede aumentar la cantidad de almacenamiento, no se puede disminuir.

1. Seleccione **Save changes (Guardar cambios)**.

## Ampliar el almacenamiento de agentes mediante el AWS CLI
<a name="update-storage-cli"></a>

Ejecute el siguiente comando, reemplazando *ClusterArn*por el nombre de recurso de Amazon (ARN) que obtuvo al crear el clúster. Si no tiene el ARN para su clúster, puede encontrarlo enumerando todos los clústeres. Para obtener más información, consulte [Enumeración de clústeres de Amazon MSK](msk-list-clusters.md). 

Reemplace *Current-Cluster-Version* con la versión actual del clúster. 

**importante**  
Las versiones de clúster no son enteros simples. Para encontrar la versión actual del clúster, utilice la [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)operación o el comando [AWS CLI describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html). Un ejemplo de ID de versión es `KTVPDKIKX0DER`.

El *Target-Volume-in-GiB* parámetro representa la cantidad de almacenamiento que desea que tenga cada agente. Sólo es posible actualizar el almacenamiento para todos los agentes. No puede especificar agentes individuales para los que actualizar el almacenamiento. El valor que especifique *Target-Volume-in-GiB* debe ser un número entero superior a 100 GiB. El almacenamiento por agente después de la operación de actualización no puede exceder los 16384 GiB.

```
aws kafka update-broker-storage --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-broker-ebs-volume-info '{"KafkaBrokerNodeId": "All", "VolumeSizeGB": Target-Volume-in-GiB}' 
```

## Escalar verticalmente el almacenamiento del agente mediante la API
<a name="update-storage-api"></a>

Para actualizar el almacenamiento de un broker mediante la API, consulte [UpdateBrokerStorage](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-nodes-storage.html#UpdateBrokerStorage).

# Administración del rendimiento del almacenamiento para agentes Standard en un clúster de Amazon MSK
<a name="msk-provision-throughput-management"></a>

Para obtener información sobre cómo aprovisionar el rendimiento mediante la consola de Amazon MSK, la CLI y la API, consulte [Aprovisionamiento del rendimiento de almacenamiento para agentes Standard en un clúster de Amazon MSK](msk-provision-throughput.md).

**Topics**
+ [Cuellos de botella en el rendimiento del agente de Amazon MSK y configuración de rendimiento máximo](#throughput-bottlenecks)
+ [Medición del rendimiento del almacenamiento de un clúster de Amazon MSK](#throughput-metrics)
+ [Valores de actualización de configuración para el almacenamiento aprovisionado en un clúster de Amazon MSK](#provisioned-throughput-config)
+ [Aprovisionamiento del rendimiento de almacenamiento para agentes Standard en un clúster de Amazon MSK](msk-provision-throughput.md)

## Cuellos de botella en el rendimiento del agente de Amazon MSK y configuración de rendimiento máximo
<a name="throughput-bottlenecks"></a>

Hay varias causas de los atascos en el rendimiento de los agentes: el rendimiento del volumen, el rendimiento de la red de Amazon EC2 a Amazon EBS y el rendimiento de salida de Amazon EC2. Puede habilitar el rendimiento del almacenamiento aprovisionado para ajustar el rendimiento del volumen. Sin embargo, las limitaciones de rendimiento de los agentes pueden deberse al rendimiento de la red de Amazon EC2 a Amazon EBS y al rendimiento de salida de Amazon EC2. 

El rendimiento de salida de Amazon EC2 se ve afectado por la cantidad de grupos de consumidores y de consumidores por grupos de consumidores. Además, tanto el rendimiento de la red de Amazon EC2 a Amazon EBS como el rendimiento de salida de Amazon EC2 son más altos para los tamaños del agente más grandes.

Para volúmenes de 10 GiB o más, puede aprovisionar un rendimiento de almacenamiento de 250 MiB por segundo o más. 250 MiB por segundo es el valor predeterminado. Para aprovisionar el rendimiento del almacenamiento, debe elegir el tamaño del agente kafka.m5.4xlarge o superior (o kafka.m7g.2xlarge o superior) y puede especificar el rendimiento máximo, como se muestra en la siguiente tabla.


****  

| tamaño del agente | Rendimiento máximo de almacenamiento (MiB/segundo) | 
| --- | --- | 
| kafka.m5.4xlarge | 593 | 
| kafka.m5.8xlarge | 850 | 
| kafka.m5.12xlarge | 1 000 | 
| kafka.m5.16xlarge | 1 000 | 
| kafka.m5.24xlarge | 1 000 | 
| kafka.m7g.2xlarge | 312,5 | 
| kafka.m7g.4xlarge | 625 | 
| kafka.m7g.8xlarge | 1 000 | 
| kafka.m7g.12xlarge | 1 000 | 
| kafka.m7g.16xlarge | 1 000 | 

## Medición del rendimiento del almacenamiento de un clúster de Amazon MSK
<a name="throughput-metrics"></a>

Puede utilizar las métricas `VolumeReadBytes` y `VolumeWriteBytes` para medir el rendimiento medio de almacenamiento de un clúster. La suma de estas dos métricas proporciona el rendimiento de almacenamiento medio en bytes. Para obtener el rendimiento de almacenamiento medio de un clúster, establezca estas dos métricas en SUM y el periodo en 1 minuto y, luego, utilice la siguiente fórmula.

```
Average storage throughput in MiB/s = (Sum(VolumeReadBytes) + Sum(VolumeWriteBytes)) / (60 * 1024 * 1024)
```

Para obtener información sobre las métricas `VolumeReadBytes` y `VolumeWriteBytes`, consulte [Supervisión de `PER_BROKER`](metrics-details.md#broker-metrics).

## Valores de actualización de configuración para el almacenamiento aprovisionado en un clúster de Amazon MSK
<a name="provisioned-throughput-config"></a>

Puede actualizar la configuración de Amazon MSK antes o después de activar el rendimiento aprovisionado. Sin embargo, no verá el rendimiento deseado hasta que realice ambas acciones: actualice el parámetro de configuración `num.replica.fetchers` y active el rendimiento aprovisionado.

En la configuración predeterminada de Amazon MSK, `num.replica.fetchers` tiene un valor de 2. Para actualizar `num.replica.fetchers`, puede utilizar los valores sugeridos de la siguiente tabla. Estos valores son orientativos. Le recomendamos que ajuste estos valores en función del caso de uso.


****  

| tamaño del agente | num.replica.fetchers | 
| --- | --- | 
| kafka.m5.4xlarge | 4 | 
| kafka.m5.8xlarge | 8 | 
| kafka.m5.12xlarge | 14 | 
| kafka.m5.16xlarge | 16 | 
| kafka.m5.24xlarge | 16 | 

Es posible que la configuración actualizada no surta efecto hasta dentro de 24 horas y que tarde más si el volumen de origen no se utiliza por completo. Sin embargo, el rendimiento del volumen transitorio es como mínimo igual al rendimiento de los volúmenes de almacenamiento de origen durante el periodo de migración. Un volumen de 1 TiB totalmente utilizado tarda normalmente unas seis horas en migrar a una configuración actualizada.

# Aprovisionamiento del rendimiento de almacenamiento para agentes Standard en un clúster de Amazon MSK
<a name="msk-provision-throughput"></a>

Los agentes de Amazon MSK mantienen los datos de los volúmenes de almacenamiento. I/O El almacenamiento se consume cuando los productores escriben en el clúster, cuando los datos se replican entre intermediarios y cuando los consumidores leen datos que no están en la memoria. El rendimiento del almacenamiento de volúmenes es la velocidad a la que se pueden escribir datos en un volumen de almacenamiento, y leerse desde este. El rendimiento del almacenamiento aprovisionado es la capacidad de especificar esa velocidad para los agentes del clúster.

Puede especificar la velocidad de rendimiento aprovisionado en MiB por segundo para los clústeres cuyos agentes sean de tamaño `kafka.m5.4xlarge` o más grandes y si el volumen de almacenamiento es de 10 GiB o superior. Es posible especificar el rendimiento aprovisionado durante la creación del clúster. También puede habilitar o deshabilitar el rendimiento aprovisionado para un clúster que tenga el estado `ACTIVE`.

Para obtener información sobre la administración del rendimiento, consulte [Administración del rendimiento del almacenamiento para agentes Standard en un clúster de Amazon MSK](msk-provision-throughput-management.md).

**Topics**
+ [Aprovisione el rendimiento del almacenamiento en clústeres de Amazon MSK mediante Consola de administración de AWS](#provisioned-throughput-console)
+ [Aprovisione el rendimiento del almacenamiento en clústeres de Amazon MSK mediante AWS CLI](#provisioned-throughput-cli)
+ [Aprovisionamiento de rendimiento de almacenamiento al crear un clúster de Amazon MSK mediante la API](#provisioned-throughput-api)

## Aprovisione el rendimiento del almacenamiento en clústeres de Amazon MSK mediante Consola de administración de AWS
<a name="provisioned-throughput-console"></a>

Este proceso muestra un ejemplo de cómo puede usarlo Consola de administración de AWS para crear un clúster de Amazon MSK con el rendimiento aprovisionado habilitado.

1. ¿Iniciar sesión en la Consola de administración de AWS consola Amazon MSK y abrirla desde [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. Elija **Create cluster**.

1. Seleccione **Creación personalizada**.

1. Especifique un nombre para el clúster.

1. En la sección **Almacenamiento** elija **Habilitar**.

1. Elija un valor en Rendimiento de almacenamiento por agente.

1. Elija una VPC, zonas y subredes y un grupo de seguridad.

1. Elija **Siguiente**.

1. Al final del paso **Seguridad**, elija **Siguiente**.

1. En final del paso **Supervisión y etiquetas**, elija **Siguiente**.

1. Revise la configuración del clúster y seleccione **Crear**.

## Aprovisione el rendimiento del almacenamiento en clústeres de Amazon MSK mediante AWS CLI
<a name="provisioned-throughput-cli"></a>

Este proceso muestra un ejemplo de cómo se puede utilizar AWS CLI para crear un clúster con el rendimiento aprovisionado activado.

1. Copie el siguiente JSON y péguelo en un archivo. Sustituya los marcadores de posición de los identificadores de subred IDs y grupo de seguridad por los valores de su cuenta. Asigne el nombre `cluster-creation.json` al archivo y guárdelo.

   ```
   {
       "Provisioned": {
           "BrokerNodeGroupInfo":{
               "InstanceType":"kafka.m5.4xlarge",
               "ClientSubnets":[
                   "Subnet-1-ID",
                   "Subnet-2-ID"
               ],
               "SecurityGroups":[
                   "Security-Group-ID"
               ],
               "StorageInfo": {
                   "EbsStorageInfo": {
                       "VolumeSize": 10,
                       "ProvisionedThroughput": {
                           "Enabled": true,
                           "VolumeThroughput": 250
                       }
                   }
               }
           },
           "EncryptionInfo": {
               "EncryptionInTransit": {
                   "InCluster": false,
                   "ClientBroker": "PLAINTEXT"
               }
           },
           "KafkaVersion":"2.8.1",
           "NumberOfBrokerNodes": 2
       },
       "ClusterName": "provisioned-throughput-example"
   }
   ```

1. Ejecute el siguiente AWS CLI comando desde el directorio en el que guardó el archivo JSON en el paso anterior.

   ```
   aws kafka create-cluster-v2 --cli-input-json file://cluster-creation.json
   ```

## Aprovisionamiento de rendimiento de almacenamiento al crear un clúster de Amazon MSK mediante la API
<a name="provisioned-throughput-api"></a>

[Para configurar el rendimiento del almacenamiento aprovisionado al crear un clúster, usa CreateCluster la V2.](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters.html#CreateClusterV2)

# Configuración de Amazon MSK aprovisionado
<a name="msk-configuration"></a>

Amazon MSK proporciona configuraciones predeterminadas para los agentes, los temas y los nodos de metadatos. También puede crear configuraciones personalizadas y utilizarlas para crear nuevos clústeres de MSK o para actualizar clústeres existentes. Una configuración de MSK está compuesta por un conjunto de propiedades y sus valores correspondientes. Según el tipo de agente que utilice en el clúster, existe un conjunto distinto de configuraciones predeterminadas y un conjunto diferente de configuraciones que puede modificar. Consulte las secciones siguientes para obtener más detalles sobre cómo configurar agentes Standard y Express.

**Topics**
+ [Configuraciones de agentes Standard](msk-configuration-standard.md)
+ [Configuraciones de agentes Express](msk-configuration-express.md)
+ [Operaciones de configuración de agentes](msk-configuration-operations.md)

# Configuraciones de agentes Standard
<a name="msk-configuration-standard"></a>

Esta sección describe las propiedades de configuración de los agentes Standard.

**Topics**
+ [Configuraciones personalizadas de Amazon MSK](msk-configuration-properties.md)
+ [Configuración predeterminada de Amazon MSK](msk-default-configuration.md)
+ [Directrices para la configuración a nivel de tema del almacenamiento en niveles de Amazon MSK](msk-guidelines-tiered-storage-topic-level-config.md)

# Configuraciones personalizadas de Amazon MSK
<a name="msk-configuration-properties"></a>

Puede usar Amazon MSK para crear una configuración personalizada de MSK en la que establezca las siguientes propiedades de configuración de Apache Kafka. Las propiedades que no se establecen de forma explícita obtienen los valores que tienen en [Configuración predeterminada de Amazon MSK](msk-default-configuration.md). Para obtener más información acerca de las propiedades de configuración, consulte [Configuración de Apache Kafka](https://kafka.apache.org/documentation/#configuration).


| Name | Description (Descripción) | 
| --- | --- | 
| allow.everyone.if.no.acl.found | Si desea establecer esta propiedad enfalse, primero asegúrese de definir Apache Kafka ACLs para su clúster. Si establece esta propiedad en Apache Kafka false y no lo define primero ACLs, perderá el acceso al clúster. Si eso ocurre, puede volver a actualizar la configuración y establecer esta propiedad en true para recuperar el acceso al clúster. | 
| auto.create.topics.enable | Habilita la creación automática de temas en el servidor. | 
| compression.type | El tipo de compresión final para un tema determinado. Puede establecer esta propiedad en los códecs de compresión estándar (gzip, snappy, lz4 y zstd). Además, acepta uncompressed. Este valor equivale a la ausencia de compresión. Si establece el valor en producer, se retendrá el códec de compresión original que configuró el productor. | 
|  connections.max.idle.ms  | Tiempo de espera de las conexiones inactivas en milisegundos. Los subprocesos del procesador del socket del servidor cierran las conexiones que están inactivas durante un tiempo superior al valor establecido para esta propiedad. | 
| default.replication.factor | El factor de replicación predeterminado de los temas que se han creado automáticamente. | 
| delete.topic.enable | Habilita la operación para eliminar un tema. Si desactiva esta configuración, no podrá eliminar un tema usando la herramienta de administración. | 
| group.initial.rebalance.delay.ms | Cantidad de tiempo que el coordinador del grupo espera para que otros consumidores de datos se unan a un nuevo grupo antes de que el coordinador del grupo lleve a cabo el primer reequilibrio. Un retraso superior implica posiblemente menos reequilibrios, pero aumenta el tiempo hasta que el procesamiento comience. | 
| group.max.session.timeout.ms | Tiempo de espera máximo de la sesión para los consumidores registrados. Unos tiempos de espera superiores proporcionan a los consumidores más tiempo para procesar los mensajes entre latidos, pero se requiere más tiempo para detectar errores. | 
| group.min.session.timeout.ms | Tiempo de espera mínimo de la sesión para los consumidores registrados. Unos tiempos de espera inferiores se traducen en una detección de errores más rápida, pero se requieren latidos de consumidores más frecuentes. Esto puede agotar los recursos del agente. | 
| leader.imbalance.per.broker.percentage | La proporción de desequilibrio del líder permitida por agente. El controlador desencadena un equilibrio del líder si supera este valor por agente. Este valor se especifica en porcentaje. | 
| log.cleaner.delete.retention.ms | Cantidad de tiempo que desea que Apache Kafka conserve los registros eliminados. El valor mínimo es 0. | 
| log.cleaner.min.cleanable.ratio |  Esta propiedad de configuración puede tener valores entre 0 y 1. Este valor determina la frecuencia con la que el compactador de registros intenta limpiar el registro (si la compactación de registros está habilitada). De forma predeterminada, Apache Kafka evita limpiar un registro si se ha compactado más del 50 % de este. Esta proporción limita el espacio máximo que el registro desperdicia con duplicados (al 50 %, esto significa que como máximo el 50 % del registro podría estar duplicado). Una proporción mayor se traduce en limpiezas más eficaces y menos frecuentes, pero también implica un gasto de espacio superior en el registro.  | 
| log.cleanup.policy | La política de limpieza predeterminada de los segmentos que superan el periodo de retención. Una lista de políticas válidas separadas por comas. Las políticas válidas son delete y compact. En el caso de los clústeres habilitados para el almacenamiento por niveles, la única política válida es delete. | 
| log.flush.interval.messages | Número de mensajes acumulados en una partición de registro antes de que se vacíen en el disco. | 
| log.flush.interval.ms | Tiempo máximo en milisegundos que un mensaje de cualquier tema se conserva en la memoria antes de vaciarlo en el disco. Si no establece este valor, se utiliza el valor de log.flush.scheduler.interval.ms. El valor mínimo es 0. | 
| log.message.timestamp.difference.max.ms | Esta configuración quedó obsoleta en Kafka 3.6.0. Se agregaron dos configuraciones, log.message.timestamp.before.max.ms y log.message.timestamp.after.max.ms. La diferencia temporal máxima entre la marca temporal que se produce cuando un agente recibe un mensaje y la marca temporal que se especifica en el mensaje. Si es log.message.timestamp.type=CreateTime, se rechazará un mensaje si la diferencia en la marca de tiempo supera este umbral. Esta configuración se ignora si es LogAppendTime log.message.timestamp.type=. | 
| log.message.timestamp.type | Especifica si la marca temporal del mensaje es la hora de creación del mensaje o la hora de adición del registro. Los valores permitidos son CreateTime y LogAppendTime. | 
| log.retention.bytes | Tamaño máximo del registro antes de eliminarlo. | 
| log.retention.hours | Número de horas que se conserva un archivo de registro antes de eliminarlo, cantidad terciaria de la propiedad log.retention.ms. | 
| log.retention.minutes | Número de minutos que se conserva un archivo de registro antes de eliminarlo, cantidad secundaria de la propiedad log.retention.ms. Si no establece este valor, se utiliza el valor de log.retention.hours. | 
| log.retention.ms | Número de milisegundos que se conserva un archivo de registro antes de eliminarlo (en milisegundos). Si no se establece, se utiliza el valor de log.retention.minutes. | 
| log.roll.ms | Tiempo máximo antes de que un segmento de registro nuevo se implemente (en milisegundos). Si no establece esta propiedad, se utiliza el valor de log.roll.hours. El valor mínimo posible de esta propiedad es 1. | 
| log.segment.bytes | Tamaño máximo de un único archivo de registro. | 
| max.incremental.fetch.session.cache.slots | Número máximo de sesiones de recuperación incrementales que se conservan. | 
| message.max.bytes |  Tamaño de lote de registros más grande que admite Kafka. Si aumenta este valor y hay consumidores anteriores a 0.10.2, también debe aumentar el tamaño de recuperación de los consumidores para que se puedan recuperar lotes de registros de este tamaño. La versión de formato de mensaje más reciente siempre agrupa los mensajes en lotes para aumentar la eficacia. Las versiones de formato de mensaje anteriores no agrupan los registros sin comprimir en lotes y, en este caso, este límite se aplica únicamente a un solo registro. Puede establecer este valor por tema con la configuración de temas max.message.bytes.  | 
| min.insync.replicas |  Cuando un productor establece las confirmaciones en `"all"` (o `"-1"`), el valor de min.insync.replicas especifica el número mínimo de réplicas que debe confirmar una escritura para que se considere como correcta. Si no se puede alcanzar este mínimo, el productor hace una excepción (o bien). NotEnoughReplicas NotEnoughReplicasAfterAppend Puede utilizar valores de min.insync.replicas y confirmaciones para reforzar las garantías de durabilidad. Por ejemplo, puede crear un tema con un factor de replicación de 3, establecer min.insync.replicas en 2 y producirlo con las confirmaciones de `"all"`. Esto garantiza que el productor emita una excepción si la mayoría de las réplicas no reciben una escritura.  | 
| num.io.threads | El número de subprocesos que utiliza el servidor para procesar las solicitudes, puede incluir la E/S del disco. | 
| num.network.threads | El número de subprocesos que utiliza el servidor para recibir solicitudes desde la red y enviarle las respuestas a dichas solicitudes. | 
| num.partitions | Número predeterminado de particiones de registro por tema. | 
| num.recovery.threads.per.data.dir | El número de subprocesos por directorio de datos que se va a utilizar para la recuperación de registros en el arranque y para el vaciado en el apagado. | 
| num.replica.fetchers | El número de subprocesos del recuperador que se utilizan para replicar los mensajes desde un agente de origen. Si aumentas este valor, puedes aumentar el grado de I/O paralelismo en el bróker seguidor. | 
| offsets.retention.minutes | Después de que un grupo de consumidores pierda todos sus consumidores (es decir, se quede vacío), sus compensaciones se conservan durante este periodo de retención antes de que se descarten. Para los consumidores independientes (es decir, los que utilizan asignación manual), las compensaciones vencen después de la hora de la última confirmación más este periodo de retención. | 
| offsets.topic.replication.factor | El factor de replicación del tema de compensación. Establezca este valor en un valor más alto para garantizar la disponibilidad. Se produce un error en la creación del tema interno hasta que el tamaño del clúster cumpla este requisito de factor de replicación. | 
| replica.fetch.max.bytes | Número de bytes de los mensajes para intentar recuperar cada partición. Esto no es un valor máximo absoluto. Si el primer lote de registros de la primera partición que no está vacía de la recuperación es superior a este valor, el lote de registros se devuelve para asegurar el progreso. Las propiedades message.max.bytes (configuración del agente) o max.message.bytes (configuración del tema) definen el tamaño de lote de registro máximo que acepta el agente. | 
| replica.fetch.response.max.bytes | El número máximo de bytes previsto para la respuesta de recuperación completa. Los registros se recuperan en lotes y, si el primer lote de registro de la primera partición que no está vacía de la recuperación es superior a este valor, el lote de registro se devolverá para asegurar que se lleva a cabo el progreso. Esto no es un valor máximo absoluto. Las propiedades message.max.bytes (configuración del agente) o max.message.bytes (configuración del tema) especifican el tamaño de lote de registro máximo que acepta el agente. | 
| replica.lag.time.max.ms | Si un seguidor no ha enviado ninguna solicitud de recuperación o no ha consumido hasta la compensación final del registro del líder durante al menos este número de milisegundos, el líder elimina el seguidor del ISR.MinValue: 10000MaxValue = 30000 | 
| replica.selector.class | El nombre de clase totalmente cualificado que se implementa. ReplicaSelector El agente utiliza este valor para encontrar la réplica de lectura preferida. Si utiliza la versión 2.4.1 o superior de Apache Kafka y desea permitir que los consumidores puedan recuperar desde la réplica más cercana, establezca esta propiedad en org.apache.kafka.common.replica.RackAwareReplicaSelector. Para obtener más información, consulte [Versión 2.4.1 de Apache Kafka (utilice 2.4.1.1 en su lugar)](supported-kafka-versions.md#2.4.1). | 
| replica.socket.receive.buffer.bytes | El búfer de recepción de sockets para las solicitudes de red. | 
| socket.receive.buffer.bytes | Búfer SO\$1RCVBUF de los sockets del servidor de sockets. El valor mínimo que puede establecer para esta propiedad es -1. Si el valor es -1, Amazon MSK usa el sistema operativo predeterminado. | 
| socket.request.max.bytes | El número máximo de bytes de una solicitud de conector. | 
| socket.send.buffer.bytes | Búfer SO\$1SNDBUF de los sockets del servidor de sockets. El valor mínimo que puede establecer para esta propiedad es -1. Si el valor es -1, Amazon MSK usa el sistema operativo predeterminado. | 
| transaction.max.timeout.ms | Tiempo de espera máximo para las transacciones. Si el tiempo de transacción solicitado por un cliente supera este valor, el bróker devuelve un error. InitProducerIdRequest Esto evita que un cliente experimente un tiempo de espera demasiado grande, lo que puede detener la lectura de los temas que se incluyen en la transacción por parte de los consumidores. | 
| transaction.state.log.min.isr | Se ha anulado la configuración min.insync.replicas para el tema de la transacción. | 
| transaction.state.log.replication.factor | El factor de replicación del tema de transacción. Establezca esta propiedad en un valor más elevado para aumentar la disponibilidad. Se produce un error en la creación del tema interno hasta que el tamaño del clúster cumpla este requisito de factor de replicación. | 
| transactional.id.expiration.ms | El tiempo en milisegundos que el coordinador de transacciones espera para recibir cualquier actualización del estado de la transacción actual antes de que venza el ID de la transacción del coordinador. Esta configuración también influye en la caducidad del ID de productor, ya que hace que el productor IDs caduque cuando este tiempo transcurre después de la última escritura con el ID de productor indicado. IDs Es posible que el productor caduque antes si se elimina la última escritura del ID de productor debido a la configuración de retención del tema. El valor mínimo de esta propiedad es de 1 milisegundo. | 
| unclean.leader.election.enable | Indica si las réplicas que no están incluidas en el conjunto de ISR deben servir de líder como último recurso, aunque esto pueda provocar la pérdida de datos. | 
| zookeeper.connection.timeout.ms | ZooKeeper clústeres de modos. Tiempo máximo que el cliente espera para establecer una conexión. ZooKeeper Si no establece este valor, se utiliza el valor de zookeeper.session.timeout.ms. MinValue = 6000 MaxValue (incluido) = 18000 Recomendamos establecer este valor en 10 000 en instancias t3.small para evitar tiempo de inactividad del clúster.  | 
| zookeeper.session.timeout.ms |  ZooKeeper clústeres de modos. El tiempo de espera ZooKeeper de la sesión de Apache en milisegundos. MinValue = 6000 MaxValue (incluido) = 18000  | 

Para obtener información acerca de cómo puede crear una configuración de MSK personalizada, enumerar todas las configuraciones o describirlas, consulte [Operaciones de configuración de agentes](msk-configuration-operations.md). Para crear un clúster de MSK con una configuración personalizada de MSK o para actualizar un clúster con una nueva configuración personalizada, consulte [Características y conceptos clave de Amazon MSK](operations.md).

Cuando actualiza su clúster de MSK existente con una configuración personalizada de MSK, Amazon MSK se restablece cuando es necesario y utiliza las prácticas recomendadas para reducir el tiempo de inactividad del cliente. Por ejemplo, después de que Amazon MSK restablezca cada agente, el servicio intenta dejar que el agente se ponga al día con los datos que ha podido perder durante la actualización de la configuración antes de pasar al siguiente agente.

## Configuración dinámica de Amazon MSK
<a name="msk-dynamic-confinguration"></a>

Además de las propiedades de configuración que ofrece Amazon MSK, también puede establecer propiedades de configuración del agente y del clúster de forma dinámica que no requieran un restablecimiento del agente. Puede establecer de forma dinámica algunas propiedades de configuración. Estas son las propiedades que no están marcadas como de solo lectura en la tabla en [Broker Configs](https://kafka.apache.org/documentation/#brokerconfigs) en la documentación de Apache Kafka. Para obtener más información acerca de configuraciones dinámicas y ejemplos de comandos, consulte [Updating Broker Configs](https://kafka.apache.org/documentation/#dynamicbrokerconfigs) en la documentación de Apache Kafka.

**nota**  
Puede establecer la propiedad `advertised.listeners`, pero no la propiedad `listeners`.

## Configuración a nivel de tema de Amazon MSK
<a name="msk-topic-confinguration"></a>

Puede utilizar los comandos de Apache Kafka para establecer o modificar propiedades de configuración de nivel de tema para temas nuevos y existentes. Para obtener más información acerca de las propiedades de configuración de temas y ejemplos de cómo establecerlas, consulte [Topic-Level Configs](https://kafka.apache.org/documentation/#topicconfigs) en la documentación de Apache Kafka.

# Configuración predeterminada de Amazon MSK
<a name="msk-default-configuration"></a>

Al crear un clúster de MSK sin especificar una configuración de MSK personalizada, Amazon MSK crea y utiliza una configuración predeterminada con los valores que se muestran en la tabla siguiente. Con respecto a las propiedades que no están en esta tabla, Amazon MSK utiliza los valores predeterminados asociados a su versión de Apache Kafka. Para obtener una lista de estos valores predeterminados, consulte [Configuración de Apache Kafka](https://kafka.apache.org/documentation/#configuration). 


| Name | Description (Descripción) | Valor predeterminado para el clúster de almacenamiento sin niveles | Valor predeterminado para el clúster habilitado para el almacenamiento por niveles | 
| --- | --- | --- | --- | 
| allow.everyone.if.no.acl.found | Si ningún patrón de recursos coincide con un recurso específico, el recurso no tiene ninguna asociación. ACLs En este caso, si establece esta propiedad como true, todos los usuarios pueden acceder al recurso, no solo los superusuarios. | true | true | 
| auto.create.topics.enable | Habilita la creación automática de un tema en el servidor. | false | false | 
| auto.leader.rebalance.enable | Habilita el equilibrio automático del líder. Un subproceso de fondo comprueba e inicia el equilibrio del líder a intervalos regulares, si es necesario. | true | true | 
| default.replication.factor | Factores de replicación predeterminados de los temas que se han creado automáticamente. | 3 para clústeres en 3 zonas de disponibilidad y 2 para clústeres en 2 zonas de disponibilidad. | 3 para clústeres en 3 zonas de disponibilidad y 2 para clústeres en 2 zonas de disponibilidad. | 
|  local.retention.bytes  |  El tamaño máximo de los segmentos de registro locales de una partición antes de que elimine los segmentos antiguos. Si no establece este valor, se utiliza el valor de log.retention.bytes. El valor efectivo debe ser siempre menor o igual que el valor de log.retention.bytes. Un valor predeterminado de -2 indica que no hay límite de retención local. Esto corresponde a la configuración retention.ms/bytes de -1. Las propiedades local.retention.ms y local.retention.bytes son similares a las de log.retention, ya que se utilizan para determinar cuánto tiempo deben permanecer los segmentos de registro en el almacenamiento local. Las configuraciones de log.retention.\$1 existentes son configuraciones de retención para la partición de temas. Esto incluye el almacenamiento local y remoto. Valores válidos: números enteros en [-2; \$1Inf]  | -2 para un número ilimitado | -2 para un número ilimitado | 
|  local.retention.ms  | El número de milisegundos para retener el segmento de registro locale antes de la eliminación. Si no establece este valor, Amazon MSK utilizará el valor de log.retention.ms. El valor efectivo debe ser siempre menor o igual que el valor de log.retention.bytes. Un valor predeterminado de -2 indica que no hay límite de retención local. Esto corresponde a la configuración retention.ms/bytes de -1.Los valores de local.retention.ms y local.retention.bytes son similares a los de log.retention. MSK usa esta configuración para determinar cuánto tiempo deben permanecer los segmentos de registro en el almacenamiento local. Las configuraciones de log.retention.\$1 existentes son configuraciones de retención para la partición de temas. Esto incluye el almacenamiento local y remoto. Los valores válidos son números enteros mayores que 0. | -2 para un número ilimitado | -2 para un número ilimitado | 
|  log.message.timestamp.difference.max.ms  | Esta configuración quedó obsoleta en Kafka 3.6.0. Se agregaron dos configuraciones, log.message.timestamp.before.max.ms y log.message.timestamp.after.max.ms. Diferencia máxima permitida entre la marca temporal que se produce cuando un agente recibe un mensaje y la marca temporal que se especifica en el mensaje. Si es log.message.timestamp.type=CreateTime, se rechazará un mensaje si la diferencia en la marca temporal supera este umbral. Esta configuración se ignora si es log.message.timestamp.type=. LogAppendTime La diferencia de marca temporal máxima permitida no debe ser superior a la de log.retention.ms para evitar la acumulación innecesariamente frecuente de registros. | 9223372036854775807 | 86400000 para Kafka 2.8.2 con funcionalidad por niveles y Kafka 3.7.x con funcionalidad por niveles. | 
| log.segment.bytes | El tamaño máximo de un único archivo de registro. | 1073741824 | 134217728 | 
| min.insync.replicas |  Cuando un productor establece el valor de las confirmaciones (la confirmación que el productor recibe del agente de Kafka) en `"all"` (o `"-1"`), el valor de min.insync.replicas especifica el número mínimo de réplicas que debe confirmar una escritura para que se considere como correcta. Si este valor no cumple con este mínimo, el productor hace una excepción (una de las dos NotEnoughReplicas opciones). NotEnoughReplicasAfterAppend Cuando utiliza de forma conjunta los valores de min.insync.replicas y las confirmaciones, puede aplicar unas garantías de durabilidad mayores. Por ejemplo, puede crear un tema con un factor de replicación de 3, establecer min.insync.replicas en 2 y producirlo con las confirmaciones de `"all"`. Esto garantiza que el productor emita una excepción si la mayoría de las réplicas no reciben una escritura.  | 2 para clústeres en 3 zonas de disponibilidad y 1 para clústeres en 2 zonas de disponibilidad. | 2 para clústeres en 3 zonas de disponibilidad y 1 para clústeres en 2 zonas de disponibilidad. | 
| num.io.threads | Número de subprocesos que utiliza el servidor para producir las solicitudes, puede incluir la E/S del disco. | 8 | max (8, vCPUs), donde v CPUs depende del tamaño de la instancia del bróker | 
| num.network.threads | El número de subprocesos que utiliza el servidor para recibir solicitudes desde la red y enviarle las respuestas. | 5 | max (5, vCPUs /2) donde v CPUs depende del tamaño de la instancia del bróker | 
| num.partitions | Número predeterminado de particiones de registro por tema. | 1 | 1 | 
| num.replica.fetchers | Número de subprocesos de búsqueda utilizados para replicar los mensajes de un agente fuente. Si aumentas este valor, puedes aumentar el grado de I/O paralelismo en el agente seguidor. | 2 | max (2, vCPUs /4) donde v CPUs depende del tamaño de la instancia del broker | 
|  remote.log.msk.disable.policy  |  Se usa con remote.storage.enable para deshabilitar el almacenamiento por niveles. Establezca esta política en Eliminar para indicar que los datos del almacenamiento por niveles se eliminarán al establecer remote.storage.enable en false.  | N/A | Ninguno | 
| remote.log.reader.threads | Tamaño del grupo de subprocesos del lector de registros remoto, que se utiliza para programar tareas a fin de recuperar datos del almacenamiento remoto. | N/A | max (10, v CPUs \$1 0.67) donde v CPUs depende del tamaño de la instancia del broker | 
|  remote.storage.enable  | Habilita el almacenamiento por niveles (remoto) para un tema si se establece en true. Deshabilita el almacenamiento por niveles del tema si se establece en false y remote.log.msk.disable.policy se establece en Eliminar. Al deshabilitar el almacenamiento por niveles, se eliminan los datos del almacenamiento remoto. Cuando deshabilita el almacenamiento por niveles para un tema, no podrá volver a habilitarlo. | false | false | 
| replica.lag.time.max.ms | Si un seguidor no ha enviado ninguna solicitud de recuperación o no ha consumido hasta la compensación final del registro del líder durante al menos este número de milisegundos, el líder elimina el seguidor del ISR. | 30000 | 30000 | 
|  retention.ms  |  Campo obligatorio. El tiempo mínimo es de 3 días. No hay ningún valor predeterminado porque la configuración es obligatoria. Amazon MSK usa el valor de retention.ms con local.retention.ms para determinar cuándo se transfieren los datos del almacenamiento local al almacenamiento por niveles. El valor de local.retention.ms especifica cuándo se transferir los datos del almacenamiento local al almacenamiento por niveles. El valor de retention.ms especifica cuándo se deben eliminar los datos del almacenamiento en niveles (es decir, eliminarlos del clúster). Valores válidos: números enteros en [-1; \$1Inf]  | Mínimo de 259 200 000 milisegundos (3 días). -1 para una retención infinita. | Mínimo de 259 200 000 milisegundos (3 días). -1 para una retención infinita. | 
| socket.receive.buffer.bytes | El búfer SO\$1RCVBUF de los sockets del servidor de sockets. Si el valor es -1, se utiliza el sistema operativo predeterminado. | 102400 | 102400 | 
| socket.request.max.bytes | Número máximo de bytes de una solicitud de conector. | 104857600 | 104857600 | 
| socket.send.buffer.bytes | El búfer SO\$1SNDBUF de los sockets del servidor de sockets. Si el valor es -1, se utiliza el sistema operativo predeterminado. | 102400 | 102400 | 
| unclean.leader.election.enable | Indica si quiere que las réplicas que no están incluidas en el conjunto de ISR sirvan de líder como último recurso, aunque esto pueda provocar la pérdida de datos. | true | false | 
| zookeeper.session.timeout.ms |  El tiempo de espera ZooKeeper de la sesión de Apache en milisegundos.  | 18000 | 18000 | 
| zookeeper.set.acl | El cliente configurado para usar secure ACLs. | false | false | 

Para obtener información sobre cómo especificar valores de configuración personalizados, consulte [Configuraciones personalizadas de Amazon MSK](msk-configuration-properties.md).

# Directrices para la configuración a nivel de tema del almacenamiento en niveles de Amazon MSK
<a name="msk-guidelines-tiered-storage-topic-level-config"></a>

Las siguientes son las configuraciones y limitaciones predeterminadas al configurar el almacenamiento por niveles de los temas.
+ Amazon MSK no admite tamaños de segmento de registro más pequeños para los temas con el almacenamiento por niveles activado. Si desea crear un segmento, hay un tamaño mínimo de segmento de registro de 48 MiB o un tiempo mínimo de rotación del segmento de 10 minutos. Estos valores se asignan a las propiedades segment.bytes y segment.ms.
+ El valor de local.retention. ms/bytes can't equal or exceed the retention.ms/bytes. Esta es la configuración de retención del almacenamiento por niveles.
+ El valor predeterminado para local.retention. ms/bytes is -2. This means that the retention.ms value is used for local.retention.ms/bytes. En este caso, los datos permanecen tanto en el almacenamiento local como en el almacenamiento por niveles (una copia en cada uno) y vencen juntos. Para esta opción, se conserva una copia de los datos locales en el almacenamiento remoto. En este caso, los datos leídos del tráfico de consumo provienen del almacenamiento local.
+ El valor predeterminado de retention.ms es 7 días. No hay un límite de tamaño predeterminado para retention.bytes.
+ El valor mínimo de retention.ms/bytes es -1. Esto significa una retención infinita.
+ El valor mínimo de local.retention. ms/bytes is -2. This means infinite retention for local storage. It matches with the retention.ms/bytesestablecer como -1.
+ La configuración a nivel de tema retention.ms es obligatoria para los temas con el almacenamiento en niveles activado. El valor mínimo de retention.ms es de 3 días.

Para obtener más información sobre las restricciones del almacenamiento por niveles, consulte [Restricciones y limitaciones de almacenamiento por niveles para clústeres de Amazon MSK](msk-tiered-storage.md#msk-tiered-storage-constraints).

# Configuraciones de agentes Express
<a name="msk-configuration-express"></a>

Apache Kafka tiene cientos de configuraciones de agente que puede usar para ajustar el rendimiento del clúster de Amazon MSK aprovisionado. Establecer valores erróneos o subóptimos puede afectar la fiabilidad y el rendimiento del clúster. Los agentes Express mejoran la disponibilidad y la durabilidad de los clústeres de Amazon MSK aprovisionados al establecer valores óptimos para configuraciones críticas y protegerlos frente a errores de configuración comunes. Existen tres categorías de configuraciones según el acceso de lectura y escritura: [lectura/escritura (editable)](msk-configuration-express-read-write.md), [solo lectura](msk-configuration-express-read-only.md) y configuraciones sin acceso de lectura ni escritura. Algunas configuraciones aún usan el valor predeterminado de Apache Kafka correspondiente a la versión de Apache Kafka en la que se ejecuta el clúster. Marcamos estas configuraciones como Valores predeterminados de Apache Kafka.

**Topics**
+ [Configuraciones personalizadas de agentes Express de MSK (acceso de lectura/escritura)](msk-configuration-express-read-write.md)
+ [Configuraciones de solo lectura para agentes Express](msk-configuration-express-read-only.md)

# Configuraciones personalizadas de agentes Express de MSK (acceso de lectura/escritura)
<a name="msk-configuration-express-read-write"></a>

Puede actualizar las configuraciones de los read/write corredores mediante la [función de configuración de actualizaciones](msk-update-cluster-config.md) de Amazon MSK o mediante la API de AlterConfig Apache Kafka. Las configuraciones de los agentes de Apache Kafka pueden ser estáticas o dinámicas. Las configuraciones estáticas requieren un reinicio del agente para que los cambios surtan efecto, mientras que las configuraciones dinámicas no requieren el reinicio del agente. Para obtener más información sobre las propiedades de configuración y los modos de actualización, consulte [Updating broker configs](https://kafka.apache.org/documentation/#dynamicbrokerconfigs).

**Topics**
+ [Configuraciones estáticas en agentes Express de MSK](#msk-configuration-express-static-configuration)
+ [Configuraciones dinámicas en agentes Express](#msk-configuration-express-dynamic-configuration)
+ [Configuraciones de temas en agentes Express](#msk-configuration-express-topic-configuration)

## Configuraciones estáticas en agentes Express de MSK
<a name="msk-configuration-express-static-configuration"></a>

Puede utilizar Amazon MSK para crear un archivo de configuración personalizado de MSK en el que defina las siguientes propiedades estáticas. Amazon MSK establece y administra automáticamente todas las demás propiedades que no configure. Puede crear y actualizar archivos de configuración estática desde la consola de MSK o mediante el [comando de configuraciones](msk-configuration-operations-create.md).


| Propiedad | Description (Descripción) | Valor predeterminado | 
| --- | --- | --- | 
|  allow.everyone.if.no.acl.found  |  Si desea establecer esta propiedad en false, primero asegúrese de definir Apache Kafka ACLs para su clúster. Si establece esta propiedad en false y no define primero Apache Kafka ACLs, perderá el acceso al clúster. Si eso ocurre, puede actualizar nuevamente la configuración y establecer esta propiedad en verdadero para recuperar el acceso al clúster.  |  true  | 
|  auto.create.topics.enable  |  Habilita la creación automática de un tema en el servidor.  |  false  | 
| compression.type |  Especifique el tipo de compresión final para un tema determinado. Esta configuración admite los códecs de compresión estándar: gzip, snappy, lz4 y zstd. Esta configuración también acepta `uncompressed`, que es equivalente a no usar compresión, y `producer`, que significa conservar el códec de compresión original establecido por el productor. | Valor predeterminado de Apache Kafka | 
|  connections.max.idle.ms  |  Tiempo de espera de las conexiones inactivas en milisegundos. Los subprocesos del procesador del socket del servidor cierran las conexiones que están inactivas durante un tiempo superior al valor establecido para esta propiedad.  |  Valor predeterminado de Apache Kafka  | 
|  delete.topic.enable  |  Habilita la operación para eliminar un tema. Si desactiva esta configuración, no podrá eliminar un tema usando la herramienta de administración.  |  Valor predeterminado de Apache Kafka  | 
|  group.initial.rebalance.delay.ms  |   Cantidad de tiempo que el coordinador del grupo espera para que otros consumidores de datos se unan a un nuevo grupo antes de que el coordinador del grupo lleve a cabo el primer reequilibrio. Un retraso superior implica posiblemente menos reequilibrios, pero aumenta el tiempo hasta que el procesamiento comience.  |  Valor predeterminado de Apache Kafka  | 
|  group.max.session.timeout.ms  |  Tiempo de espera máximo de la sesión para los consumidores registrados. Unos tiempos de espera superiores proporcionan a los consumidores más tiempo para procesar los mensajes entre latidos, pero se requiere más tiempo para detectar errores.  |  Valor predeterminado de Apache Kafka  | 
|  leader.imbalance.per.broker.percentage  |  La proporción de desequilibrio del líder permitida por agente. El controlador desencadena un equilibrio del líder si supera este valor por agente. Este valor se especifica en porcentaje.  |  Valor predeterminado de Apache Kafka  | 
| log.cleanup.policy | La política de limpieza predeterminada de los segmentos que superan el periodo de retención. Una lista de políticas válidas separadas por comas. Las políticas válidas son delete y compact. Para clústeres con almacenamiento por niveles habilitado, la política válida es únicamente delete. | Valor predeterminado de Apache Kafka | 
| log.message.timestamp.after.max.ms |  La diferencia de marca de tiempo permitida entre la marca de tiempo del mensaje y la marca de tiempo del agente. La marca de tiempo del mensaje puede ser posterior o igual a la marca de tiempo del agente, con la diferencia máxima permitida determinada por el valor establecido en esta configuración. Si `log.message.timestamp.type=CreateTime`, el mensaje se rechazará si la diferencia entre las marcas de tiempo supera este umbral especificado. Esta configuración se ignora si `log.message.timestamp.type=LogAppendTime`.  | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms, es decir, 1 día) | 
| log.message.timestamp.before.max.ms |  La diferencia de marca de tiempo permitida entre la marca de tiempo del agente y la marca de tiempo del mensaje. La marca de tiempo del mensaje puede ser anterior o igual a la marca de tiempo del agente, con la diferencia máxima permitida determinada por el valor establecido en esta configuración. Si `log.message.timestamp.type=CreateTime`, el mensaje se rechazará si la diferencia entre las marcas de tiempo supera este umbral especificado. Esta configuración se ignora si `log.message.timestamp.type=LogAppendTime`.  | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms, es decir, 1 día) | 
| log.message.timestamp.type | Especifica si la marca temporal del mensaje es la hora de creación del mensaje o la hora de adición del registro. Los valores permitidos son CreateTime y LogAppendTime. | Valor predeterminado de Apache Kafka | 
| log.retention.bytes | Tamaño máximo del registro antes de eliminarlo. | Valor predeterminado de Apache Kafka | 
| log.retention.ms | Cantidad de milisegundos durante los cuales se conserva un archivo de registro antes de eliminarlo. | Valor predeterminado de Apache Kafka | 
| max.connections.per.ip | El número máximo de conexiones permitidas desde cada dirección IP. Este valor se puede establecer en 0 si existen sobrescrituras configuradas mediante la propiedad max.connections.per.ip.overrides. Las nuevas conexiones procedentes de la dirección IP se descartan cuando se alcanza el límite. | Valor predeterminado de Apache Kafka | 
|  max.incremental.fetch.session.cache.slots  |  Número máximo de sesiones de recuperación incrementales que se conservan.  |  Valor predeterminado de Apache Kafka  | 
| message.max.bytes |  Tamaño de lote de registros más grande que admite Kafka. Si aumenta este valor y hay consumidores anteriores a 0.10.2, también debe aumentar el tamaño de recuperación de los consumidores para que se puedan recuperar lotes de registros de este tamaño. La versión de formato de mensaje más reciente siempre agrupa los mensajes en lotes para aumentar la eficacia. Las versiones de formato de mensaje anteriores no agrupan los registros sin comprimir en lotes y, en este caso, este límite se aplica únicamente a un solo registro. Puede establecer este valor por tema mediante la configuración `max.message.bytes` del tema.  | Valor predeterminado de Apache Kafka | 
|  num.partitions  |  Número predeterminado de particiones por tema.  |  1  | 
|  offsets.retention.minutes  |  Después de que un grupo de consumidores pierda todos sus consumidores (es decir, se quede vacío), sus compensaciones se conservan durante este periodo de retención antes de que se descarten. Para los consumidores independientes (es decir, aquellos que usan asignación manual), los desplazamientos expiran después del tiempo transcurrido desde la última confirmación más este período de retención.  |  Valor predeterminado de Apache Kafka  | 
|  replica.fetch.max.bytes  |  Número de bytes de los mensajes para intentar recuperar cada partición. Esto no es un valor máximo absoluto. Si el primer lote de registros de la primera partición que no está vacía de la recuperación es superior a este valor, el lote de registros se devuelve para asegurar el progreso. Las propiedades message.max.bytes (configuración del agente) o max.message.bytes (configuración del tema) definen el tamaño de lote de registro máximo que acepta el agente.  |  Valor predeterminado de Apache Kafka  | 
|  replica.selector.class  |  El nombre de clase completo que se implementa. ReplicaSelector El agente utiliza este valor para encontrar la réplica de lectura preferida. Si desea permitir que los consumidores obtengan datos de la réplica más cercana, establezca esta propiedad en `org.apache.kafka.common.replica.RackAwareReplicaSelector`.  |  Valor predeterminado de Apache Kafka  | 
|  socket.receive.buffer.bytes  |  El búfer SO\$1RCVBUF de los sockets del servidor de sockets. Si el valor es -1, se utiliza el sistema operativo predeterminado.  |  102400  | 
|  socket.request.max.bytes  |  Número máximo de bytes de una solicitud de conector.  |  104857600  | 
|  socket.send.buffer.bytes  |  El búfer SO\$1SNDBUF de los sockets del servidor de sockets. Si el valor es -1, se utiliza el sistema operativo predeterminado.  |  102400  | 
|  transaction.max.timeout.ms  |  Tiempo de espera máximo para las transacciones. Si el tiempo de transacción solicitado por un cliente supera este valor, el bróker devuelve un error. InitProducerIdRequest Esto evita que un cliente experimente un tiempo de espera demasiado grande, lo que puede detener la lectura de los temas que se incluyen en la transacción por parte de los consumidores.  |  Valor predeterminado de Apache Kafka  | 
|  transactional.id.expiration.ms  |  El tiempo en milisegundos que el coordinador de transacciones espera para recibir cualquier actualización del estado de la transacción actual antes de que venza el ID de la transacción del coordinador. Esta configuración también influye en la caducidad del ID de productor, ya que hace IDs que el productor caduque cuando este tiempo transcurre después de la última escritura con el ID de productor indicado. El productor IDs puede caducar antes si se elimina la última escritura del ID de productor debido a la configuración de retención del tema. El valor mínimo de esta propiedad es de 1 milisegundo.  |  Valor predeterminado de Apache Kafka  | 

## Configuraciones dinámicas en agentes Express
<a name="msk-configuration-express-dynamic-configuration"></a>

Puede usar la AlterConfig API de Apache Kafka o la herramienta Kafka-configs.sh para editar las siguientes configuraciones dinámicas. Amazon MSK establece y administra automáticamente todas las demás propiedades que no configure. Puede establecer dinámicamente propiedades de configuración del clúster y del agente que no requieren el reinicio del agente.


| Propiedad | Description (Descripción) | Predeterminado | 
| --- | --- | --- | 
|  advertised.listeners  |  Oyentes que se publican para que los clientes los utilicen, si son distintos de la propiedad de configuración `listeners`. En entornos de IaaS, este valor puede necesitar ser distinto de la interfaz a la que se vincula el agente. Si no se establece, se utilizará el valor de oyentes. A diferencia de oyentes, no es válido anunciar la meta-dirección 0.0.0.0. Además, a diferencia de `listeners`, en esta propiedad pueden existir puertos duplicados, de modo que un oyente se pueda configurar para anunciar la dirección de otro oyente. Esto puede resultar útil en algunos casos en los que se utilizan equilibradores de carga externos. Esta propiedad se establece por agente.  |  null  | 
|  compression.type  |  El tipo de compresión final para un tema determinado. Puede establecer esta propiedad en los códecs de compresión estándar (`gzip`, `snappy`, `lz4` y `zstd`). Además, acepta `uncompressed`. Este valor equivale a la ausencia de compresión. Si establece el valor en `producer`, se retendrá el códec de compresión original que configuró el productor.  | Valor predeterminado de Apache Kafka | 
| log.cleaner.delete.retention.ms | La cantidad de tiempo durante la cual se conservan los marcadores de eliminación para los temas con registros compactados. Esta configuración también establece un límite de tiempo dentro del cual un consumidor debe completar una lectura si comienza desde el desplazamiento 0, para garantizar que obtenga una instantánea válida de la etapa final. De lo contrario, los marcadores de eliminación se podrían recopilar antes de que el consumidor complete su análisis. | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms, es decir, 1 día), valor predeterminado de Apache Kafka | 
| log.cleaner.min.compaction.lag.ms | El tiempo mínimo durante el cual un mensaje permanece sin compactar en el registro. Esta configuración solo se aplica a los registros que se compactan. | 0, valor predeterminado de Apache Kafka | 
| log.cleaner.max.compaction.lag.ms | El tiempo máximo durante el cual un mensaje permanece no apto para la compactación en el registro. Esta configuración solo se aplica a los registros que se compactan. Este valor se debe encontrar dentro del rango de [7 días, Long.Max]. | 9223372036854775807, valor predeterminado de Apache Kafka | 
|  log.cleanup.policy  |  La política de limpieza predeterminada de los segmentos que superan el periodo de retención. Una lista de políticas válidas separadas por comas. Las políticas válidas son `delete` y `compact`. Para clústeres con almacenamiento por niveles habilitado, la política válida es únicamente `delete`.  | Valor predeterminado de Apache Kafka | 
|  log.message.timestamp.after.max.ms  |  La diferencia de marca de tiempo permitida entre la marca de tiempo del mensaje y la marca de tiempo del agente. La marca de tiempo del mensaje puede ser posterior o igual a la marca de tiempo del agente, con la diferencia máxima permitida determinada por el valor establecido en esta configuración. Si `log.message.timestamp.type=CreateTime`, el mensaje se rechazará si la diferencia entre las marcas de tiempo supera este umbral especificado. Esta configuración se ignora si `log.message.timestamp.type=LogAppendTime`.  | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms, es decir, 1 día) | 
|  log.message.timestamp.before.max.ms  |  La diferencia de marca de tiempo permitida entre la marca de tiempo del agente y la marca de tiempo del mensaje. La marca de tiempo del mensaje puede ser anterior o igual a la marca de tiempo del agente, con la diferencia máxima permitida determinada por el valor establecido en esta configuración. Si `log.message.timestamp.type=CreateTime`, el mensaje se rechazará si la diferencia entre las marcas de tiempo supera este umbral especificado. Esta configuración se ignora si `log.message.timestamp.type=LogAppendTime`.  | 86400000 (24 \$1 60 \$1 60 \$1 1000 ms, es decir, 1 día) | 
|  log.message.timestamp.type  |  Especifica si la marca temporal del mensaje es la hora de creación del mensaje o la hora de adición del registro. Los valores permitidos son `CreateTime` y `LogAppendTime`.  | Valor predeterminado de Apache Kafka | 
|  log.retention.bytes  |  Tamaño máximo del registro antes de eliminarlo.  |  Valor predeterminado de Apache Kafka  | 
|  log.retention.ms  |  Cantidad de milisegundos durante los cuales se conserva un archivo de registro antes de eliminarlo.  |  Valor predeterminado de Apache Kafka  | 
|  max.connection.creation.rate  |  La tasa máxima de creación de conexiones permitida en el agente en un momento dado.  |  Valor predeterminado de Apache Kafka  | 
|  max.connections  |  Número máximo de conexiones permitidas en el agente en un momento dado. Este límite se aplica además de cualquier límite por dirección IP configurado mediante `max.connections.per.ip`.  |  Valor predeterminado de Apache Kafka  | 
|  max.connections.per.ip  |  El número máximo de conexiones permitidas desde cada dirección IP. Este valor se puede establecer en `0` si existen anulaciones configuradas mediante la propiedad max.connections.per.ip.overrides. Las nuevas conexiones procedentes de la dirección IP se descartan cuando se alcanza el límite.  |  Valor predeterminado de Apache Kafka  | 
|  max.connections.per.ip.overrides  |  Lista separada por comas de anulaciones por dirección IP o nombre de host que sustituyen el número máximo de conexiones predeterminado. Un ejemplo de valor es `hostName:100,127.0.0.1:200`  | Valor predeterminado de Apache Kafka | 
|  message.max.bytes  |  Tamaño de lote de registros más grande que admite Kafka. Si aumenta este valor y hay consumidores anteriores a 0.10.2, también debe aumentar el tamaño de recuperación de los consumidores para que se puedan recuperar lotes de registros de este tamaño. La versión de formato de mensaje más reciente siempre agrupa los mensajes en lotes para aumentar la eficacia. Las versiones de formato de mensaje anteriores no agrupan los registros sin comprimir en lotes y, en este caso, este límite se aplica únicamente a un solo registro. Puede establecer este valor por tema mediante la configuración `max.message.bytes` del tema.  | Valor predeterminado de Apache Kafka | 
|  producer.id.expiration.ms  |  El tiempo en ms que esperará el líder de una partición temática antes de que el productor IDs caduque. El productor IDs no caducará mientras una transacción asociada a él esté en curso. Ten en cuenta que el productor IDs puede caducar antes si se elimina la última escritura del identificador de productor debido a la configuración de retención del tema. Establecer este valor igual o superior a `delivery.timeout.ms` puede ayudar a evitar la caducidad durante los reintentos y a proteger frente a la duplicación de mensajes, pero el valor predeterminado debería ser razonable para la mayoría de los casos de uso.  | Valor predeterminado de Apache Kafka | 

## Configuraciones de temas en agentes Express
<a name="msk-configuration-express-topic-configuration"></a>

Puede utilizar los comandos de Apache Kafka para establecer o modificar propiedades de configuración de nivel de tema para temas nuevos y existentes. Si no se proporciona ninguna configuración de tema, Amazon MSK utiliza el valor predeterminado del agente. Al igual que con las configuraciones e agente, Amazon MSK protege algunas propiedades de configuración de temas frente a cambios. Los ejemplos incluyen el factor de replicación, `min.insync.replicas` y `unclean.leader.election.enable`. Si intenta crear un tema con un valor de factor de replicación distinto de `3`, Amazon MSK creará el tema con un factor de replicación de `3` de forma predeterminada. Para obtener más información acerca de las propiedades de configuración de temas y ejemplos de cómo establecerlas, consulte [Topic-Level Configs](https://kafka.apache.org/documentation/#topicconfigs) en la documentación de Apache Kafka.


| Propiedad | Description (Descripción) | 
| --- | --- | 
|  cleanup.policy  |  Esta configuración designa la política de retención que se utilizará en los segmentos de registro. La política de “eliminar” (que es la predeterminada) descartará los segmentos antiguos cuando se alcance su límite de tiempo o de tamaño de retención. La política de “compactar” habilitará la compactación de registros, que conserva el valor más reciente de cada clave. También es posible especificar ambas políticas en una lista separada por comas (por ejemplo, “eliminar,compactar”). En este caso, los segmentos antiguos se descartarán según la configuración de tiempo y tamaño de retención, mientras que los segmentos retenidos se compactarán. La compactación en agentes Express se activa una vez que los datos de una partición alcanzan los 256 MB.  | 
|  compression.type  |  Especifique el tipo de compresión final para un tema determinado. Esta configuración acepta los códecs de compresión estándar (`gzip`, `snappy`, `lz4` y `zstd`). Además, acepta `uncompressed`, que es equivalente a no usar compresión, y `producer`, que indica que se debe retener el códec de compresión original establecido por el productor.  | 
| delete.retention.ms |  La cantidad de tiempo durante la cual se conservan los marcadores de eliminación para los temas con registros compactados. Esta configuración también establece un límite de tiempo dentro del cual un consumidor debe completar una lectura si comienza desde el desplazamiento 0, para garantizar que obtenga una instantánea válida de la etapa final. De lo contrario, los marcadores de eliminación se podrían recopilar antes de que el consumidor complete su análisis. El valor predeterminado de esta configuración es 86400000 (24 × 60 × 60 × 1000 ms, es decir, 1 día). Valor predeterminado de Apache Kafka.  | 
|  max.message.bytes  |  El tamaño máximo permitido de un lote de registros por Kafka (después de la compresión, si la compresión está habilitada). Si este valor se incrementa y existen consumidores con una versión anterior a `0.10.2`, también se debe aumentar el tamaño de obtención de los consumidores para que puedan recuperar lotes de registros de este tamaño. En la versión de formato de mensaje más reciente, los registros siempre se agrupan en lotes para aumentar la eficacia. En versiones de formato de mensaje anteriores, los registros sin comprimir no se agrupan en lotes y este límite se aplica únicamente a un solo registro en este caso. Este valor se puede configurar por tema mediante la `max.message.bytes config` del tema.  | 
|  message.timestamp.after.max.ms  |  Esta configuración establece la diferencia de tiempo permitida entre la marca de tiempo del mensaje y la marca de tiempo del agente. La marca de tiempo del mensaje puede ser posterior o igual a la marca de tiempo del agente, con la diferencia máxima permitida determinada por el valor establecido en esta configuración. Si `message.timestamp.type=CreateTime`, el mensaje se rechazará si la diferencia entre las marcas de tiempo supera este umbral especificado. Esta configuración se ignora si `message.timestamp.type=LogAppendTime`.  | 
|  message.timestamp.before.max.ms  |  Esta configuración establece la diferencia de marca de tiempo permitida entre la marca de tiempo del agente y la marca de tiempo del mensaje. La marca de tiempo del mensaje puede ser anterior o igual a la marca de tiempo del agente, con la diferencia máxima permitida determinada por el valor establecido en esta configuración. Si `message.timestamp.type=CreateTime`, el mensaje se rechazará si la diferencia entre las marcas de tiempo supera este umbral especificado. Esta configuración se ignora si `message.timestamp.type=LogAppendTime`.  | 
|  message.timestamp.type  |  Defina si la marca de tiempo del mensaje corresponde al momento de creación del mensaje o al momento de incorporación al registro. El valor debe ser `CreateTime` o `LogAppendTime`  | 
| min.compaction.lag.ms |  El tiempo mínimo durante el cual un mensaje permanece sin compactar en el registro. Esta configuración solo se aplica a los registros que se compactan. El valor predeterminado de esta configuración es 0, valor predeterminado de Apache Kafka.  | 
| max.compaction.lag.ms |  El tiempo máximo durante el cual un mensaje permanece no apto para la compactación en el registro. Esta configuración solo se aplica a los registros que se compactan. Este valor se debe encontrar dentro del rango de [7 días, Long.Max]. El valor predeterminado de esta configuración es 9223372036854775807, el valor predeterminado de Apache Kafka.  | 
|  retention.bytes  |  Esta configuración controla el tamaño máximo que puede alcanzar una partición (que consta de segmentos de registro) antes de que se descarten los segmentos de registro antiguos para liberar espacio, cuando se utiliza la política de retención “eliminar”. De forma predeterminada, no existe un límite de tamaño, solo un límite de tiempo. Dado que este límite se aplica por partición, multiplíquelo por el número de particiones para calcular la retención del tema en bytes. Además, `retention.bytes configuration` funciona de forma independiente de las configuraciones `segment.ms` y `segment.bytes`. Asimismo, esta configuración desencadena la rotación de un nuevo segmento si `retention.bytes` se configura con el valor 0.  | 
|  retention.ms  |  Esta configuración controla el tiempo máximo durante el cual se retendrá un registro antes de descartar los segmentos antiguos para liberar espacio, cuando se utiliza la política de retención “eliminar”. Esto representa un acuerdo de nivel de servicio sobre la rapidez con la que los consumidores deben leer sus datos. Si se establece en `-1`, no se aplica ningún límite de tiempo. Además, la configuración `retention.ms` funciona de forma independiente de las configuraciones `segment.ms` y `segment.bytes`. Asimismo, esta configuración desencadena la rotación de un nuevo segmento si se cumple la condición `retention.ms`.  | 

# Configuraciones de solo lectura para agentes Express
<a name="msk-configuration-express-read-only"></a>

Amazon MSK establece los valores de estas configuraciones y los protege frente a cambios que podrían afectar la disponibilidad del clúster. Estos valores pueden variar en función de la versión de Apache Kafka que se ejecute en el clúster, por lo que recuerde comprobar los valores correspondientes al clúster específico.

La siguiente tabla enumera las configuraciones de solo lectura para los agentes Express.


| Propiedad | Description (Descripción) | Valor de agente Express | 
| --- | --- | --- | 
| broker.id | El identificador del agente para este servidor. | 1,2,3... | 
| broker.rack | Rack del agente. Se utiliza en la asignación de réplicas con reconocimiento de rack para tolerancia a errores. Ejemplos: ``, RACK1 `us-east-1d` | ID de la zona de disponibilidad (AZ) o ID de la subred | 
|  default.replication.factor  |  Factores de replicación predeterminados para todos los temas  |  3  | 
| fetch.max.bytes | El número máximo de bytes que se devolverán para una solicitud de obtención. | Valor predeterminado de Apache Kafka | 
| group.max.size | El número máximo de consumidores que puede admitir un único grupo de consumidores. | Valor predeterminado de Apache Kafka | 
| inter.broker.listener.name | Nombre del oyente utilizado para la comunicación entre agentes. | REPLICATION\$1SECURE o REPLICATION | 
| inter.broker.protocol.version | Especifica qué versión del protocolo de comunicación entre agentes se utiliza. | Valor predeterminado de Apache Kafka | 
| oyentes | Lista de oyentes: lista separada por comas de lo que URIs escucharemos y los nombres de los oyentes. Puede configurar la propiedad advertised.listeners property, pero no la propiedad listeners. | Generado por MSK | 
| log.message.format.version | Especifique la versión del formato de mensajes que el agente utilizará para anexar mensajes a los registros. | Valor predeterminado de Apache Kafka | 
| min.insync.replicas | Cuando un productor establece acks en `all` (o `-1`), el valor en `min.insync.replicas` especifica el número mínimo de réplicas que deben confirmar una escritura para que esta se considere exitosa. Si no se puede cumplir este mínimo, el productor genera una excepción (ya sea `NotEnoughReplicas` o `NotEnoughReplicasAfterAppend`). Puede usar el valor de acks desde el productor para aplicar garantías de durabilidad más estrictas. Para ello, establezca acks en “todos”. Esto garantiza que el productor emita una excepción si la mayoría de las réplicas no reciben una escritura. | 2 | 
| num.io.threads | Número de subprocesos que el servidor usa para producir solicitudes, que pueden incluir E/S de disco: (m7g.large, 8), (m7g.xlarge, 8), (m7g.2xlarge, 16), (m7g.4xlarge, 32), (m7g.8xlarge, 64), (m7g.12xlarge, 96), (m7g.16xlarge, 128) | Según el tipo de la instancia =Math.max (8, 2 \$1 v) CPUs | 
| num.network.threads | Número de subprocesos que el servidor usa para recibir solicitudes desde la red y enviar respuestas a la red: (m7g.large, 8), (m7g.xlarge, 8), (m7g.2xlarge, 8), (m7g.4xlarge, 16), (m7g.8xlarge, 32), (m7g.12xlarge, 48), (m7g.16xlarge, 64) | Según el tipo de la instancia =Math.max (8, v) CPUs | 
| replica.fetch.response.max.bytes | El número máximo de bytes previsto para la respuesta de recuperación completa. Los registros se recuperan en lotes y, si el primer lote de registro de la primera partición que no está vacía de la recuperación es superior a este valor, el lote de registro se devolverá para asegurar que se lleva a cabo el progreso. Esto no es un valor máximo absoluto. Las propiedades message.max.bytes (configuración del agente) o max.message.bytes (configuración del tema) especifican el tamaño máximo del lote de registros que acepta el agente. | Valor predeterminado de Apache Kafka | 
| request.timeout.ms | Esta configuración controla el tiempo máximo que el cliente esperará la respuesta de una solicitud. Si la respuesta no se recibe antes de que expire el tiempo de espera, el cliente reenviará la solicitud si es necesario o la marcará como fallida si se agotan los reintentos. | Valor predeterminado de Apache Kafka | 
| transaction.state.log.min.isr | Se sobrescribe la configuración min.insync.replicas para el tema de transacciones. | 2 | 
| transaction.state.log.replication.factor | El factor de replicación del tema de transacción. | Valor predeterminado de Apache Kafka | 
| unclean.leader.election.enable | Permite que réplicas que no estén en el conjunto ISR actúen como líder como último recurso, aunque esto puede provocar pérdida de datos. | FALSO | 

# Operaciones de configuración de agentes
<a name="msk-configuration-operations"></a>

Las configuraciones de los agentes de Apache Kafka pueden ser estáticas o dinámicas. Las configuraciones estáticas requieren reiniciar el agente para que los cambios se apliquen. Las configuraciones dinámicas no requieren reiniciar el agente para que la configuración se actualice. Para obtener más información sobre las propiedades de configuración y los modos de actualización, consulte Configuración de Apache Kafka. 

En este tema se describe cómo crear configuraciones de MSK personalizadas y cómo realizar operaciones en ellas. Para obtener información acerca de cómo utilizar las configuraciones de MSK para crear o actualizar clústeres, consulte [Características y conceptos clave de Amazon MSK](operations.md).

**Topics**
+ [Crear una configuración](msk-configuration-operations-create.md)
+ [Actualización de la configuración](msk-configuration-operations-update.md)
+ [Eliminación de una configuración](msk-configuration-operations-delete.md)
+ [Obtención de metadatos de configuración](msk-configuration-operations-describe.md)
+ [Obtención de detalles sobre una revisión de la configuración](msk-configuration-operations-describe-revision.md)
+ [Enumeración de las configuraciones de la cuenta para la región actual](msk-configuration-operations-list.md)
+ [Estados de configuración de Amazon MSK](msk-configuration-states.md)

# Crear una configuración
<a name="msk-configuration-operations-create"></a>

En este proceso, se describe cómo crear una configuración personalizada de Amazon MSK y cómo utilizarlo para realizar operaciones.

1. Cree un archivo donde especifique las propiedades de configuración que desea establecer y los valores que desea asignarles. A continuación se muestra el contenido de un archivo de configuración de ejemplo.

   ```
   auto.create.topics.enable = true
   
   log.roll.ms = 604800000
   ```

1. Ejecute el siguiente AWS CLI comando y *config-file-path* sustitúyalo por la ruta al archivo en el que guardó la configuración en el paso anterior.
**nota**  
El nombre que elija para la configuración debe coincidir con la siguiente expresión regular: «^[0-9A-Za-z][0-9A-Za-z-]\$10,\$1\$1».

   ```
   aws kafka create-configuration --name "ExampleConfigurationName" --description "Example configuration description." --kafka-versions "1.1.1" --server-properties fileb://config-file-path
   ```

   El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

   ```
   {
       "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1",
       "CreationTime": "2019-05-21T19:37:40.626Z",
       "LatestRevision": {
           "CreationTime": "2019-05-21T19:37:40.626Z",
           "Description": "Example configuration description.",
           "Revision": 1
       },
       "Name": "ExampleConfigurationName"
   }
   ```

1. El comando anterior devuelve un nombre de recurso de Amazon (ARN) para la nueva configuración. Guarde este ARN, porque lo necesita para hacer referencia a esta configuración en otros comandos. Si pierde el ARN de la configuración, puede enumerar todas las configuraciones de su cuenta para volver a encontrarlo.

# Actualización de la configuración
<a name="msk-configuration-operations-update"></a>

En este proceso, se describe cómo actualizar una configuración de Amazon MSK personalizada.

1. Cree un archivo donde especifique las propiedades de configuración que desea actualizar y los valores que desea asignarles. A continuación se muestra el contenido de un archivo de configuración de ejemplo.

   ```
   auto.create.topics.enable = true
   
   min.insync.replicas = 2
   ```

1. Ejecute el siguiente AWS CLI comando y *config-file-path* sustitúyalo por la ruta del archivo en el que guardó la configuración en el paso anterior.

   *configuration-arn*Sustitúyalo por el ARN que obtuvo al crear la configuración. Si no guardó el ARN cuando creó la configuración, puede usar el comando `list-configurations` para enumerar todas las configuraciones de su cuenta. La configuración que desea incluir en la lista aparece en la respuesta. El ARN de la configuración también aparece en dicha lista.

   ```
   aws kafka update-configuration --arn configuration-arn --description "Example configuration revision description." --server-properties fileb://config-file-path
   ```

1. El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

   ```
   {
       "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1",
       "LatestRevision": {
           "CreationTime": "2020-08-27T19:37:40.626Z",
           "Description": "Example configuration revision description.",
           "Revision": 2
       }
   }
   ```

# Eliminación de una configuración
<a name="msk-configuration-operations-delete"></a>

En el siguiente procedimiento se muestra cómo eliminar una configuración que no está asociada a un clúster. No puede eliminar una configuración asociada a un clúster.

1. Para ejecutar este ejemplo, *configuration-arn* sustitúyalo por el ARN que obtuvo al crear la configuración. Si no guardó el ARN cuando creó la configuración, puede usar el comando `list-configurations` para enumerar todas las configuraciones de su cuenta. La configuración que desea incluir en la lista aparece en la respuesta. El ARN de la configuración también aparece en dicha lista.

   ```
   aws kafka delete-configuration --arn configuration-arn
   ```

1. El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

   ```
   {
       "arn": " arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1",
       "state": "DELETING"
   }
   ```

# Obtención de metadatos de configuración
<a name="msk-configuration-operations-describe"></a>

En el siguiente procedimiento, se muestra cómo describir una configuración de Amazon MSK para obtener metadatos sobre la configuración.

1. Este comando devuelve metadatos acerca de la configuración. Para obtener una descripción detallada de la configuración, ejecute `describe-configuration-revision`.

   Para ejecutar este ejemplo, *configuration-arn* sustitúyalo por el ARN que obtuvo al crear la configuración. Si no guardó el ARN cuando creó la configuración, puede usar el comando `list-configurations` para enumerar todas las configuraciones de su cuenta. La configuración que desea incluir en la lista aparece en la respuesta. El ARN de la configuración también aparece en dicha lista.

   ```
   aws kafka describe-configuration --arn configuration-arn
   ```

1. El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

   ```
   {
       "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1",
       "CreationTime": "2019-05-21T00:54:23.591Z",
       "Description": "Example configuration description.",
       "KafkaVersions": [
           "1.1.1"
       ],
       "LatestRevision": {
           "CreationTime": "2019-05-21T00:54:23.591Z",
           "Description": "Example configuration description.",
           "Revision": 1
       },
       "Name": "SomeTest"
   }
   ```

# Obtención de detalles sobre una revisión de la configuración
<a name="msk-configuration-operations-describe-revision"></a>

En este proceso, se ofrece una descripción detallada de la revisión de la configuración de Amazon MSK.

Si usa el comando `describe-configuration` para describir una configuración de MSK, verá los metadatos de la configuración. Para obtener una descripción de la configuración, use el comando `describe-configuration-revision`.
+ Ejecute el siguiente comando y *configuration-arn* sustitúyalo por el ARN que obtuvo al crear la configuración. Si no guardó el ARN cuando creó la configuración, puede usar el comando `list-configurations` para enumerar todas las configuraciones de su cuenta. La configuración que desea incluir en la lista que aparece en la respuesta. El ARN de la configuración también aparece en dicha lista.

  ```
  aws kafka describe-configuration-revision --arn configuration-arn --revision 1
  ```

  El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

  ```
  {
      "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1",
      "CreationTime": "2019-05-21T00:54:23.591Z",
      "Description": "Example configuration description.",
      "Revision": 1,
      "ServerProperties": "YXV0by5jcmVhdGUudG9waWNzLmVuYWJsZSA9IHRydWUKCgp6b29rZWVwZXIuY29ubmVjdGlvbi50aW1lb3V0Lm1zID0gMTAwMAoKCmxvZy5yb2xsLm1zID0gNjA0ODAwMDAw"
  }
  ```

  El valor de `ServerProperties` se codifica en base64. Si utiliza un decodificador base64 (por ejemplo, https://www.base64decode.org/) para decodificarlo manualmente, obtendrá el contenido del archivo de configuración original que utilizó para crear la configuración personalizada. En este caso, obtiene lo siguiente:

  ```
  auto.create.topics.enable = true
  
  log.roll.ms = 604800000
  ```

# Enumeración de las configuraciones de la cuenta para la región actual
<a name="msk-configuration-operations-list"></a>

Este proceso describe cómo enumerar todas las configuraciones de Amazon MSK de su cuenta para la AWS región actual.
+ Ejecute el comando siguiente.

  ```
  aws kafka list-configurations
  ```

  El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

  ```
  {
      "Configurations": [
          {
              "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1",
              "CreationTime": "2019-05-21T00:54:23.591Z",
              "Description": "Example configuration description.",
              "KafkaVersions": [
                  "1.1.1"
              ],
              "LatestRevision": {
                  "CreationTime": "2019-05-21T00:54:23.591Z",
                  "Description": "Example configuration description.",
                  "Revision": 1
              },
              "Name": "SomeTest"
          },
          {
              "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/SomeTest/abcdabcd-1234-abcd-1234-abcd123e8e8e-1",
              "CreationTime": "2019-05-03T23:08:29.446Z",
              "Description": "Example configuration description.",
              "KafkaVersions": [
                  "1.1.1"
              ],
              "LatestRevision": {
                  "CreationTime": "2019-05-03T23:08:29.446Z",
                  "Description": "Example configuration description.",
                  "Revision": 1
              },
              "Name": "ExampleConfigurationName"
          }
      ]
  }
  ```

# Estados de configuración de Amazon MSK
<a name="msk-configuration-states"></a>

Una configuración de Amazon MSK puede tener uno de los siguientes estados: Para realizar una operación en una configuración, la configuración debe estar en el estado `ACTIVE` o `DELETE_FAILED`:
+ `ACTIVE`
+ `DELETING`
+ `DELETE_FAILED`

# Reequilibrio inteligente para clústeres
<a name="intelligent-rebalancing"></a>

Amazon MSK proporciona un reequilibrio inteligente para todos los nuevos clústeres aprovisionados de MSK con agentes Express. Esta función administra automáticamente las operaciones de distribución de particiones y escalado de clústeres, lo que elimina la necesidad de utilizar herramientas de terceros. El reequilibrio inteligente reequilibra automáticamente las particiones al escalar los clústeres hacia arriba o hacia abajo. También supervisa de forma continua el estado del clúster para detectar desequilibrios o sobrecargas de recursos y redistribuye la carga de trabajo.

El reequilibrio inteligente proporciona operaciones de escalado rápidas que se completan en 30 minutos y no afecta a la disponibilidad del clúster durante el escalado. Está activado de forma predeterminada para todos los nuevos clústeres aprovisionados basados en MSK Express y funciona con el límite máximo de particiones recomendado de 20 000 particiones por agente. Además, esta función está disponible sin coste adicional y no requiere ninguna configuración.

A partir del 20 de noviembre de 2025, el reequilibrio inteligente estará disponible en todas AWS las regiones en las que se admita a los agentes de Amazon MSK Express.

**Topics**
+ [Cómo funciona el reequilibrio inteligente](#how-intelligent-rebalancing-works)
+ [Supervisión de las métricas de reequilibrio inteligente](#intelligent-rebalancing-metrics)
+ [Consideraciones sobre el uso del reequilibrio inteligente](#intelligent-rebalancing-considerations)
+ [Ampliar y reducir los clústeres de Amazon MSK con una sola operación](intelligent-rebalancing-scaling-clusters.md)
+ [Reequilibrio de estado estacionario para clústeres de Amazon MSK](intelligent-rebalancing-self-balancing-paritions.md)

## Cómo funciona el reequilibrio inteligente
<a name="how-intelligent-rebalancing-works"></a>

El reequilibrio inteligente está activado de forma predeterminada en todos los nuevos clústeres aprovisionados de MSK con agentes Express. Incluye soporte para las siguientes situaciones:
+ **Ampliación y reducción**: le permite añadir o eliminar agentes de sus clústeres basados en MSK Express con un solo clic. Una vez que especifique qué agentes desea añadir o eliminar, el reequilibrio inteligente redistribuye automáticamente las particiones en la nueva configuración del clúster según las mejores prácticas internas. AWS 
+ **Reequilibrio en estado estable**: en estado estable, esta función supervisa el estado del clúster de forma continua y reequilibra automáticamente las particiones cuando:
  + La utilización de los recursos se vuelve sesgada entre los corredores.
  + Los corredores se aprovisionan en exceso o se infrautilizan.
  + Se añaden nuevos corredores o se eliminan los corredores existentes.

**nota**  
Si el reequilibrio inteligente está activado, no podrás utilizar herramientas de terceros, como Cruise Control, para reequilibrar las particiones. Primero debes pausar el reequilibrio inteligente para usar la API de reasignación de particiones proporcionada por estas herramientas de terceros.

Puede utilizar esta función en la consola de Amazon MSK. También puede utilizar esta función mediante Amazon MSK APIs o AWS SDK, y AWS CloudFormation. AWS CLI Para obtener más información, consulte [Escalar los clústeres de Amazon MSK](intelligent-rebalancing-scaling-clusters.md) y [Reequilibrio en estado estacionario](intelligent-rebalancing-self-balancing-paritions.md).

## Supervisión de las métricas de reequilibrio inteligente
<a name="intelligent-rebalancing-metrics"></a>

Puede supervisar el estado de las operaciones de reequilibrio inteligente en curso e históricas mediante las siguientes CloudWatch métricas de Amazon:
+ `RebalanceInProgress`: Esta métrica se publica cada minuto con un valor de 1 cuando el reequilibrio está en curso y de 0 en caso contrario.
+ `UnderProvisioned`: Indica que un clúster está actualmente insuficientemente aprovisionado y que no se puede realizar ningún reequilibrio de particiones. Tienes que añadir más agentes o ampliar el tipo de instancia del clúster.

Para obtener información sobre la supervisión de un clúster aprovisionado por MSK, consulte y. [](monitoring.md) [](cloudwatch-metrics.md)

## Consideraciones sobre el uso del reequilibrio inteligente
<a name="intelligent-rebalancing-considerations"></a>
+ El soporte para el reequilibrio inteligente solo está disponible para los nuevos clústeres aprovisionados de MSK con corredores Express.
+ Para la reasignación automática de particiones, está disponible un máximo de 20 000 particiones por agente.
+ No puede utilizar herramientas de reasignación de particiones APIs ni de reequilibrio de terceros cuando el reequilibrio inteligente está activado. Para utilizar estas herramientas APIs o las de terceros, primero debe pausar el reequilibrio inteligente del clúster basado en MSK Express.

# Ampliar y reducir los clústeres de Amazon MSK con una sola operación
<a name="intelligent-rebalancing-scaling-clusters"></a>

Con el reequilibrio inteligente, puede escalar sus clústeres hacia arriba o hacia abajo editando el recuento de agentes en sus clústeres con una sola acción. Puede hacerlo en la consola de Amazon MSK o mediante Amazon MSK APIs o AWS SDK, y. AWS CLI AWS CloudFormation Al cambiar el recuento de agentes, Amazon MSK hace lo siguiente:
+ Distribuye automáticamente las particiones a los nuevos corredores.
+ Mueve las particiones de los corredores que se están eliminando.

A medida que amplía y reduce los clústeres, la disponibilidad de los clústeres para que los clientes produzcan y consuman datos no se ve afectada.

**Topics**

------
#### [ Scaling clusters using Consola de administración de AWS ]

1. ¿Abrir la consola Amazon MSK en [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. En la página **Clústeres**, elija un clúster basado en Express recién creado. Para obtener información sobre cómo crear un clúster aprovisionado basado en Express, consulte. [Paso 1: Creación de un clúster de MSK aprovisionado](create-cluster.md)

1. En la lista desplegable **Acciones**, seleccione **Editar número** de corredores.

1. En la página **Editar el número de corredores por zona**, realice una de las siguientes acciones:
   + Para añadir más agentes a su clúster, seleccione **Añadir agentes a cada zona de disponibilidad** y, a continuación, introduzca el número de agentes que desee añadir.
   + Para eliminar corredores de su clúster, elija **Eliminar un corredor de cada zona de disponibilidad**.

1. Seleccione **Save changes (Guardar cambios)**.

------
#### [ Scaling clusters using AWS CLI ]

Puede ampliar o reducir la escala de sus clústeres editando su número de agentes. Para ello AWS CLI, utilice el [update-broker-count](https://docs.aws.amazon.com/cli/latest/reference/kafka/update-broker-count.html)comando, como se muestra en el siguiente ejemplo. En este comando, especifique en el `target-broker-count` parámetro el número de corredores que desea incluir en su clúster.

```
aws msk update-broker-count --cluster-arn arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/abcd1234-5678-90ef-ghij-klmnopqrstuv-1 --current-version ABCDEF1GHIJK0L --target-broker-count 6
```

------
#### [ Scaling clusters using AWS SDK ]

Puede escalar sus clústeres hacia arriba o hacia abajo editando mediante programación el recuento de corredores. Para ello, utilice el AWS SDK, utilice la [UpdateBrokerCount](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-nodes-count.html#UpdateBrokerCount)API, como se muestra en el siguiente ejemplo. Para el `TargetNumberOfBrokerNodes` parámetro, especifique el número de corredores que desea tener en su clúster.

```
update_broker_count_response = client.update_broker_count(
    ClusterArn='arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/abcd1234-5678-90ef-ghij-klmnopqrstuv-1',
    CurrentVersion='ABCDEF1GHIJK0L',
    TargetNumberOfBrokerNodes=6
)
```

------

# Reequilibrio de estado estacionario para clústeres de Amazon MSK
<a name="intelligent-rebalancing-self-balancing-paritions"></a>

El reequilibrio en estado estable forma parte de la función de reequilibrio inteligente, que está activada de forma predeterminada en todos los nuevos clústeres aprovisionados por MSK con los intermediarios Express. A medida que amplía o reduce los clústeres, Amazon MSK gestiona automáticamente la administración de las particiones distribuyéndolas a nuevos agentes y trasladándolas de los agentes para su eliminación. Para garantizar una distribución óptima de la carga de trabajo entre los corredores, el reequilibrio inteligente utiliza las mejores prácticas de Amazon MSK para determinar los umbrales para iniciar automáticamente el reequilibrio para sus corredores.

Puede pausar y reanudar el reequilibrio en estado estable cuando sea necesario. El reequilibrio en estado estacionario monitorea continuamente el clúster y hace lo siguiente:
+ Realiza un seguimiento del uso de los recursos del bróker (CPU, red, almacenamiento).
+ Ajusta la ubicación de las particiones automáticamente sin que ello afecte a la disponibilidad de los datos.
+ Completa las operaciones de reequilibrio hasta 180 veces más rápido para los corredores Express en comparación con los corredores estándar.
+ Mantiene el rendimiento del clúster.

**Topics**

------
#### [ Pause and resume steady state rebalancing in Consola de administración de AWS ]

1. ¿Abrir la consola Amazon MSK en [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. **En la página Clústeres, elija un clúster basado en Express.** Para obtener información sobre cómo crear un clúster aprovisionado basado en Express, consulte. [Paso 1: Creación de un clúster de MSK aprovisionado](create-cluster.md)

1. **En la página de detalles del clúster, compruebe que el estado de **reequilibrio inteligente** sea Activo.** Si el reequilibrio inteligente no está disponible o el estado es En **pausa**, cree un nuevo clúster basado en Express.

1. **En la lista desplegable **Acciones**, seleccione Editar el reequilibrio inteligente.**

1. En la página **Editar el reequilibrio inteligente**, haga lo siguiente:

   1. Seleccione En **pausa**.

   1. Seleccione **Save changes (Guardar cambios)**.

------
#### [ Pause and resume steady state rebalancing using AWS CLI ]

Para establecer el estado de reequilibrio de un clúster en el que se **ACTIVE** utilice el AWS CLI, utilice el comando [update-rebalancing](https://docs.aws.amazon.com/cli/latest/reference/kafka/update-rebalancing.html), como se muestra en el siguiente ejemplo. En este comando, especifique el estado con el parámetro. `rebalancing`

```
aws msk update-rebalancing --cluster-arn arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/abcd1234-5678-90ef-ghij-klmnopqrstuv-1 --current-version ABCDEF1GHIJK0L --rebalancing "{\"Rebalancing\":{\"Status\":\"ACTIVE\"}}"
```

------
#### [ Pause and resume steady state rebalancing using AWS SDK ]

También puede establecer el estado de reequilibrio de un clúster mediante la [UpdateRebalancingRequest](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-rebalancing.html#UpdateRebalancing)API para modificar mediante programación el recuento de agentes. Los siguientes ejemplos muestran cómo establecer el estado de reequilibrio en y. **ACTIVE** **PAUSED**

```
final UpdateRebalancingRequest updateRebalancingRequest = new UpdateRebalancingRequest()
    .withClusterArn(arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/abcd1234-5678-90ef-ghij-klmnopqrstuv-1)
    .withCurrentVersion(ABCDEF1GHIJK0L)
    .withRebalancing(new Rebalancing().withStatus("ACTIVE"));
```

```
final UpdateRebalancingRequest updateRebalancingRequest = new UpdateRebalancingRequest()
    .withClusterArn(arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/abcd1234-5678-90ef-ghij-klmnopqrstuv-1)
    .withCurrentVersion(ABCDEF1GHIJK0L)
    .withRebalancing(new Rebalancing().withStatus("PAUSED"));
```

------

# Aplicación de parches en clústeres de MSK aprovisionados
<a name="patching-impact"></a>

De forma periódica, Amazon MSK actualiza el software en los agentes del clúster. El mantenimiento incluye actualizaciones planificadas o reparaciones no planificadas. El mantenimiento planificado incluye actualizaciones del sistema operativo, actualizaciones de seguridad y otras actualizaciones de software necesarias para mantener el estado, la seguridad y el rendimiento del clúster. Realizamos mantenimiento no planificado para resolver degradaciones repentinas de la infraestructura. Realizamos mantenimiento tanto en agentes Standard como en agentes Express, aunque las experiencias son diferentes.

## Aplicación de parches en agentes Standard
<a name="patching-standard-brokers"></a>

Las actualizaciones de los agentes Standard no afectan las operaciones de escritura y lectura de las aplicaciones si sigue las [prácticas recomendadas](bestpractices.md).

Amazon MSK utiliza actualizaciones de software continuas para mantener una alta disponibilidad de sus clústeres. Durante este proceso, los agentes se reinician de uno en uno y Kafka traslada automáticamente el liderazgo a otro agente en línea. Al ver las operaciones del clúster en Consola de administración de AWS o a través de `DescribeClusterOperation` y `ListClusterOperations` APIs, estas operaciones de mantenimiento aparecen con un tipo de operación de`SECURITY_PATCHING`. Los clientes de Kafka disponen de mecanismos integrados para detectar automáticamente el cambio de dirección de las particiones y seguir escribiendo y leyendo los datos en un clúster de MSK. Siga las [Prácticas recomendadas para clientes de Apache Kafka](bestpractices-kafka-client.md) para garantizar un funcionamiento fluido del clúster en todo momento, incluso durante los procesos de aplicación de parches.

Tras la desconexión de un agente, es normal que sus clientes cometan errores transitorios de desconexión. También observará durante un breve periodo (hasta 2 minutos, normalmente menos) algunos picos en la latencia de lectura y escritura del p99 (normalmente altos milisegundos, hasta aproximadamente 2 segundos). Estos picos son esperados y se deben a que el cliente vuelve a conectarse a un nuevo agente líder; no afectan en sus productos ni en su consumo y se resolverán al volver a conectarse. Para obtener más información, consulte [El agente no está en línea y el cliente realiza una conmutación por error](https://docs.aws.amazon.com/msk/latest/developerguide/troubleshooting-offlinebroker-clientfailover.html).

También observará un aumento en la métrica `UnderReplicatedPartitions`, lo cual es esperado, ya que las particiones del agente que se apagó dejan de replicar datos. Esto no afecta a las escrituras y lecturas de las aplicaciones, ya que las réplicas de estas particiones alojadas en otros agentes ahora atienden las solicitudes.

Tras la actualización del software, cuando el agente vuelva a estar en línea, tendrá que “ponerse al día” con los mensajes producidos mientras estaba fuera de línea. Durante la recuperación, también puede observar un aumento en el uso del rendimiento del volumen y de la CPU. Esto no debería afectar a las escrituras y lecturas del clúster si sus agentes disponen de suficientes recursos de CPU, memoria, red y volumen.

## Aplicación de parches para agentes Express
<a name="patching-express-brokers"></a>

No existen periodos de mantenimiento para los agentes Express. Amazon MSK actualiza automáticamente el clúster de forma continua y distribuida en el tiempo, lo que significa que puede esperar reinicios ocasionales y puntuales de agentes a lo largo del mes. Esto garantiza que no necesite planificar ni realizar ajustes en torno a periodos de mantenimiento únicos de los clústeres. Como siempre, el tráfico permanecerá ininterrumpido durante el reinicio de un agente, ya que el liderazgo se trasladará a otros agentes que continuarán atendiendo las solicitudes. Al ver las operaciones del Consola de administración de AWS clúster en `DescribeClusterOperation` y a través de ella `ListClusterOperations` APIs, estas operaciones de mantenimiento aparecen con un tipo de operación de`BROKER_UPDATE`.

Los agentes Express se entregan configurados con ajustes y barreras de protección basados en prácticas recomendadas que hacen que el clúster sea resiliente frente a cambios de carga que se puedan producir durante el mantenimiento. Amazon MSK establece cuotas de rendimiento en los agentes Express para mitigar el impacto de una sobrecarga del clúster, que podría provocar problemas durante los reinicios de agentes. Estas mejoras eliminan la necesidad de notificaciones anticipadas, planificación previa y periodos de mantenimiento cuando se utilizan agentes Express.

Los agentes Express siempre replican los datos en tres copias, por lo que los clientes realizan la conmutación por error de forma automática durante los reinicios. No es necesario preocuparse por que los temas queden inaccesibles, incluso cuando el factor de replicación está configurado en 1 o 2. Además, la sincronización posterior de un agente Express que se reinicia es más rápida que en el caso de los agentes Standard. La mayor velocidad de aplicación de parches en los agentes Express implica una interrupción mínima en la planificación de cualquier actividad del plano de control que tenga programada para el clúster.

Como ocurre con todas las aplicaciones de Apache Kafka, se mantiene un contrato compartido cliente-servidor para los clientes que se conectan a agentes Express. Resulta fundamental configurar los clientes para que puedan gestionar correctamente la conmutación por error del liderazgo entre los agentes. Siga las [Prácticas recomendadas para clientes de Apache Kafka](bestpractices-kafka-client.md) para garantizar un funcionamiento fluido del clúster en todo momento, incluso durante la aplicación de parches. Tras el reinicio de un agente, es normal que los clientes experimenten [errores transitorios de desconexión](troubleshooting-offlinebroker-clientfailover.md). Esto no afecta a las operaciones de producción ni de consumo, ya que los agentes seguidores asumen el liderazgo de las particiones. Sus clientes de Apache Kafka realizarán automáticamente la conmutación por error y comenzarán a enviar solicitudes a los nuevos agentes líderes.

# El agente no está en línea y el cliente realiza una conmutación por error
<a name="troubleshooting-offlinebroker-clientfailover"></a>

Kafka permite utilizar un agente que no está en línea; un único agente que no está en línea en un clúster sano y equilibrado que siga las prácticas recomendadas no se verá afectado ni provocará fallos en la producción o el consumo. Esto se debe a que otro agente asumirá el liderazgo de la partición y a que la cartera de clientes de Kafka cambiará automáticamente por error y empezará a enviar solicitudes a los nuevos agentes líderes. 

**Contrato cliente-servidor**  
Esto se traduce en un contrato compartido entre la cartera de clientes y el comportamiento del servidor; el servidor debe asignar correctamente uno o más nuevos líderes y el cliente debe cambiar de agente para enviar las solicitudes a los nuevos líderes en el momento oportuno.

Kafka utiliza excepciones para controlar este flujo:

**Un procedimiento de ejemplo**

1. El agente A entra en estado de desconexión.

1. El cliente de Kafka recibe una excepción (normalmente desconectado de la red o not\$1leader\$1for\$1partition).

1. Estas excepciones hacen que el cliente de Kafka actualice sus metadatos para conocer a los líderes más recientes. 

1. El cliente de Kafka vuelve a enviar solicitudes a los nuevos líderes de partición a través de otros agentes.

Este proceso suele tardar menos de 2 segundos con el cliente Java vendido y las configuraciones predeterminadas. Los errores del cliente son detallados y repetitivos, pero no son motivo de preocupación, como se indica en el nivel “WARN”.

**Ejemplo: excepción 1**  
`10:05:25.306 [kafka-producer-network-thread | producer-1] WARN o.a.k.c.producer.internals.Sender - [Producer clientId=producer-1] Got error produce response with correlation id 864845 on topic-partition msk-test-topic-1-0, retrying (2147483646 attempts left). Error: NETWORK_EXCEPTION. Error Message: Disconnected from node 2`

**Ejemplo: excepción 2**  
`10:05:25.306 [kafka-producer-network-thread | producer-1] WARN o.a.k.c.producer.internals.Sender - [Producer clientId=producer-1] Received invalid metadata error in produce request on partition msk-test-topic-1-41 due to org.apache.kafka.common.errors.NotLeaderOrFollowerException: For requests intended only for the leader, this error indicates that the broker is not the current leader. For requests intended for any replica, this error indicates that the broker is not a replica of the topic partition.. Going to request metadata update now"`

Los clientes de Kafka resolverán automáticamente estos errores, normalmente en 1 segundo y como máximo en 3 segundos. Esto se presenta como produce/consume una latencia de p99 en las métricas del lado del cliente (normalmente es alta en milisegundos en los 100). Un valor superior a este valor suele indicar un problema con la configuración del cliente o con la carga del controlador del servidor. Consulte la sección de solución de problemas.

Una conmutación por error exitosa puede verificarse comprobando el aumento de las métricas de `BytesInPerSec` y `LeaderCount` de otros agentes, lo que demuestra que el tráfico y el liderazgo se han movido como se esperaba. También observará un aumento en la métrica `UnderReplicatedPartitions`, lo que se espera cuando las réplicas no están en línea con el agente de cierre.

**Resolución de problemas**  
El flujo anterior puede interrumpirse si se rompe el contrato cliente-servidor. Los motivos más comunes del problema son:
+ Configuración incorrecta o uso incorrecto de las carteras de clientes de Kafka.
+ Comportamientos predeterminados inesperados y errores en las carteras de clientes de terceros.
+ Sobrecarga del controlador que hace que la asignación del líder de partición sea más lenta.
+ Elección de un nuevo controlador que hace que la asignación del líder de partición sea más lenta.

Con el fin de garantizar un comportamiento correcto a la hora de gestionar los fallos de liderazgo, recomendamos:
+ Se deben seguir [las prácticas recomendadas](https://docs.aws.amazon.com/msk/latest/developerguide/bestpractices.html) del servidor para garantizar que el agente de controladores tenga la escala adecuada para evitar una lenta asignación de liderazgo.
+ Las carteras de clientes deben tener habilitados los reintentos para garantizar que el cliente gestione la conmutación por error.
+ Las bibliotecas cliente deben tener configurado retry.backoff.ms (100 por defecto) para evitar tormentas. connection/request 
+ Las carteras de clientes deben configurar request.timeout.ms y delivery.timeout.ms en valores acordes con el SLA de las aplicaciones. Los valores más altos harán que la conmutación por error sea más lenta para algunos tipos de errores.
+ Las carteras de clientes deben asegurarse de que bootstrap.servers contenga al menos 3 agentes aleatorios para evitar que la disponibilidad se vea afectada en el momento de la detección inicial.
+ Algunas carteras de clientes son de nivel inferior a otras y esperan que el desarrollador de la aplicación implemente por sí mismo la lógica de reintentos y la gestión de excepciones. Consulte la documentación específica de la biblioteca de clientes para ver, por ejemplo, el uso, y asegúrese de seguir la lógica correcta. reconnect/retry 
+ Recomendamos supervisar la latencia del cliente para comprobar la producción, el recuento de solicitudes satisfactorias y el recuento de errores en caso de errores que no se puedan volver a intentar.
+ Hemos observado que las antiguas carteras de golang y ruby de terceros permanecen detalladas durante todo el periodo de inactividad del agente, a pesar de que las solicitudes de producción y consumo no se ven afectadas. Le recomendamos que siempre supervise las métricas a nivel empresarial, además de solicitar métricas de éxito y errores, para determinar si hay un impacto real o un ruido en sus registros.
+ Los clientes no deberían alarmarse ante las excepciones transitorias en el caso de network/not\$1leader, ya que son normales, no impactan y se espera que formen parte del protocolo Kafka.
+ Los clientes no deberían activar las alarmas, UnderReplicatedPartitions ya que son normales, no impactan y se espera que se produzcan cuando se trata de un intermediario fuera de línea.

# Seguridad en Amazon MSK
<a name="security"></a>

La seguridad en la nube AWS es la máxima prioridad. Como AWS cliente, usted se beneficia de una arquitectura de centro de datos y red diseñada para cumplir con los requisitos de las organizaciones más sensibles a la seguridad.

La seguridad es una responsabilidad compartida entre usted AWS y usted. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad *de* la nube y seguridad *en* la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta AWS los servicios en la AWS nube. AWS también le proporciona servicios que puede utilizar de forma segura. Los auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad como parte de los [AWS programas](https://aws.amazon.com/compliance/programs/) de de . Para obtener información sobre los programas de conformidad que se aplican a Amazon Managed Streaming para Apache Kafka, consulte [Servicios de Amazon Web Services en el ámbito del programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/).
+ **Seguridad en la nube**: su responsabilidad viene determinada por el AWS servicio que utilice. También es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentos vigentes. 

Esta documentación le permite comprender cómo aplicar el modelo de responsabilidad compartida cuando se utiliza Amazon MSK. En los siguientes temas, se mostrará cómo configurar Amazon MSK para satisfacer sus objetivos de seguridad y conformidad. También puede aprender a utilizar otros servicios de Amazon Web Services que ayudan a supervisar y proteger los recursos de Amazon MSK. 

**Topics**
+ [Protección de datos en Amazon Managed Streaming para Apache Kafka](data-protection.md)
+ [Autenticación y autorización para Amazon MSK APIs](security-iam.md)
+ [Autenticación y autorización para Apache Kafka APIs](kafka_apis_iam.md)
+ [Modificación del grupo de seguridad de un clúster de Amazon MSK](change-security-group.md)
+ [Controle el acceso a ZooKeeper los nodos de Apache en su clúster de Amazon MSK](zookeeper-security.md)
+ [Validación de la conformidad de Amazon Managed Streaming para Apache Kafka](MSK-compliance.md)
+ [Resiliencia en Amazon Managed Streaming para Apache Kafka](disaster-recovery-resiliency.md)
+ [Seguridad de la infraestructura en Amazon Managed Streaming para Apache Kafka](infrastructure-security.md)

# Protección de datos en Amazon Managed Streaming para Apache Kafka
<a name="data-protection"></a>

El [modelo de ](https://aws.amazon.com/compliance/shared-responsibility-model/) se aplica a protección de datos en Amazon Managed Streaming for Apache Kafka. Como se describe en este modelo, AWS es responsable de proteger la infraestructura global en la que se ejecutan todos los Nube de AWS. Eres responsable de mantener el control sobre el contenido alojado en esta infraestructura. También eres responsable de las tareas de administración y configuración de seguridad para los Servicios de AWS que utiliza. Para obtener más información sobre la privacidad de los datos, consulte las [Preguntas frecuentes sobre la privacidad de datos](https://aws.amazon.com/compliance/data-privacy-faq/). Para obtener información sobre la protección de datos en Europa, consulte la publicación de blog sobre el [Modelo de responsabilidad compartida de AWS y GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) en el * Blog de seguridad de AWS *.

Con fines de protección de datos, le recomendamos que proteja Cuenta de AWS las credenciales y configure los usuarios individuales con AWS IAM Identity Center o AWS Identity and Access Management (IAM). De esta manera, solo se otorgan a cada usuario los permisos necesarios para cumplir sus obligaciones laborales. También recomendamos proteger sus datos de la siguiente manera:
+ Utiliza la autenticación multifactor (MFA) en cada cuenta.
+ Se utiliza SSL/TLS para comunicarse con AWS los recursos. Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Configure la API y el registro de actividad de los usuarios con AWS CloudTrail. Para obtener información sobre el uso de CloudTrail senderos para capturar AWS actividades, consulte [Cómo trabajar con CloudTrail senderos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) en la *Guía del AWS CloudTrail usuario*.
+ Utilice soluciones de AWS cifrado, junto con todos los controles de seguridad predeterminados Servicios de AWS.
+ Utiliza servicios de seguridad administrados avanzados, como Amazon Macie, que lo ayuden a detectar y proteger la información confidencial almacenada en Amazon S3.
+ Si necesita módulos criptográficos validados por FIPS 140-3 para acceder a AWS través de una interfaz de línea de comandos o una API, utilice un punto final FIPS. Para obtener más información sobre los puntos de conexión de FIPS disponibles, consulte [Estándar de procesamiento de la información federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Se recomienda encarecidamente no introducir nunca información confidencial o sensible, como por ejemplo, direcciones de correo electrónico de clientes, en etiquetas o campos de formato libre, tales como el campo **Nombre**. Esto incluye cuando trabaja con Amazon MSK u otro Servicios de AWS mediante la consola, la API o AWS SDKs. AWS CLI Cualquier dato que introduzca en etiquetas o campos de formato libre utilizados para los nombres se pueden emplear para los registros de facturación o diagnóstico. Si proporciona una URL a un servidor externo, recomendamos encarecidamente que no incluya información de credenciales en la URL a fin de validar la solicitud para ese servidor.

**Topics**
+ [Cifrado de Amazon MSK](msk-encryption.md)
+ [Introducción al cifrado de Amazon MSK](msk-working-with-encryption.md)
+ [Utilice Amazon MSK APIs con puntos de enlace de VPC de interfaz](privatelink-vpc-endpoints.md)

# Cifrado de Amazon MSK
<a name="msk-encryption"></a>

Amazon MSK proporciona opciones de cifrado de datos que puede utilizar para cumplir estrictos requisitos de administración de datos. Los certificados que Amazon MSK utiliza para el cifrado deben renovarse cada 13 meses. Amazon MSK renueva automáticamente estos certificados para todos los clústeres. Los clústeres con agentes Express permanecen en el estado `ACTIVE` cuando Amazon MSK inicia la operación de actualización de certificados. En los clústeres con agentes Standard, Amazon MSK establece el estado del clúster en `MAINTENANCE` cuando inicia la operación de actualización de certificados. MSK restablece el estado a `ACTIVE` cuando finaliza la actualización. Mientras un clúster se encuentra en la operación de actualización de certificados, puede continuar con la producción y el consumo de datos, pero no puede realizar ninguna operación de actualización en este.

## Cifrado en reposo de Amazon MSK
<a name="msk-encryption-at-rest"></a>

Amazon MSK se integra con [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/) (KMS) para ofrecer cifrado transparente del servidor. Amazon MSK siempre cifra sus datos en reposo. Al crear un clúster de MSK, puede especificar la propiedad AWS KMS key que desea que Amazon MSK utilice para cifrar sus datos en reposo. Si no se especifica una clave de KMS, Amazon MSK crea una administrada por [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) y la utiliza en su nombre. Para obtener más información acerca de las claves de KMS, consulte [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) en la *Guía para desarrolladores de AWS Key Management Service *.

## Cifrado en tránsito de Amazon MSK
<a name="msk-encryption-in-transit"></a>

Amazon MSK utiliza TLS 1.2. De forma predeterminada, cifra los datos en tránsito entre los agentes de su clúster de MSK. Puede anular este valor predeterminado en el momento en que cree el clúster. 

Para la comunicación entre clientes y agentes, debe especificar una de las tres opciones siguientes:
+ Permitir solo datos cifrados TLS. Esta es la configuración predeterminada.
+ Permitir tanto datos de texto sin formato como datos cifrados TLS.
+ Permitir solo datos de texto sin formato.

Los corredores de Amazon MSK utilizan AWS Certificate Manager certificados públicos. Por lo tanto, cualquier almacén de confianza que confíe en Amazon Trust Services también confía en los certificados de los agentes de Amazon MSK.

Si bien recomendamos encarecidamente habilitar el cifrado en tránsito, puede agregar sobrecarga de CPU adicional y unos pocos milisegundos de latencia. Sin embargo, la mayoría de los casos de uso no son sensibles a estas diferencias y la magnitud del impacto depende de la configuración del clúster, los clientes y el perfil de uso. 

# Introducción al cifrado de Amazon MSK
<a name="msk-working-with-encryption"></a>

Al crear un clúster de MSK, puede especificar la configuración de cifrado en formato JSON. A continuación se muestra un ejemplo.

```
{
   "EncryptionAtRest": {
       "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/abcdabcd-1234-abcd-1234-abcd123e8e8e"
    },
   "EncryptionInTransit": {
        "InCluster": true,
        "ClientBroker": "TLS"
    }
}
```

Para `DataVolumeKMSKeyId`, puede especificar una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o la Clave administrada de AWS para MSK en su cuenta (`alias/aws/kafka`). Si no lo especifica`EncryptionAtRest`, Amazon MSK seguirá cifrando sus datos en reposo en. Clave administrada de AWS Para determinar qué clave está utilizando su clúster, envíe una solicitud `GET` o invoque la operación de la API de `DescribeCluster`. 

En `EncryptionInTransit`, el valor predeterminado de `InCluster` es true, pero puede establecerlo en false si no desea que Amazon MSK cifre sus datos a medida que pasan entre los agentes.

Para especificar el modo de cifrado de los datos en tránsito entre clientes y agentes, establezca `ClientBroker` a uno de los tres valores: `TLS`, `TLS_PLAINTEXT`, o `PLAINTEXT`.

**Topics**
+ [Especificación de la configuración de cifrado al crear un clúster de Amazon MSK](msk-working-with-encryption-cluster-create.md)
+ [Prueba del cifrado TLS de Amazon MSK](msk-working-with-encryption-test-tls.md)

# Especificación de la configuración de cifrado al crear un clúster de Amazon MSK
<a name="msk-working-with-encryption-cluster-create"></a>

En este proceso, se describe cómo especificar una configuración de cifrado al crear un clúster de Amazon MSK.

**Especificación de la configuración de cifrado al crear un clúster**

1. Guarde el contenido del ejemplo anterior en un archivo y asígnele el nombre que desee. Por ejemplo, llámalo `encryption-settings.json`.

1. Ejecute el comando `create-cluster` y use la opción `encryption-info` para señalar al archivo donde guardó su configuración JSON. A continuación se muestra un ejemplo. Sustitúyala por una versión que coincida *\$1YOUR MSK VERSION\$1* con la versión del cliente de Apache Kafka. Para obtener información sobre cómo encontrar la versión de clúster de MSK, consulte [Determinación de la versión del clúster de MSK](create-topic.md#find-msk-cluster-version). Tenga en cuenta que el uso de una versión de cliente de Apache Kafka que no sea la misma que su versión de clúster de MSK puede provocar la corrupción, la pérdida y el tiempo de inactividad de los datos de Apache Kafka.

   ```
   aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --kafka-version "{YOUR MSK VERSION}" --number-of-broker-nodes 3
   ```

   El siguiente es un ejemplo de una respuesta correcta después de ejecutar este comando.

   ```
   {
       "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/SecondTLSTest/abcdabcd-1234-abcd-1234-abcd123e8e8e",
       "ClusterName": "ExampleClusterName",
       "State": "CREATING"
   }
   ```

# Prueba del cifrado TLS de Amazon MSK
<a name="msk-working-with-encryption-test-tls"></a>

En este proceso, se describe cómo probar el cifrado TLS con Amazon MSK.

**Prueba del cifrado TLS**

1. Cree un equipo cliente siguiendo las instrucciones de [Paso 3: creación de un equipo cliente](create-client-machine.md).

1. Instale Apache Kafka en el equipo cliente.

1. En este ejemplo, usamos el almacén de confianza de JVM para comunicarnos con el clúster de MSK. Para ello, primero cree una carpeta denominada `/tmp` en el equipo cliente. Luego, vaya a la carpeta `bin` de la instalación de Apache Kafka y ejecute el siguiente comando. (Su ruta de JVM puede ser diferente).

   ```
   cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks
   ```

1. Mientras esté aún en la carpeta `bin` de la instalación de Apache Kafka en el equipo cliente, cree un archivo de texto denominado `client.properties` con el siguiente contenido.

   ```
   security.protocol=SSL
   ssl.truststore.location=/tmp/kafka.client.truststore.jks
   ```

1. Ejecute el siguiente comando en una máquina que lo tenga AWS CLI instalado y *clusterARN* reemplácelo por el ARN de su clúster.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn clusterARN
   ```

   Un resultado correcto sería como el siguiente. Guarde este resultado porque lo necesita para el siguiente paso.

   ```
   {
       "BootstrapBrokerStringTls": "a-1.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-3.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-2.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123"
   }
   ```

1. Ejecute el siguiente comando y *BootstrapBrokerStringTls* reemplácelo por uno de los puntos finales del broker que obtuvo en el paso anterior.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic TLSTestTopic
   ```

1. Abra una nueva ventana de comandos y conéctese al mismo equipo cliente. A continuación, ejecute el siguiente comando para crear un consumidor de consola.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic TLSTestTopic
   ```

1. En la ventana del productor, escriba un mensaje de texto seguido de una devolución y busque el mismo mensaje en la ventana del consumidor. Amazon MSK cifró este mensaje en tránsito.

Para obtener más información acerca de cómo configurar clientes Apache Kafka para que funcionen con datos cifrados, consulte [Configuración de clientes Kafka](https://kafka.apache.org/documentation/#security_configclients).

# Utilice Amazon MSK APIs con puntos de enlace de VPC de interfaz
<a name="privatelink-vpc-endpoints"></a>

Puede utilizar un punto de enlace de interfaz VPC, con tecnología de AWS PrivateLink, para evitar que el tráfico entre su Amazon VPC y Amazon APIs MSK salga de la red de Amazon. Los puntos finales de interfaz VPC no requieren una puerta de enlace a Internet, un dispositivo NAT, una conexión VPN o una conexión Direct AWS Connect. [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)es una AWS tecnología que permite la comunicación privada entre AWS servicios mediante una interfaz de red elástica y privada IPs en su Amazon VPC. Para obtener más información, consulte [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) e [Interface VPC Endpoints ()](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint).AWS PrivateLink

Sus aplicaciones se pueden conectar con Amazon MSK Provisioned y MSK Connect APIs mediante. AWS PrivateLink Para comenzar, cree un punto de conexión de VPC de interfaz para la API de Amazon MSK, con el fin de permitir el flujo de tráfico desde y hacia los recursos de la VPC de Amazon a través del punto de conexión de VPC de interfaz. Los puntos de conexión de VPC de interfaz con compatibilidad con FIPS están disponibles para las regiones de EE. UU. Para obtener más información, consulte [Creación de un punto de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint).

Al utilizar esta característica, los clientes de Apache Kafka pueden recuperar dinámicamente las cadenas de conexión necesarias para conectarse a los recursos de MSK aprovisionado o MSK Connect, sin atravesar Internet para obtener dichas cadenas de conexión.

Cuando cree un punto de conexión de VPC de interfaz, elija uno de los siguientes puntos de conexión de nombre de servicio:

**Para MSK aprovisionado:**
+ Los siguientes puntos de enlace con nombres de servicio ya no son compatibles con las nuevas conexiones:
  + com.amazonaws.region.kafka
  + com.amazonaws.region.kafka-fips (con FIPS habilitado)
+ El servicio de punto final de Dualstack que admite tanto el tráfico como el IPv4 siguiente IPv6 :
  + aws.api.region.kafka-api
  + aws.api.region. kafka-api-fips (habilitado para FIPS)

[Para configurar los puntos finales de doble pila, debe seguir las pautas de los puntos finales de doble pila y FIPS.](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)

Donde “region” es el nombre de la región. Elija este nombre de servicio para que funcione con MSK Provisioned-Compatible. APIs *Para obtener más información, consulte [Operaciones](https://docs.aws.amazon.com/msk/1.0/apireference/operations.html) en la versión 1.0/apireference/. https://docs.aws.amazon.com/msk/*

**Para MSK Connect:**
+ com.amazonaws.region.kafkaconnect

Donde “region” es el nombre de la región. Elija este nombre de servicio para que funcione con MSK Connect APIs compatible. Para obtener más información, consulte [Acciones](https://docs.aws.amazon.com/MSKC/latest/mskc/API_Operations.html) en la *Referencia de la API de Amazon MSK Connect*.

*Para obtener más información, incluidas step-by-step las instrucciones para crear un punto final de VPC de interfaz, consulte [Creación de un punto final de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint) en la AWS PrivateLink Guía.*

## Controle el acceso a los puntos de enlace de VPC para Amazon MSK Provisioned o MSK Connect APIs
<a name="vpc-endpoints-control-access"></a>

Las políticas de punto de conexión de VPC le permiten controlar el acceso asociando una política a un punto de conexión de VPC o utilizando campos adicionales en una política asociada a un usuario, grupo o rol de IAM para restringir el acceso para que solo se produzca a través del punto de conexión de VPC especificado. Utilice la política de ejemplo adecuada para definir los permisos de acceso para el servicio MSK aprovisionado o MSK Connect, según corresponda.

Si no adjunta una política al crear un punto de conexión, Amazon VPC adjunta una política predeterminada que le conceda acceso completo al servicio. Una política de punto de conexión no anula ni reemplaza las políticas basadas en identidad de IAM ni las políticas específicas del servicio. Se trata de una política independiente para controlar el acceso desde el punto de conexión al servicio especificado.

Para más información, consulte [Control del acceso a los servicios con puntos de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) en la *Guía de AWS PrivateLink *.

------
#### [ MSK Provisioned — VPC policy example ]

**Acceso de solo lectura**  
Esta política de ejemplo se puede asociar a un punto de conexión de VPC. (Para obtener más información, consulte Control de acceso a recursos de Amazon VPC). Restringe las acciones únicamente a las operaciones de listado y descripción a través del punto de conexión de VPC al que está asociada.

```
{
  "Statement": [
    {
      "Sid": "MSKReadOnly",
      "Principal": "*",
      "Action": [
        "kafka:List*",
        "kafka:Describe*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

**Ejemplo de política de punto de conexión de VPC para MSK aprovisionado**  
Restricción del acceso a un clúster de MSK específico

Esta política de ejemplo se puede asociar a un punto de conexión de VPC. Restringe el acceso a un clúster específico de Kafka a través del punto de conexión de VPC al que está asociada.

```
{
  "Statement": [
    {
      "Sid": "AccessToSpecificCluster",
      "Principal": "*",
      "Action": "kafka:*",
      "Effect": "Allow",
      "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/MyCluster"
    }
  ]
}
```

------
#### [ MSK Connect — VPC endpoint policy example ]

**Enumeración de conectores y creación de un conector nuevo**  
El siguiente es un ejemplo de una política de punto de conexión para MSK Connect. Esta política permite que el rol especificado enumere conectores y cree un conector nuevo.

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Sid": "MSKConnectPermissions",
            "Effect": "Allow",
            "Action": [
                "kafkaconnect:ListConnectors",
                "kafkaconnect:CreateConnector"
            ],
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/MyMSKConnectExecutionRole"
                ]
            }
        }
    ]
}
```

**Ejemplo de política de punto de conexión de VPC para MSK Connect**  
Permite únicamente solicitudes provenientes de una dirección IP específica dentro de la VPC especificada

En el siguiente ejemplo, se muestra una política que solo permite que las solicitudes procedentes de una dirección IP específica en la VPC especificada se ejecuten correctamente. Las solicitudes de otras direcciones IP devolverán un error.

```
{
    "Statement": [
        {
            "Action": "kafkaconnect:*",
            "Effect": "Allow",
            "Principal": "*",
            "Resource": "*",
            "Condition": {
                "IpAddress": {
                    "aws:VpcSourceIp": "192.0.2.123"
                },
        "StringEquals": {
                    "aws:SourceVpc": "vpc-555555555555"
                }
            }
        }
    ]
}
```

------

# Autenticación y autorización para Amazon MSK APIs
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) es una herramienta Servicio de AWS que ayuda al administrador a controlar de forma segura el acceso a los recursos. AWS Los administradores de IAM controlan quién se puede *autenticar* (iniciar sesión) y *autorizar* (tener permisos) para utilizar los recursos de Amazon MSK. La IAM es una Servicio de AWS herramienta que puede utilizar sin coste adicional.

**Topics**
+ [Cómo funciona Amazon MSK con IAM](security_iam_service-with-iam.md)
+ [Ejemplos de políticas de Amazon MSK basadas en identidades](security_iam_id-based-policy-examples.md)
+ [Roles vinculados a servicios para Amazon MSK](using-service-linked-roles.md)
+ [AWS políticas gestionadas para Amazon MSK](security-iam-awsmanpol.md)
+ [Solución de problemas de identidad y acceso de Amazon MSK](security_iam_troubleshoot.md)

# Cómo funciona Amazon MSK con IAM
<a name="security_iam_service-with-iam"></a>

Antes de utilizar IAM para administrar el acceso a Amazon MSK, debe conocer qué características de IAM se encuentran disponibles con Amazon MSK. Para obtener una visión general de cómo Amazon MSK y otros AWS servicios funcionan con IAM, consulte [AWS Servicios que funcionan con IAM en la Guía del usuario de *IAM*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html).

**Topics**
+ [Políticas basadas en identidades de Amazon MSK](security_iam_service-with-iam-id-based-policies.md)
+ [Políticas basadas en recursos de Amazon MSK](security_iam_service-with-iam-resource-based-policies.md)
+ [Autorización basada en etiquetas de Amazon MSK](security_iam_service-with-iam-tags.md)
+ [Roles de IAM de Amazon MSK](security_iam_service-with-iam-roles.md)

# Políticas basadas en identidades de Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies"></a>

Con las políticas basadas en identidades de IAM, puede especificar las acciones y los recursos permitidos o denegados, así como las condiciones en las que se permiten o deniegan las acciones. Amazon MSK admite acciones, claves de condiciones y recursos específicos. Para obtener información sobre todos los elementos que utiliza en una política JSON, consulte [Referencia de los elementos de las políticas JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) en la *Guía del usuario de IAM*.

## Acciones para las políticas basadas en identidades de Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Action` de una política JSON describe las acciones que puede utilizar para conceder o denegar el acceso en una política. Incluya acciones en una política para conceder permisos y así llevar a cabo la operación asociada.

Las acciones de políticas de Amazon MSK utilizan el siguiente prefijo antes de la acción: `kafka:`. Por ejemplo, para conceder a alguien permiso para describir un clúster de MSK con la operación de la API `DescribeCluster` de Amazon MSK, incluya la acción `kafka:DescribeCluster` en su política. Las instrucciones de la política deben incluir un elemento `Action` o un elemento `NotAction`. Amazon MSK define su propio conjunto de acciones que describen las tareas que se pueden realizar con este servicio.

Tenga en cuenta que las acciones políticas para el tema de MSK APIs usan el `kafka-cluster` prefijo antes de la acción; consulte la. [Semántica de las acciones y los recursos de la política de autorización de IAM](kafka-actions.md)

Para especificar varias acciones en una única instrucción, sepárelas con comas del siguiente modo:

```
"Action": ["kafka:action1", "kafka:action2"]
```

Puede utilizar caracteres comodín para especificar varias acciones (\$1). Por ejemplo, para especificar todas las acciones que comiencen con la palabra `Describe`, incluya la siguiente acción:

```
"Action": "kafka:Describe*"
```



Para consultar una lista de acciones de Amazon MSK, consulte [Acciones, recursos y claves de condición para Amazon Managed Streaming para Apache Kafka](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonmanagedstreamingforapachekafka.html) en la *Guía del usuario de IAM*.

## Recursos para las políticas basadas en identidades de Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Resource` de la política JSON especifica el objeto u objetos a los que se aplica la acción. Como práctica recomendada, especifique un recurso utilizando el [Nombre de recurso de Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). En el caso de las acciones que no admiten permisos por recurso, utilice un carácter comodín (\$1) para indicar que la instrucción se aplica a todos los recursos.

```
"Resource": "*"
```



El recurso de instancia de Amazon MSK tiene el siguiente ARN:

```
arn:${Partition}:kafka:${Region}:${Account}:cluster/${ClusterName}/${UUID}
```

Para obtener más información sobre el formato de ARNs, consulte [Amazon Resource Names (ARNs) y AWS Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Por ejemplo, para especificar la instancia de `CustomerMessages` en su instrucción, utilice el siguiente ARN:

```
"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/CustomerMessages/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2"
```

Para especificar todas las instancias que pertenecen a una cuenta específica, utilice el carácter comodín (\$1):

```
"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/*"
```

Algunas acciones de Amazon MSK, como las que se utilizan para crear recursos, no se pueden llevar a cabo en un recurso específico. En dichos casos, debe utilizar el carácter comodín (\$1).

```
"Resource": "*"
```

Para especificar varios recursos en una sola sentencia, sepárelos ARNs con comas. 

```
"Resource": ["resource1", "resource2"]
```

Para ver una lista de los tipos de recursos de Amazon MSK y sus tipos ARNs, consulte [Recursos definidos por Amazon Managed Streaming for Apache](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-resources-for-iam-policies) Kafka Kafka en *la Guía del usuario de IAM*. Para obtener información acerca de las acciones con las que puede especificar el ARN de cada recurso, consulte [Acciones definidas por Amazon Managed Streaming para Apache Kafka](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-actions-as-permissions).

## Claves de condición para las políticas basadas en identidades de Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

Los administradores pueden usar las políticas de AWS JSON para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Condition` especifica cuándo se ejecutan las instrucciones en función de criterios definidos. Puede crear expresiones condicionales que utilizan [operadores de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), tales como igual o menor que, para que la condición de la política coincida con los valores de la solicitud. Para ver todas las claves de condición AWS globales, consulte las claves de [contexto de condición AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*.

Amazon MSK define su propio conjunto de claves de condición y también admite el uso de algunas claves de condición globales. Para ver todas las claves de condición AWS globales, consulte las claves de [contexto de condición AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la Guía del *usuario de IAM*.



Para consultar una lista de claves de condición de Amazon MSK, consulte [Claves de condición de Amazon Managed Streaming para Apache Kafka](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-policy-keys) en la *Guía del usuario de IAM*. Para obtener más información acerca de las acciones y los recursos con los que puede utilizar una clave de condición, consulte [Acciones definidas por Amazon Managed Streaming para Apache Kafka](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-actions-as-permissions).

## Ejemplos de políticas basadas en identidades de Amazon MSK
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Para ver ejemplos de políticas basadas en identidades de Amazon MSK, consulte [Ejemplos de políticas de Amazon MSK basadas en identidades](security_iam_id-based-policy-examples.md).

# Políticas basadas en recursos de Amazon MSK
<a name="security_iam_service-with-iam-resource-based-policies"></a>

Amazon MSK admite una política de clústeres (también conocida como política basada en recursos) para su uso con los clústeres de Amazon MSK. Puede utilizar una política de clústeres para definir qué entidades principales de IAM tienen permisos entre cuentas para configurar la conectividad privada con su clúster de Amazon MSK. Si se utiliza con la autenticación de clientes de IAM, también puede utilizar la política de clústeres para definir de forma pormenorizada los permisos del plano de datos de Kafka para los clientes que se conectan.

El tamaño máximo admitido para una política de clúster es de 20 KB.

Para ver un ejemplo de cómo configurar una política de clúster, consulte [Paso 2: asociación de una política de clúster al clúster de MSK](mvpc-cluster-owner-action-policy.md). 

# Autorización basada en etiquetas de Amazon MSK
<a name="security_iam_service-with-iam-tags"></a>

Puede asociar etiquetas a clústeres de Amazon MSK. Para controlar el acceso en función de etiquetas, debe proporcionar información de las etiquetas en el [elemento de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) de una política utilizando las claves de condición `kafka:ResourceTag/key-name`, `aws:RequestTag/key-name` o `aws:TagKeys`. Para obtener información sobre el etiquetado de los recursos de Amazon MSK, consulte [Etiquetado de un clúster de Amazon MSK](msk-tagging.md).

Puede controlar el acceso al clúster únicamente con la ayuda de etiquetas. Para etiquetar temas y grupos de consumidores, debe agregar una declaración independiente en las políticas sin etiquetas.

Para ver un ejemplo de una política basada en identidad que limita el acceso a un clúster en función de las etiquetas de ese clúster, consulte [Acceso a los clústeres de Amazon MSK basados en etiquetas](security_iam_id-based-policy-examples-view-widget-tags.md).

Puede utilizar condiciones en la política basada en identidades para controlar el acceso a los recursos de Amazon MSK basados en etiquetas. El siguiente ejemplo muestra una política que permite a un usuario describir el clúster, obtener sus agentes de arranque, enumerar sus nodos de agentes, actualizarlo y eliminarlo. Sin embargo, esta política concede permisos únicamente si la etiqueta del clúster `Owner` tiene el valor del `username` de ese usuario. La segunda declaración de la siguiente política permite el acceso a los temas del clúster. La primera declaración de esta política no autoriza ningún acceso a los temas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessClusterIfOwner",
      "Effect": "Allow",
      "Action": [
        "kafka:Describe*",
        "kafka:Get*",
        "kafka:List*",
        "kafka:Update*",
        "kafka:Delete*"
      ],
      "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Owner": "${aws:username}"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "kafka-cluster:*Topic*",
        "kafka-cluster:WriteData",
        "kafka-cluster:ReadData"
      ],
      "Resource": [
        "arn:aws:kafka:us-east-1:123456789012:topic/*"
      ]
    }
  ]
}
```

------

# Roles de IAM de Amazon MSK
<a name="security_iam_service-with-iam-roles"></a>

Un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) es una entidad de la cuenta de Amazon Web Services que dispone de permisos específicos.

## Uso de credenciales temporales con Amazon MSK
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

Puede utilizar credenciales temporales para iniciar sesión con federación, asumir un rol de IAM o asumir un rol de acceso entre cuentas. Las credenciales de seguridad temporales se obtienen llamando a operaciones de AWS STS API como [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)o [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html). 

Amazon MSK admite el uso de credenciales temporales. 

## Roles vinculados a servicios
<a name="security_iam_service-with-iam-roles-service-linked"></a>

Los [roles vinculados a servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) permiten que Amazon Web Services acceda a los recursos de otros servicios para completar una acción en su nombre. Los roles vinculados a servicios aparecen en la cuenta de IAM y son propiedad del servicio. Un administrador puede ver, pero no editar, los permisos de los roles vinculados a servicios.

Amazon MSK admite roles vinculados a servicios. Para obtener más información sobre cómo crear o administrar roles vinculados a servicios de Amazon MSK, consulte [Roles vinculados a servicios para Amazon MSK](using-service-linked-roles.md).

# Ejemplos de políticas de Amazon MSK basadas en identidades
<a name="security_iam_id-based-policy-examples"></a>

De forma predeterminada, los usuarios y roles de IAM no tienen permiso para llevar a cabo operaciones de la API de Amazon MSK. Un administrador debe crear políticas de IAM que concedan permisos a los usuarios y a los roles para realizar operaciones de la API concretas en los recursos especificados que necesiten. El administrador debe adjuntar esas políticas a los usuarios o grupos de IAM que necesiten esos permisos.

Para obtener información acerca de cómo crear una política basada en identidad de IAM con estos documentos de políticas JSON de ejemplo, consulte [Creación de políticas en la pestaña JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor) en la *Guía del usuario de IAM*.

**Topics**
+ [Prácticas recomendadas relativas a políticas](security_iam_service-with-iam-policy-best-practices.md)
+ [Cómo permitir a los usuarios consultar sus propios permisos](security_iam_id-based-policy-examples-view-own-permissions.md)
+ [Acceso a un clúster de Amazon MSK](security_iam_id-based-policy-examples-access-one-cluster.md)
+ [Acceso a los clústeres de Amazon MSK basados en etiquetas](security_iam_id-based-policy-examples-view-widget-tags.md)

# Prácticas recomendadas relativas a políticas
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Las políticas basadas en identidades determinan si alguien puede crear, eliminar o acceder a los recursos de Amazon MSK de la cuenta. Estas acciones pueden generar costos adicionales para su Cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas en identidades:
+ **Comience con las políticas AWS administradas y avance hacia los permisos con privilegios mínimos**: para empezar a conceder permisos a sus usuarios y cargas de trabajo, utilice las *políticas AWS administradas* que otorgan permisos en muchos casos de uso comunes. Están disponibles en su. Cuenta de AWS Le recomendamos que reduzca aún más los permisos definiendo políticas administradas por el AWS cliente que sean específicas para sus casos de uso. Con el fin de obtener más información, consulte las [políticas administradas por AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) o las [políticas administradas por AWS para funciones de tarea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) en la *Guía de usuario de IAM*.
+ **Aplique permisos de privilegio mínimo**: cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para realizar una tarea. Para ello, debe definir las acciones que se pueden llevar a cabo en determinados recursos en condiciones específicas, también conocidos como *permisos de privilegios mínimos*. Con el fin de obtener más información sobre el uso de IAM para aplicar permisos, consulte [Políticas y permisos en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) en la *Guía del usuario de IAM*.
+ **Utilice condiciones en las políticas de IAM para restringir aún más el acceso**: puede agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puede escribir una condición de políticas para especificar que todas las solicitudes deben enviarse utilizando SSL. También puedes usar condiciones para conceder el acceso a las acciones del servicio si se utilizan a través de una acción específica Servicio de AWS, por ejemplo CloudFormation. Para obtener más información, consulte [Elementos de la política de JSON de IAM: Condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) en la *Guía del usuario de IAM*.
+ **Utiliza el analizador de acceso de IAM para validar las políticas de IAM con el fin de garantizar la seguridad y funcionalidad de los permisos**: el analizador de acceso de IAM valida políticas nuevas y existentes para que respeten el lenguaje (JSON) de las políticas de IAM y las prácticas recomendadas de IAM. El analizador de acceso de IAM proporciona más de 100 verificaciones de políticas y recomendaciones procesables para ayudar a crear políticas seguras y funcionales. Para más información, consulte [Validación de políticas con el Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) en la *Guía del usuario de IAM*.
+ **Requerir autenticación multifactor (MFA**): si tiene un escenario que requiere usuarios de IAM o un usuario raíz en Cuenta de AWS su cuenta, active la MFA para mayor seguridad. Para exigir la MFA cuando se invoquen las operaciones de la API, añada condiciones de MFA a sus políticas. Para más información, consulte [Acceso seguro a la API con MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) en la *Guía del usuario de IAM*.

Para obtener más información sobre las prácticas recomendadas de IAM, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

# Cómo permitir a los usuarios consultar sus propios permisos
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

En este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver las políticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluye permisos para completar esta acción en la consola o mediante programación mediante la API o. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Acceso a un clúster de Amazon MSK
<a name="security_iam_id-based-policy-examples-access-one-cluster"></a>

En este ejemplo, desea conceder acceso a un usuario de IAM de su cuenta de Amazon Web Services a uno de sus clústeres, `purchaseQueriesCluster`. Esta directiva permite al usuario describir el clúster, obtener sus agentes de arranque, enumerar sus nodos de agentes y actualizarlo.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"UpdateCluster",
         "Effect":"Allow",
         "Action":[
            "kafka:Describe*",
            "kafka:Get*",
            "kafka:List*",
            "kafka:Update*"
         ],
         "Resource":"arn:aws:kafka:us-east-1:012345678012:cluster/purchaseQueriesCluster/abcdefab-1234-abcd-5678-cdef0123ab01-2"
      }
   ]
}
```

------

# Acceso a los clústeres de Amazon MSK basados en etiquetas
<a name="security_iam_id-based-policy-examples-view-widget-tags"></a>

Puede utilizar condiciones en la política basada en identidades para controlar el acceso a los recursos de Amazon MSK basados en etiquetas. En este ejemplo se muestra cómo crear una directiva que permita al usuario describir el clúster, obtener sus agentes de arranque, enumerar sus nodos de agentes, actualizarla y eliminarla. Sin embargo, los permisos solo se conceden si la etiqueta de clúster `Owner` tiene el valor del nombre de usuario de dicho usuario.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessClusterIfOwner",
      "Effect": "Allow",
      "Action": [
        "kafka:Describe*",
        "kafka:Get*",
        "kafka:List*",
        "kafka:Update*",
        "kafka:Delete*"
      ],
      "Resource": "arn:aws:kafka:us-east-1:012345678012:cluster/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Owner": "${aws:username}"
        }
      }
    }
  ]
}
```

------

También puede asociar esta política al usuario de IAM en su cuenta. Si un usuario llamado `richard-roe` intenta actualizar un clúster de MSK, el clúster debe tener la etiqueta `Owner=richard-roe` o `owner=richard-roe`. De lo contrario, se le deniega el acceso. La clave de la etiqueta de condición `Owner` coincide con los nombres de las claves de condición `Owner` y `owner` porque no distinguen entre mayúsculas y minúsculas. Para obtener más información, consulte [Elementos de la política de JSON de IAM: Condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) en la *Guía del usuario de IAM*.

# Roles vinculados a servicios para Amazon MSK
<a name="using-service-linked-roles"></a>

Amazon MSK utiliza funciones vinculadas a [servicios AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) (IAM). Un rol vinculado a servicios es un tipo único de rol de IAM que se encuentra vinculado directamente a Amazon MSK. Amazon MSK predefine las funciones vinculadas al servicio e incluyen todos los permisos que el servicio requiere para llamar a otros AWS servicios en su nombre. 

Un rol vinculado a servicios simplifica la configuración de Amazon MSK porque ya no tendrá que agregar de forma manual los permisos necesarios. Amazon MSK define los permisos de sus roles vinculados a servicios. A menos que se defina lo contrario, solo Amazon MSK puede asumir sus roles. Los permisos definidos incluyen las políticas de confianza y de permisos, y que la política de permisos no se pueda asociar a ninguna otra entidad de IAM.

Para obtener información acerca de otros servicios que admiten roles vinculados a servicios, consulte [Servicios de Amazon Web Services que funcionan con IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) y busque los servicios que tengan **Sí** en la columna **Roles vinculados a servicios**. Elija una opción **Sí** con un enlace para ver la documentación acerca del rol vinculado al servicio en cuestión.

**Topics**
+ [Permisos de roles vinculados a servicios](slr-permissions.md)
+ [Creación de un rol vinculado al servicio](create-slr.md)
+ [Edición de un rol vinculado a servicios](edit-slr.md)
+ [Regiones admitidas para los roles vinculados a servicios de](slr-regions.md)

# Permisos de roles vinculados a servicios para Amazon MSK
<a name="slr-permissions"></a>

Amazon MSK usa el rol vinculado a servicios denominado **AWSServiceRoleForKafka**. Amazon MSK utiliza esta función para acceder a sus recursos y realizar operaciones como las siguientes:
+ `*NetworkInterface`: cree y administre interfaces de red en la cuenta del cliente que hagan que los clientes de la VPC del cliente puedan acceder a los agentes de clústeres.
+ `*VpcEndpoints`— administre los puntos finales de la VPC en la cuenta del cliente para que los agentes de clústeres sean accesibles a los clientes de la VPC del cliente que utilizan. AWS PrivateLink Amazon MSK usa permisos para `DescribeVpcEndpoints`, `ModifyVpcEndpoint` y `DeleteVpcEndpoints`.
+ `secretsmanager`— gestione las credenciales de los clientes con. AWS Secrets Manager
+ `GetCertificateAuthorityCertificate`: recupere el certificado para su autoridad de certificación privada.
+ `*Ipv6Addresses`— asignar y desasignar IPv6 direcciones a las interfaces de red de la cuenta del cliente para permitir la IPv6 conectividad de los clústeres de MSK.
+ `ModifyNetworkInterfaceAttribute`— modifique los atributos de la interfaz de red en la cuenta del cliente para configurar los IPv6 ajustes de conectividad del clúster de MSK.

Este rol vinculado a un servicio se adjunta a la siguiente política administrada: `KafkaServiceRolePolicy`. Para obtener actualizaciones de esta política, consulte [KafkaServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/KafkaServiceRolePolicy.html).

El rol vinculado al servicio AWSServiceRoleForKafka depende de los siguientes servicios para asumir el rol:
+ `kafka.amazonaws.com`

La política de permisos del rol permite que Amazon MSK realice las siguientes acciones en los recursos.

Debe configurar permisos para permitir a una entidad de IAM (como un usuario, grupo o rol) crear, editar o eliminar un rol vinculado a servicios. Para obtener más información, consulte [Permisos de roles vinculados a servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) en la *Guía del usuario de IAM*.

# Creación de un rol vinculado a los servicios para Amazon MSK
<a name="create-slr"></a>

No necesita crear manualmente un rol vinculado a un servicio. Cuando crea un clúster de Amazon MSK en la Consola de administración de AWS, la o la AWS API AWS CLI, Amazon MSK crea el rol vinculado al servicio por usted. 

Si elimina este rol vinculado a servicios y necesita crearlo de nuevo, puede utilizar el mismo proceso para volver a crear el rol en su cuenta. Al crear un clúster de Amazon MSK, Amazon MSK se encarga de crear de nuevo el rol vinculado a servicios en su nombre. 

# Edición de un rol vinculado a los servicios para Amazon MSK
<a name="edit-slr"></a>

Amazon MSK no permite editar el rol vinculado a servicios de AWSServiceRoleForKafka. Después de crear un rol vinculado al servicio, no podrá cambiar el nombre del rol, ya que varias entidades podrían hacer referencia al rol. Sin embargo, sí puede editar la descripción del rol con IAM. Para obtener más información, consulte [Edición de un rol vinculado a servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role) en la *Guía del usuario de IAM*.

# Regiones admitidas para los roles vinculados a servicios de Amazon MSK
<a name="slr-regions"></a>

Amazon MSK admite el uso de roles vinculados a servicios en todas las regiones en las que se encuentra disponible el servicio. Para obtener más información, consulte [AWS Regiones y puntos de conexión](https://docs.aws.amazon.com/general/latest/gr/rande.html).

# AWS políticas gestionadas para Amazon MSK
<a name="security-iam-awsmanpol"></a>

Una política AWS administrada es una política independiente creada y administrada por. AWS AWS Las políticas administradas están diseñadas para proporcionar permisos para muchos casos de uso comunes, de modo que pueda empezar a asignar permisos a usuarios, grupos y funciones.

Ten en cuenta que es posible que las políticas AWS administradas no otorguen permisos con privilegios mínimos para tus casos de uso específicos, ya que están disponibles para que los usen todos los AWS clientes. Se recomienda definir [políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) específicas para sus casos de uso a fin de reducir aún más los permisos.

No puedes cambiar los permisos definidos en AWS las políticas administradas. Si AWS actualiza los permisos definidos en una política AWS administrada, la actualización afecta a todas las identidades principales (usuarios, grupos y roles) a las que está asociada la política. AWS es más probable que actualice una política AWS administrada cuando Servicio de AWS se lance una nueva o cuando estén disponibles nuevas operaciones de API para los servicios existentes.

Para obtener más información, consulte [Políticas administradas por AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la *Guía del usuario de IAM*.

# AWS política gestionada: Amazon MSKFull Access
<a name="security-iam-awsmanpol-AmazonMSKFullAccess"></a>

Esta política otorga permisos administrativos que brindan a una entidad principal acceso completo a todas las acciones de Amazon MSK. Los permisos de esta política se agrupan de la siguiente manera:
+ Los permisos de Amazon MSK permiten todas las acciones de Amazon MSK.
+ **Permisos de `Amazon EC2`**: en esta política, son obligatorios para validar los recursos transferidos en una solicitud de API. Esto es para garantizar que Amazon MSK pueda utilizar correctamente los recursos con un clúster. El resto de los permisos de Amazon EC2 de esta política permiten a Amazon MSK crear AWS los recursos necesarios para que pueda conectarse a sus clústeres.
+ **Permisos de `AWS KMS`**: se utilizan durante las llamadas a la API para validar los recursos transferidos en una solicitud. Son necesarios para que Amazon MSK pueda utilizar la clave pasada con el clúster de Amazon MSK.
+ **Permisos de `CloudWatch Logs, Amazon S3, and Amazon Data Firehose`**: son obligatorios para que Amazon MSK garantice que se pueda acceder a los destinos de entrega de registros y que sean válidos para el uso de los registros de los agentes.
+ **Permisos de `IAM`**: son obligatorios para que Amazon MSK pueda crear un rol vinculado a los servicios en su cuenta y para permitirle transferir un rol de ejecución de servicios a Amazon MSK.

------
#### [ JSON ]

****  

```
    {
    	"Version":"2012-10-17",		 	 	 
    	"Statement": [{
    			"Effect": "Allow",
    			"Action": [
    				"kafka:*",
    				"ec2:DescribeSubnets",
    				"ec2:DescribeVpcs",
    				"ec2:DescribeSecurityGroups",
    				"ec2:DescribeRouteTables",
    				"ec2:DescribeVpcEndpoints",
    				"ec2:DescribeVpcAttribute",
    				"kms:DescribeKey",
    				"kms:CreateGrant",
    				"logs:CreateLogDelivery",
    				"logs:GetLogDelivery",
    				"logs:UpdateLogDelivery",
    				"logs:DeleteLogDelivery",
    				"logs:ListLogDeliveries",
    				"logs:PutResourcePolicy",
    				"logs:DescribeResourcePolicies",
    				"logs:DescribeLogGroups",
    				"S3:GetBucketPolicy",
    				"firehose:TagDeliveryStream"
    			],
    			"Resource": "*"
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateVpcEndpoint"
    			],
    			"Resource": [
    				"arn:*:ec2:*:*:vpc/*",
    				"arn:*:ec2:*:*:subnet/*",
    				"arn:*:ec2:*:*:security-group/*"
    			]
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateVpcEndpoint"
    			],
    			"Resource": [
    				"arn:*:ec2:*:*:vpc-endpoint/*"
    			],
    			"Condition": {
    				"StringEquals": {
    					"aws:RequestTag/AWSMSKManaged": "true"
    				},
    				"StringLike": {
    					"aws:RequestTag/ClusterArn": "*"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateTags"
    			],
    			"Resource": "arn:*:ec2:*:*:vpc-endpoint/*",
    			"Condition": {
    				"StringEquals": {
    					"ec2:CreateAction": "CreateVpcEndpoint"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:DeleteVpcEndpoints"
    			],
    			"Resource": "arn:*:ec2:*:*:vpc-endpoint/*",
    			"Condition": {
    				"StringEquals": {
    					"ec2:ResourceTag/AWSMSKManaged": "true"
    				},
    				"StringLike": {
    					"ec2:ResourceTag/ClusterArn": "*"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:PassRole",
    			"Resource": "*",
    			"Condition": {
    				"StringEquals": {
    					"iam:PassedToService": "kafka.amazonaws.com"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:CreateServiceLinkedRole",
    			"Resource": "arn:aws:iam::*:role/aws-service-role/kafka.amazonaws.com/AWSServiceRoleForKafka*",
    			"Condition": {
    				"StringLike": {
    					"iam:AWSServiceName": "kafka.amazonaws.com"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"iam:AttachRolePolicy",
    				"iam:PutRolePolicy"
    			],
    			"Resource": "arn:aws:iam::*:role/aws-service-role/kafka.amazonaws.com/AWSServiceRoleForKafka*"
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:CreateServiceLinkedRole",
    			"Resource": "arn:aws:iam::*:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery*",
    			"Condition": {
    				"StringLike": {
    					"iam:AWSServiceName": "delivery.logs.amazonaws.com"
    				}
    			}
    		}

    	]
    }
```

------

# AWS política gestionada: Amazon MSKRead OnlyAccess
<a name="security-iam-awsmanpol-AmazonMSKReadOnlyAccess"></a>

Esta política otorga permisos de solo lectura que permiten a los usuarios ver información en Amazon MSK. Las entidades principales con esta política asociada no pueden realizar actualizaciones ni eliminar los recursos existentes, ni pueden crear nuevos recursos de Amazon MSK. Por ejemplo, las entidades principales con estos permisos pueden ver la lista de configuraciones y clústeres asociados a su cuenta, pero no pueden cambiar la configuración ni los ajustes de ningún clúster. Los permisos de esta política se agrupan de la siguiente manera:
+ **Permisos de `Amazon MSK`**: permiten enumerar los recursos de Amazon MSK, describirlos y obtener información sobre ellos.
+ **`Amazon EC2`permisos**: se utilizan para describir la VPC de Amazon, las subredes y ENIs los grupos de seguridad asociados a un clúster.
+ **Permisos de `AWS KMS`**: se utiliza para describir la clave asociada al clúster.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "kafka:Describe*",
                "kafka:List*",
                "kafka:Get*",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "kms:DescribeKey"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

# AWS política gestionada: KafkaServiceRolePolicy
<a name="security-iam-awsmanpol-KafkaServiceRolePolicy"></a>

No puede adjuntarse KafkaServiceRolePolicy a sus entidades de IAM. Esta política se encuentra asociada a un rol vinculado a servicios que permite a Amazon MSK realizar acciones como administrar puntos de conexión (conectores) de VPC en clústeres de MSK, administrar interfaces de red y administrar credenciales de clúster con AWS Secrets Manager. Para obtener más información, consulte [Roles vinculados a servicios para Amazon MSK](using-service-linked-roles.md).

En la siguiente tabla se describen las actualizaciones de la política KafkaServiceRolePolicy gestionada desde que Amazon MSK comenzó a rastrear los cambios.


| Cambio | Descripción | Fecha | 
| --- | --- | --- | 
|  [IPv6 soporte de conectividad agregado a KafkaServiceRolePolicy](#security-iam-awsmanpol-KafkaServiceRolePolicy): actualización a una política existente  |  Amazon MSK agregó permisos KafkaServiceRolePolicy para habilitar la IPv6 conectividad de los clústeres de MSK. Estos permisos permiten a Amazon MSK asignar y desasignar IPv6 direcciones a las interfaces de red y modificar los atributos de las interfaces de red en la cuenta del cliente.  | 17 de noviembre de 2025 | 
|  [KafkaServiceRolePolicy](#security-iam-awsmanpol-KafkaServiceRolePolicy): actualización de una política actual  |  Amazon MSK agregó permisos para admitir la conectividad privada con varias VPC.  | 8 de marzo de 2023 | 
|  Amazon MSK comenzó a hacer un seguimiento de los cambios  |  Amazon MSK ha empezado a realizar un seguimiento de los cambios de la política KafkaServiceRolePolicy gestionada.  | 8 de marzo de 2023 | 

# AWS política gestionada: AWSMSKReplicator ExecutionRole
<a name="security-iam-awsmanpol-AWSMSKReplicatorExecutionRole"></a>

La política `AWSMSKReplicatorExecutionRole` concede permisos al Replicador Amazon MSK para replicar datos entre los clústeres de MSK. Los permisos de esta política se agrupan de la siguiente manera:
+ **`cluster`**: otorga al Replicador Amazon MSK permisos para conectarse al clúster con la autenticación de IAM. También concede permisos para describir y modificar el clúster.
+ **`topic`**: otorga al Replicador Amazon MSK permisos para describir, crear y modificar un tema, así como para modificar la configuración dinámica del tema.
+ **`consumer group`**: otorga al Replicador Amazon MSK permisos para describir y modificar grupos de consumidores, leer y escribir datos de un clúster de MSK y eliminar temas internos que creó el Replicador.

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "ClusterPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:Connect",
				"kafka-cluster:DescribeCluster",
				"kafka-cluster:AlterCluster",
				"kafka-cluster:DescribeTopic",
				"kafka-cluster:CreateTopic",
				"kafka-cluster:AlterTopic",
				"kafka-cluster:WriteData",
				"kafka-cluster:ReadData",
				"kafka-cluster:AlterGroup",
				"kafka-cluster:DescribeGroup",
				"kafka-cluster:DescribeTopicDynamicConfiguration",
				"kafka-cluster:AlterTopicDynamicConfiguration",
				"kafka-cluster:WriteDataIdempotently"
			],
			"Resource": [
				"arn:aws:kafka:*:*:cluster/*"
			]
		},
		{
			"Sid": "TopicPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:DescribeTopic",
				"kafka-cluster:CreateTopic",
				"kafka-cluster:AlterTopic",
				"kafka-cluster:WriteData",
				"kafka-cluster:ReadData",
				"kafka-cluster:DescribeTopicDynamicConfiguration",
				"kafka-cluster:AlterTopicDynamicConfiguration",
				"kafka-cluster:AlterCluster"
			],
			"Resource": [
				"arn:aws:kafka:*:*:topic/*/*"
			]
		},
		{
			"Sid": "GroupPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:AlterGroup",
				"kafka-cluster:DescribeGroup"
			],
			"Resource": [
				"arn:aws:kafka:*:*:group/*/*"
			]
		}
	]
}
```

------

# Amazon MSK actualiza las políticas AWS gestionadas
<a name="security-iam-awsmanpol-updates"></a>

Consulta los detalles sobre las actualizaciones de las políticas AWS gestionadas de Amazon MSK desde que este servicio comenzó a realizar el seguimiento de estos cambios.


| Cambio | Descripción | Fecha | 
| --- | --- | --- | 
|  [WriteDataIdempotently permiso agregado a AWSMSKReplicator ExecutionRole](security-iam-awsmanpol-AWSMSKReplicatorExecutionRole.md): actualización a una política existente  |  Amazon MSK ha añadido WriteDataIdempotently permisos a la AWSMSKReplicator ExecutionRole política para admitir la replicación de datos entre clústeres de MSK.  | 12 de marzo de 2024 | 
|  [AWSMSKReplicatorExecutionRole](security-iam-awsmanpol-AWSMSKReplicatorExecutionRole.md): política nueva  |  Amazon MSK agregó una AWSMSKReplicator ExecutionRole política para admitir Amazon MSK Replicator.  | 4 de diciembre de 2023 | 
|  [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md): actualización de una política existente  |  Amazon MSK agregó permisos para admitir el Replicador MSK de Amazon.  | 28 de septiembre de 2023 | 
|  [KafkaServiceRolePolicy](security-iam-awsmanpol-KafkaServiceRolePolicy.md): actualización de una política actual  |  Amazon MSK agregó permisos para admitir la conectividad privada con varias VPC.  | 8 de marzo de 2023 | 
| [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md): actualización de una política existente |  Amazon MSK agregó nuevos permisos de Amazon EC2 para permitir la conexión a un clúster.  | 30 de noviembre de 2021 | 
|  [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md): actualización de una política existente  |  Amazon MSK agregó un nuevo permiso que le permite describir las tablas de enrutamiento de Amazon EC2.  | 19 de noviembre de 2021 | 
|  Amazon MSK comenzó a hacer un seguimiento de los cambios  |  Amazon MSK comenzó a realizar un seguimiento de los cambios en sus políticas AWS gestionadas.  | 19 de noviembre de 2021 | 

# Solución de problemas de identidad y acceso de Amazon MSK
<a name="security_iam_troubleshoot"></a>

Utilice la siguiente información para diagnosticar y solucionar los problemas habituales que pueden surgir cuando se trabaja con Amazon MSK e IAM.

**Topics**
+ [No tengo autorización para realizar una acción en Amazon MSK](#security_iam_troubleshoot-no-permissions)

## No tengo autorización para realizar una acción en Amazon MSK
<a name="security_iam_troubleshoot-no-permissions"></a>

Si Consola de administración de AWS le indica que no está autorizado a realizar una acción, debe ponerse en contacto con su administrador para obtener ayuda. El administrador es la persona que le proporcionó las credenciales de inicio de sesión.

En el siguiente ejemplo, el error se produce cuando el usuario de IAM `mateojackson` intenta utilizar la consola para eliminar un clúster, pero no tiene permisos `kafka:DeleteCluster`.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: kafka:DeleteCluster on resource: purchaseQueriesCluster
```

En este caso, Mateo pide a su administrador que actualice sus políticas de forma que pueda obtener acceso al recurso `purchaseQueriesCluster` mediante la acción `kafka:DeleteCluster`.

# Autenticación y autorización para Apache Kafka APIs
<a name="kafka_apis_iam"></a>

Puede utilizar IAM para autenticar clientes y permitir o denegar acciones de Apache Kafka. Como alternativa, puede usar TLS o SASL/SCRAM para autenticar clientes y Apache Kafka ACLs para permitir o denegar acciones.

Para obtener información sobre cómo controlar quién puede realizar las [operaciones de Amazon MSK](https://docs.aws.amazon.com/msk/1.0/apireference/operations.html) en su clúster, consulte [Autenticación y autorización para Amazon MSK APIs](security-iam.md).

**Topics**
+ [Control de acceso de IAM](iam-access-control.md)
+ [Autenticación TLS mutua de clientes para Amazon MSK](msk-authentication.md)
+ [Autenticación de credenciales de inicio de sesión con AWS Secrets Manager](msk-password.md)
+ [Apache Kafka ACLs](msk-acls.md)

# Control de acceso de IAM
<a name="iam-access-control"></a>

El control de acceso de IAM para Amazon MSK le permite gestionar tanto la autenticación como la autorización de su clúster de MSK. Esto elimina la necesidad de utilizar un mecanismo de autenticación y otro mecanismo de autorización. Por ejemplo, cuando un cliente intenta escribir en su clúster, Amazon MSK utiliza IAM para verificar si el cliente es una identidad autenticada y si está autorizado para producir en su clúster.

El control de acceso de IAM funciona para clientes Java y no Java, incluidos los clientes de Kafka escritos en Python JavaScript, Go y.NET. El control de acceso mediante IAM para clientes que no son Java está disponible para clústeres de MSK con la versión 2.7.1 de Kafka o posterior.

Para hacer posible el control de acceso de IAM, Amazon MSK realiza pequeñas modificaciones en el código fuente de Apache Kafka. Estas modificaciones no supondrán una diferencia notable en su experiencia con Apache Kafka. Amazon MSK registra los eventos de acceso para que pueda auditarlos.

Puede invocar la ACL de Apache Kafka APIs para un clúster de MSK que utilice el control de acceso de IAM. Sin embargo, Apache Kafka no afecta a la ACLs autorización de las identidades de IAM. Debe utilizar políticas de IAM para controlar el acceso de las identidades de IAM.

**Consideraciones importantes**  
Cuando utilice el control de acceso mediante IAM con el clúster de MSK, tenga en cuenta las siguientes consideraciones importantes:  
El control de acceso de IAM no se aplica a los nodos de Apache. ZooKeeper Para obtener más información sobre cómo puede controlar el acceso a estos nodos, consulte [Controle el acceso a ZooKeeper los nodos de Apache en su clúster de Amazon MSK](zookeeper-security.md).
La configuración `allow.everyone.if.no.acl.found` de Apache Kafka no tiene efecto si el clúster utiliza el control de acceso de IAM. 
Puede invocar la ACL de Apache Kafka APIs para un clúster de MSK que utilice el control de acceso de IAM. Sin embargo, Apache Kafka no afecta a la ACLs autorización de las identidades de IAM. Debe utilizar políticas de IAM para controlar el acceso de las identidades de IAM.

# Cómo funciona el control de acceso de IAM para Amazon MSK
<a name="how-to-use-iam-access-control"></a>

Para utilizar el control de acceso de IAM para Amazon MSK, lleve a cabo los pasos que se describen en detalle en los siguientes temas:
+ [Creación de un clúster de Amazon MSK que utilice el control de acceso de IAM](create-iam-access-control-cluster-in-console.md) 
+ [Configuración de clientes para el control de acceso de IAM](configure-clients-for-iam-access-control.md)
+ [Creación de políticas de autorización para el rol de IAM](create-iam-access-control-policies.md)
+ [Obtener los agentes de arranque para el control de acceso de IAM](get-bootstrap-brokers-for-iam.md)

# Creación de un clúster de Amazon MSK que utilice el control de acceso de IAM
<a name="create-iam-access-control-cluster-in-console"></a>

En esta sección se explica cómo puede utilizar la Consola de administración de AWS API o la AWS CLI para crear un clúster de Amazon MSK que utilice el control de acceso de IAM. Para obtener información sobre cómo activar el control de acceso de IAM en un clúster existente, consulte [Actualización de la configuración de seguridad de un clúster de Amazon MSK](msk-update-security.md).

**Úselo Consola de administración de AWS para crear un clúster que utilice el control de acceso de IAM**

1. Abra la consola de Amazon MSK en [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/).

1. Elija **Create cluster**.

1. Elija **Crear clúster con configuración personalizada**.

1. En la sección **Autenticación**, elija **Control de acceso de IAM**.

1. Complete el resto del flujo de trabajo para crear un clúster.

**Utilice la API o la AWS CLI para crear un clúster que utilice el control de acceso de IAM**
+ Para crear un clúster con el control de acceso de IAM habilitado, utilice la [CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster)API o el comando CLI [create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/create-cluster.html) y pase el siguiente JSON para `ClientAuthentication` el parámetro:. `"ClientAuthentication": { "Sasl": { "Iam": { "Enabled": true } }` 

# Configuración de clientes para el control de acceso de IAM
<a name="configure-clients-for-iam-access-control"></a>

Para permitir que los clientes se comuniquen con un clúster de MSK que utiliza el control de acceso de IAM, elija uno de estos mecanismos:
+ Configuración de clientes que no son de Java mediante un mecanismo SASL\$1OAUTHBEARER
+ Configuración del cliente Java mediante SASL\$1OAUTHBEARER un mecanismo o AWS\$1MSK\$1IAM mecanismo

## Utilice el SASL\$1OAUTHBEARER mecanismo para configurar IAM
<a name="configure-clients-for-iam-access-control-sasl-oauthbearer"></a>

1. Edite el archivo de configuración client.properties con el siguiente ejemplo de cliente de Kafka en Python. Los cambios de configuración son parecidos en otros idiomas.

   ```
   from kafka import KafkaProducer
   from kafka.errors import KafkaError
   from kafka.sasl.oauth import AbstractTokenProvider
   import socket
   import time
   from aws_msk_iam_sasl_signer import MSKAuthTokenProvider
   
   class MSKTokenProvider():
       def token(self):
           token, _ = MSKAuthTokenProvider.generate_auth_token('<my Región de AWS>')
           return token
   
   tp = MSKTokenProvider()
   
   producer = KafkaProducer(
       bootstrap_servers='<myBootstrapString>',
       security_protocol='SASL_SSL',
       sasl_mechanism='OAUTHBEARER',
       sasl_oauth_token_provider=tp,
       client_id=socket.gethostname(),
   )
   
   topic = "<my-topic>"
   while True:
       try:
           inp=input(">")
           producer.send(topic, inp.encode())
           producer.flush()
           print("Produced!")
       except Exception:
           print("Failed to send message:", e)
   
   producer.close()
   ```

1. Descargue la biblioteca auxiliar para el lenguaje de configuración que haya elegido y siga las instrucciones de la sección *Introducción* de la página principal de la biblioteca correspondiente.
   + JavaScript: [https://github.com/aws/aws-msk-iam-sasl-signer-js \$1getting -started](https://github.com/aws/aws-msk-iam-sasl-signer-js#getting-started)
   + Python: [https://github.com/aws/aws-msk-iam-sasl-signer-python](https://github.com/aws/aws-msk-iam-sasl-signer-python#get-started) \$1get -started
   + [Go: -signer-go \$1getting -started https://github.com/aws/ aws-msk-iam-sasl](https://github.com/aws/aws-msk-iam-sasl-signer-go#getting-started)
   + [.NET: -signer-net \$1getting -started https://github.com/aws/ aws-msk-iam-sasl](https://github.com/aws/aws-msk-iam-sasl-signer-net#getting-started)
   + JAVA: el SASL\$1OAUTHBEARER soporte para Java está disponible a través del archivo jar [https://github.com/aws/aws-msk-iam-auth/releases](https://github.com/aws/aws-msk-iam-auth/releases)

## Utilice el AWS\$1MSK\$1IAM mecanismo personalizado de MSK para configurar IAM
<a name="configure-clients-for-iam-access-control-msk-iam"></a>

1. Agregue la línea siguiente al archivo `client.properties`. *<PATH\$1TO\$1TRUST\$1STORE\$1FILE>*Sustitúyala por la ruta completa al archivo del almacén de confianza del cliente.
**nota**  
Si no desea utilizar un certificado específico, puede eliminar `ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>` del archivo `client.properties`. Cuando no especifica un valor para `ssl.truststore.location`, el proceso de Java utiliza el certificado predeterminado.

   ```
   ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>
   security.protocol=SASL_SSL
   sasl.mechanism=AWS_MSK_IAM
   sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
   sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
   ```

   Para usar un perfil con nombre que haya creado para AWS las credenciales, inclúyalo `awsProfileName="your profile name";` en el archivo de configuración del cliente. Para obtener información sobre los perfiles con [nombre, consulte Perfiles](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) con nombre en la AWS CLI documentación.

1. Descargue el último archivo [aws-msk-iam-auth](https://github.com/aws/aws-msk-iam-auth/releases)JAR estable y colóquelo en la ruta de clases. Si usa Maven, agregue la siguiente dependencia y ajuste el número de versión según sea necesario:

   ```
   <dependency>
       <groupId>software.amazon.msk</groupId>
       <artifactId>aws-msk-iam-auth</artifactId>
       <version>1.0.0</version>
   </dependency>
   ```

El complemento de cliente de Amazon MSK es de código abierto y cuenta con la licencia Apache 2.0.

# Creación de políticas de autorización para el rol de IAM
<a name="create-iam-access-control-policies"></a>

Asocie una política de autorización al rol de IAM que corresponda al cliente. En una política de autorización, se especifican las acciones que se van a permitir o denegar para el rol. Si su cliente está en una instancia de Amazon EC2, asocie la política de autorización al rol de IAM de esa instancia de Amazon EC2. Como alternativa, puede configurar su cliente para que utilice un perfil con nombre y, a continuación, asociar la política de autorización al rol de ese perfil con nombre. [Configuración de clientes para el control de acceso de IAM](configure-clients-for-iam-access-control.md) describe cómo configurar un cliente para utilizar un perfil con nombre asignado.

Para obtener más información sobre cómo crear una política de IAM, consulte [Creación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html). 

A continuación se muestra un ejemplo de política de autorización para un clúster denominado MyTestCluster. Para entender la semántica de los elementos `Action` y `Resource`, consulte [Semántica de las acciones y los recursos de la política de autorización de IAM](kafka-actions.md).

**importante**  
Los cambios que realice en una política de IAM se reflejan en el IAM APIs e inmediatamente. AWS CLI Sin embargo, puede pasar un tiempo considerable hasta que el cambio en la política surta efecto. En la mayoría de los casos, los cambios en la política entran en vigor en menos de un minuto. En ocasiones, las condiciones de la red pueden aumentar la demora.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:111122223333:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:group/MyTestCluster/*"
            ]
        }
    ]
}
```

------

Para obtener información sobre cómo crear una política con elementos de acción que se correspondan con los casos de uso habituales de Apache Kafka, como la producción y el consumo de datos, consulte [Casos de uso habituales de la política de autorización de clientes](iam-access-control-use-cases.md).

[En las versiones 2.8.0 y posteriores de Kafka, el **WriteDataIdempotently**permiso está obsoleto (KIP-679).](https://cwiki.apache.org/confluence/display/KAFKA/KIP-679%3A+Producer+will+enable+the+strongest+delivery+guarantee+by+default) Se utiliza `enable.idempotence = true` de forma predeterminada. Por lo tanto, para las versiones 2.8.0 y posteriores de Kafka, IAM no ofrece la misma funcionalidad que Kafka. ACLs No es posible `WriteDataIdempotently` en un tema si se proporciona únicamente acceso de `WriteData` a ese tema. Esto no afecta al caso en el que se proporciona `WriteData` a **TODOS** los temas. En ese caso, `WriteDataIdempotently` está permitido. Esto se debe a las diferencias en la implementación de la lógica de IAM y en la forma en que se implementa la Kafka. ACLs Además, la escritura idempotente en un tema también requiere acceso a `transactional-ids`.

Para solucionar esta limitación, se recomienda utilizar una política similar a la que se muestra a continuación.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster",
                "kafka-cluster:WriteDataIdempotently"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/TestTopic",
                "arn:aws:kafka:us-east-1:123456789012:transactional-id/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*"
            ]
        }
    ]
}
```

------

En este caso, `WriteData` permite escribir en `TestTopic` y, al mismo tiempo, `WriteDataIdempotently` permite escrituras idempotentes en el clúster. Esta política también agrega acceso a los recursos de `transactional-id` que serán necesarios.

Dado que `WriteDataIdempotently` es un permiso de clúster, no se puede utilizar en los temas. Si `WriteDataIdempotently` se restringe al nivel de tema, esta política no funcionará.

# Obtener los agentes de arranque para el control de acceso de IAM
<a name="get-bootstrap-brokers-for-iam"></a>

Consulte [Obtención de agentes de arranque para un clúster de Amazon MSK](msk-get-bootstrap-brokers.md).

# Semántica de las acciones y los recursos de la política de autorización de IAM
<a name="kafka-actions"></a>

**nota**  
Para los clústeres que ejecutan la versión 3.8 o posterior de Apache Kafka, el control de acceso de IAM admite la WriteTxnMarkers API para finalizar las transacciones. En el caso de los clústeres que ejecutan versiones de Kafka anteriores a la 3.8, el control de acceso de IAM no admite ni siquiera las acciones internas del clúster. WriteTxnMarkers En estas versiones anteriores, para finalizar las transacciones, utiliza la autenticación SCRAM o mTLS con la autenticación adecuada ACLs en lugar de la autenticación de IAM.

En esta sección se explica la semántica de los elementos de acción y recursos que puede utilizar en una política de autorización de IAM. Para ver una política de ejemplo, consulte [Creación de políticas de autorización para el rol de IAM](create-iam-access-control-policies.md).

## Acciones de la política de autorización
<a name="actions"></a>

En la siguiente tabla se enumeran las acciones que puede incluir en una política de autorización cuando utiliza el control de acceso de IAM para Amazon MSK. Si incluye en su política de autorización una acción de la columna *Acción* de la tabla, también debe incluir las acciones correspondientes de la columna *Acciones obligatorias*. 


| Action | Description (Descripción) | Acciones obligatorias | Recursos necesarios de  | Aplicable a los clústeres sin servidor | 
| --- | --- | --- | --- | --- | 
| kafka-cluster:Connect | Otorga permiso para conectarse y autenticarse en el clúster. | Ninguno | clúster | Sí | 
| kafka-cluster:DescribeCluster | Otorga permiso para describir varios aspectos del clúster, equivalente a la ACL DESCRIBE CLUSTER de Apache Kafka. |  `kafka-cluster:Connect`  | clúster | Sí | 
| kafka-cluster:AlterCluster | Otorga permiso para alterar varios aspectos del clúster, equivalente a la ACL ALTER CLUSTER de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeCluster`  | clúster | No | 
| kafka-cluster:DescribeClusterDynamicConfiguration | Otorga permiso para describir la configuración dinámica de un clúster, equivalente a la ACL de CLÚSTER DESCRIBE\$1CONFIGS de Apache Kafka. |  `kafka-cluster:Connect`  | clúster | No | 
| kafka-cluster:AlterClusterDynamicConfiguration | Otorga permiso para modificar la configuración dinámica de un clúster, equivalente a la ACL de CLÚSTER ALTER\$1CONFIGS de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | clúster | No | 
| kafka-cluster:WriteDataIdempotently | Otorga permiso para escribir datos idempotentemente en un clúster, equivalente a la ACL de CLÚSTER IDEMPOTENT\$1WRITE de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:WriteData`  | clúster | Sí | 
| kafka-cluster:CreateTopic | Otorga permiso para crear temas en un clúster, lo que equivale a la ACL CREATE de Apache Kafka. CLUSTER/TOPIC  |  `kafka-cluster:Connect`  | tema | Sí | 
| kafka-cluster:DescribeTopic | Otorga permiso para describir temas en un clúster, equivalente a la ACL DESCRIBE TOPIC de Apache Kafka. |  `kafka-cluster:Connect`  | tema | Sí | 
| kafka-cluster:AlterTopic | Otorga permiso para modificar temas en un clúster, equivalente a la ACL ALTER TOPIC de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | tema | Sí | 
| kafka-cluster:DeleteTopic | Otorga permiso para eliminar temas de un clúster, equivalente a la ACL DELETE TOPIC de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | tema | Sí | 
| kafka-cluster:DescribeTopicDynamicConfiguration | Otorga permiso para describir la configuración dinámica de temas en un clúster, equivalente a la ACL DESCRIBE\$1CONFIGS TOPIC de Apache Kafka. |  `kafka-cluster:Connect`  | tema | Sí | 
| kafka-cluster:AlterTopicDynamicConfiguration | Otorga permiso para modificar la configuración dinámica de temas en un clúster, equivalente a la ACL de TEMA ALTER\$1CONFIGS de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration`  | tema | Sí | 
| kafka-cluster:ReadData | Otorga permiso para leer datos de temas de un clúster, equivalente a la ACL READ TOPIC de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterGroup`  | tema | Sí | 
| kafka-cluster:WriteData | Otorga permiso para escribir datos en temas de un clúster, equivalente a la ACL WRITE TOPIC de Apache Kafka |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | tema | Sí | 
| kafka-cluster:DescribeGroup | Otorga permiso para describir grupos en un clúster, equivalente a la ACL DESCRIBE GROUP de Apache Kafka. |  `kafka-cluster:Connect`  | grupo | Sí | 
| kafka-cluster:AlterGroup | Otorga permiso para unirse a grupos en un clúster, equivalente a la ACL READ GROUP de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | grupo | Sí | 
| kafka-cluster:DeleteGroup | Otorga permiso para eliminar grupos de un clúster, equivalente a la ACL DELETE GROUP de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | grupo | Sí | 
| kafka-cluster:DescribeTransactionalId | Otorga permiso para describir las transacciones IDs en un clúster, lo que equivale a la ACL DESCRIBE TRANSACTIONAL\$1ID de Apache Kafka. |  `kafka-cluster:Connect`  | transactional-id | Sí | 
| kafka-cluster:AlterTransactionalId | Otorga permiso para modificar las transacciones IDs en un clúster, lo que equivale a la ACL WRITE TRANSACTIONAL\$1ID de Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:WriteData`  | transactional-id | Sí | 

Puede utilizar el carácter comodín asterisco (\$1) cualquier número de veces en una acción después de los dos puntos. A continuación se muestran algunos ejemplos.
+ `kafka-cluster:*Topic` significa `kafka-cluster:CreateTopic`, `kafka-cluster:DescribeTopic`, `kafka-cluster:AlterTopic` y `kafka-cluster:DeleteTopic`. No incluye `kafka-cluster:DescribeTopicDynamicConfiguration` ni `kafka-cluster:AlterTopicDynamicConfiguration`.
+ `kafka-cluster:*` se refiere a todos los permisos.

## Recursos de la política de autorización
<a name="msk-iam-resources"></a>

En la siguiente tabla se muestran los cuatro tipos de recursos que puede utilizar en una política de autorización cuando utiliza el control de acceso de IAM para Amazon MSK. Puede obtener el nombre de recurso de Amazon (ARN) del clúster desde Consola de administración de AWS o mediante la [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API o el comando [AWS CLI describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html). A continuación, puede usar el ARN del clúster para crear el tema, el grupo y el ID de transacción. ARNs Para especificar un recurso en una política de autorización, se utiliza el ARN de ese recurso.


| Recurso | Formato de ARN | 
| --- | --- | 
| Clúster | arn:aws:kafka: ::cluster//regionaccount-idcluster-namecluster-uuid | 
| Topic | arn:aws:kafka: region :topic///account-idcluster-namecluster-uuidtopic-name | 
| Group | arn:aws:kafka: region ::group///account-idcluster-namecluster-uuidgroup-name | 
| ID de transacción | arn:aws:kafka: region ::transactional-id///account-idcluster-namecluster-uuidtransactional-id | 

Puede utilizar el comodín asterisco (\$1) cualquier número de veces en cualquier parte del ARN que venga después de `:cluster/`, `:topic/`, `:group/` y `:transactional-id/`. A continuación, se muestran algunos ejemplos de cómo puede utilizar el carácter comodín asterisco (\$1) para hacer referencia a varios recursos:
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*`: todos los temas de cualquier clúster con nombre, independientemente del UUID del clúster. MyTestCluster
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*_test`: todos los temas cuyo nombre termine por «\$1test» del clúster cuyo nombre MyTestCluster y UUID sean abcd1234-0123-abcd-5678-1234abcd-1.
+ `arn:aws:kafka:us-east-1:0123456789012:transactional-id/MyTestCluster/*/5555abcd-1111-abcd-1234-abcd1234-1`: todas las transacciones cuyo identificador de transacción sea 5555abcd-1111-abcd-1234-abcd1234-1, en todas las versiones de un clúster con el nombre de tu cuenta. MyTestCluster Esto significa que si crea un clúster con el nombre MyTestCluster, lo elimina y, a continuación, crea otro clúster con el mismo nombre, puede usar este ARN de recurso para representar el mismo ID de transacciones en ambos clústeres. Sin embargo, no se puede acceder al clúster eliminado.

# Casos de uso habituales de la política de autorización de clientes
<a name="iam-access-control-use-cases"></a>

En la primera columna de la tabla siguiente se muestran algunos casos de uso habituales. Para autorizar a un cliente a llevar a cabo un caso de uso determinado, incluya las acciones necesarias para ese caso de uso en la política de autorización del cliente y establezca `Effect` en `Allow`.

Para obtener información sobre todas las acciones que forman parte del control de acceso de IAM para Amazon MSK, consulte [Semántica de las acciones y los recursos de la política de autorización de IAM](kafka-actions.md).

**nota**  
Las acciones se deniegan de forma predeterminada. Debe permitir de forma explícita todas las acciones que quiera que el cliente pueda realizar.


****  

| Caso de uso | Acciones obligatorias | 
| --- | --- | 
| Administrador |  `kafka-cluster:*`  | 
| Crear un tema |  `kafka-cluster:Connect` `kafka-cluster:CreateTopic`  | 
| Producir datos |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData`  | 
| Consumir datos |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:DescribeGroup` `kafka-cluster:AlterGroup` `kafka-cluster:ReadData`  | 
| Producir datos de forma idempotente |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:WriteDataIdempotently`  | 
| Producir datos de forma transaccional |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:AlterTransactionalId`  | 
| Describir la configuración de un clúster |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | 
| Actualizar la configuración de un clúster |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration` `kafka-cluster:AlterClusterDynamicConfiguration`  | 
| Describir la configuración de un tema |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` | 
| Actualizar la configuración de un tema |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` `kafka-cluster:AlterTopicDynamicConfiguration`  | 
| Modificar un tema |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterTopic`  | 

# Autenticación TLS mutua de clientes para Amazon MSK
<a name="msk-authentication"></a>

Puede habilitar la autenticación de clientes con TLS para las conexiones desde sus aplicaciones a sus agentes de Amazon MSK. Para usar la autenticación del cliente, necesita una Autoridad de certificación privada de AWS. Autoridad de certificación privada de AWS Puede estar en el Cuenta de AWS mismo clúster o en una cuenta diferente. Para obtener información sobre Autoridad de certificación privada de AWS s, consulte [Creación y administración de un Autoridad de certificación privada de AWS](https://docs.aws.amazon.com/acm-pca/latest/userguide/create-CA.html).

Amazon MSK no admite listas de revocación de certificados ()CRLs. Para controlar el acceso a los temas de su clúster o bloquear los certificados comprometidos, utilice Apache Kafka ACLs y AWS los grupos de seguridad. Para obtener información sobre el uso de Apache Kafka ACLs, consulte. [Apache Kafka ACLs](msk-acls.md)

**Topics**
+ [Creación de un clúster de Amazon MSK compatible con la autenticación de clientes](msk-authentication-cluster.md)
+ [Configuración de un cliente para que utilice la autenticación](msk-authentication-client.md)
+ [Producción y consumo de mensajes con la autenticación](msk-authentication-messages.md)

# Creación de un clúster de Amazon MSK compatible con la autenticación de clientes
<a name="msk-authentication-cluster"></a>

Este procedimiento le muestra cómo habilitar la autenticación de clientes mediante un Autoridad de certificación privada de AWS.
**nota**  
Recomendamos encarecidamente utilizar un TLS independiente Autoridad de certificación privada de AWS para cada clúster de MSK cuando utilice un TLS mutuo para controlar el acceso. De este modo, se asegurará de que los certificados TLS firmados PCAs únicamente se autentiquen con un único clúster de MSK.

1. Cree un archivo denominado `clientauthinfo.json` con el siguiente contenido. *Private-CA-ARN*Sustitúyalo por el ARN de su PCA.

   ```
   {
      "Tls": {
          "CertificateAuthorityArnList": ["Private-CA-ARN"]
       }
   }
   ```

1. Cree un archivo llamado `brokernodegroupinfo.json` tal y como se describe en [Cree un clúster de Amazon MSK aprovisionado mediante AWS CLI](create-cluster-cli.md).

1. La autenticación del cliente precisa que también habilite el cifrado en tránsito entre clientes y agentes. Cree un archivo denominado `encryptioninfo.json` con el siguiente contenido. *KMS-Key-ARN*Sustitúyala por el ARN de la clave KMS. Puede establecer `ClientBroker` en `TLS` o `TLS_PLAINTEXT`.

   ```
   {
      "EncryptionAtRest": {
          "DataVolumeKMSKeyId": "KMS-Key-ARN"
       },
      "EncryptionInTransit": {
           "InCluster": true,
           "ClientBroker": "TLS"
       }
   }
   ```

   Para obtener más información sobre el cifrado, consulte [Cifrado de Amazon MSK](msk-encryption.md).

1. En una máquina en la que la tengas AWS CLI instalada, ejecuta el siguiente comando para crear un clúster con la autenticación y el cifrado en tránsito habilitados. Guarde el ARN del clúster proporcionado en la respuesta.

   ```
   aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "{YOUR KAFKA VERSION}" --number-of-broker-nodes 3
   ```

# Configuración de un cliente para que utilice la autenticación
<a name="msk-authentication-client"></a>

En este proceso, se describe cómo configurar una instancia de Amazon EC2 para utilizarla como cliente para la autenticación.

En este proceso, se describe cómo producir y consumir mensajes con la autenticación mediante la creación de un equipo cliente, la creación de un tema y la configuración de los ajustes de seguridad necesarios.

1. Cree una instancia de Amazon EC2 para utilizarla como un equipo cliente. Para simplificar, cree esta instancia en la misma VPC que utilizó para el clúster. Consulte [Paso 3: creación de un equipo cliente](create-client-machine.md) para ver un ejemplo sobre cómo crear dicho equipo cliente.

1. Cree un tema. Para ver un ejemplo, consulte las instrucciones en [Paso 4: creación de un tema en el clúster de Amazon MSK](create-topic.md).

1. En una máquina en la que lo tenga AWS CLI instalado, ejecute el siguiente comando para obtener los agentes de arranque del clúster. *Cluster-ARN*Sustitúyalo por el ARN de su clúster.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN
   ```

   Guarde la cadena asociada a `BootstrapBrokerStringTls` en la respuesta.

1. En la máquina de su cliente, ejecute el siguiente comando para utilizar el almacén de confianza de JVM para crear su almacén de confianza del cliente. Si su ruta de JVM es diferente, ajuste el comando en consecuencia.

   ```
   cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks
   ```

1. En la máquina de su cliente, ejecute el siguiente comando para crear una clave privada para su cliente. Sustituya *Distinguished-Name**Example-Alias*,*Your-Store-Pass*, y por *Your-Key-Pass* las cadenas que prefiera.

   ```
   keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12 -keyalg rsa
   ```

1. En la máquina de su cliente, ejecute el siguiente comando para crear una solicitud de certificado con la clave privada que creo en el paso anterior.

   ```
   keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
   ```

1. Abra el archivo `client-cert-sign-request` y asegúrese de que comience por `-----BEGIN CERTIFICATE REQUEST-----` y termine por `-----END CERTIFICATE REQUEST-----`. Si comienza por `-----BEGIN NEW CERTIFICATE REQUEST-----`, elimine la palabra `NEW` (y el espacio único que le sigue) desde el comienzo hasta el final del archivo.

1. En una máquina en la que lo tenga AWS CLI instalado, ejecute el siguiente comando para firmar la solicitud de certificado. *Private-CA-ARN*Sustitúyalo por el ARN de su PCA. Puede cambiar el valor de la validez si lo desea. Aquí utilizamos 300 como ejemplo.

   ```
   aws acm-pca issue-certificate --certificate-authority-arn Private-CA-ARN --csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"
   ```

   Guarde el ARN del certificado proporcionado en la respuesta.
**nota**  
Para recuperar el certificado de cliente, utilice el comando `acm-pca get-certificate` y especifique el ARN del certificado. Para obtener más información, consulte [get-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm-pca/get-certificate.html) en la *Referencia de comandos de la AWS CLI *.

1. Ejecute el siguiente comando para obtener el certificado Autoridad de certificación privada de AWS firmado por usted. *Certificate-ARN*Sustitúyalo por el ARN que obtuvo de la respuesta al comando anterior.

   ```
   aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN
   ```

1. A partir del resultado de JSON de la ejecución del comando anterior, copie las cadenas asociadas a `Certificate` y `CertificateChain`. Pegue estas dos cadenas en un nuevo archivo llamado signed-certificate-from-acm. Pegue la siguiente cadena asociada a `Certificate` primero, seguido de la cadena asociada a `CertificateChain`. Sustituya los caracteres `\n` por las nuevas líneas. La siguiente es la estructura del archivo después de pegarle el certificado y la cadena del certificado.

   ```
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   ```

1. Ejecute el siguiente comando en el equipo cliente para agregar este certificado a su almacén de claves para que puede presentarlo al hablar con los agentes de MSK.

   ```
   keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
   ```

1. Cree un archivo denominado `client.properties` con el siguiente contenido. Ajuste las ubicaciones del almacén de confianza y de claves a las rutas en las que guardó `kafka.client.truststore.jks`. Sustituya los *\$1YOUR KAFKA VERSION\$1* marcadores de posición por su versión de cliente de Kafka.

   ```
   security.protocol=SSL
   ssl.truststore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.truststore.jks
   ssl.keystore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.keystore.jks
   ssl.keystore.password=Your-Store-Pass
   ssl.key.password=Your-Key-Pass
   ```

# Producción y consumo de mensajes con la autenticación
<a name="msk-authentication-messages"></a>

En este proceso, se describe cómo producir y consumir mensajes con la autenticación.

1. Ejecute el siguiente comando para crear un tema. El archivo denominado `client.properties` es el que creó en el procedimiento anterior.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBroker-String --replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties
   ```

1. Ejecute el siguiente comando para iniciar un productor de la consola. El archivo denominado `client.properties` es el que creó en el procedimiento anterior.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --producer.config client.properties
   ```

1. En una nueva ventana de comandos en la máquina de su cliente, ejecute el siguiente comando para iniciar un consumidor de la consola.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --consumer.config client.properties
   ```

1. Escriba mensajes en la ventana del productor y observe cómo aparecen en la ventana del consumidor.

# Autenticación de credenciales de inicio de sesión con AWS Secrets Manager
<a name="msk-password"></a>

Puede controlar el acceso a sus clústeres de Amazon MSK mediante credenciales de inicio de sesión que se almacenan y protegen mediante AWS Secrets Manager. El almacenamiento de las credenciales de usuario en Secrets Manager reduce la sobrecarga de la autenticación de clústeres, como la auditoría, la actualización y la rotación de credenciales. Secrets Manager también le permite compartir las credenciales de usuario entre clústeres.

Después de asociar un secreto a un clúster de MSK, MSK sincroniza periódicamente los datos de credenciales.

**Topics**
+ [Funcionamiento de la autenticación de las credenciales de inicio de sesión](msk-password-howitworks.md)
+ [Configurar la SASL/SCRAM autenticación para un clúster de Amazon MSK](msk-password-tutorial.md)
+ [Uso de los usuarios](msk-password-users.md)
+ [Limitaciones al momento de utilizar los secretos SCRAM](msk-password-limitations.md)

# Funcionamiento de la autenticación de las credenciales de inicio de sesión
<a name="msk-password-howitworks"></a>

La autenticación con credenciales de inicio de sesión para Amazon MSK utiliza la autenticación SASL/SCRAM (Simple Authentication and Security Layer/ Salted Challenge Response Mechanism). A fin de configurar la autenticación con credenciales de inicio de sesión para un clúster, debe crear un recurso de secreto en [AWS Secrets Manager](https://docs.aws.amazon.com//secretsmanager/?id=docs_gateway) y asociar las credenciales de inicio de sesión a ese secreto. 

SASL/SCRAM se define en [RFC 5802](https://tools.ietf.org/html/rfc5802). SCRAM utiliza algoritmos hash seguros y no transmite credenciales de inicio de sesión de texto sin formato entre el cliente y el servidor. 

**nota**  
Al configurar la SASL/SCRAM autenticación para el clúster, Amazon MSK activa el cifrado TLS para todo el tráfico entre clientes y agentes.

# Configurar la SASL/SCRAM autenticación para un clúster de Amazon MSK
<a name="msk-password-tutorial"></a>

Para configurar un secreto en AWS Secrets Manager, sigue el tutorial [Cómo crear y recuperar un secreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) en la [Guía del usuario de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).

Tenga en cuenta los siguientes requisitos al crear un secreto para un clúster de Amazon MSK:
+ En el tipo de secreto, elija **Otro tipo de secretos (por ejemplo, clave de API)**.
+ El nombre secreto debe comenzar con el prefijo **AmazonMSK\$1**.
+ Debes usar una AWS KMS clave personalizada existente o crear una nueva AWS KMS clave personalizada para tu secreto. Secrets Manager usa la AWS KMS clave predeterminada para un secreto de forma predeterminada. 
**importante**  
Un secreto creado con la AWS KMS clave predeterminada no se puede usar con un clúster de Amazon MSK.
+ Los datos de sus credenciales de inicio de sesión deben tener el siguiente formato para poder ingresar pares clave-valor mediante la opción **Texto no cifrado**.

  ```
  {
    "username": "alice",
    "password": "alice-secret"
  }
  ```
+ Registre el valor del ARN (nombre del recurso de Amazon) de su secreto. 
+ 
**importante**  
No puede asociar un secreto de Secrets Manager a un clúster que supere los límites descritos en [Dimensione correctamente el clúster: número de particiones por agente Standard](bestpractices.md#partitions-per-broker).
+ Si utiliza el AWS CLI para crear el secreto, especifique un ID de clave o un ARN para el `kms-key-id` parámetro. No especifique un alias.
+ Para asociar el secreto a su clúster, utilice la consola de Amazon MSK o la [ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operación. 
**importante**  
Al asociar un secreto a un clúster, Amazon MSK asocia una política de recursos al secreto que permite al clúster acceder a los valores de los secretos que ha definido y leerlos. No debe modificar esta política de recursos. Si lo hace, puede impedir que el clúster acceda a su secreto. Si realiza cambios en la política del recurso de Secretos o en la clave de KMS utilizada para el cifrado del secreto, asegúrese de volver a asociar los secretos al clúster de MSK. Esto garantiza que el clúster mantenga el acceso al secreto.

  El siguiente ejemplo de entrada JSON para la operación `BatchAssociateScramSecret` asocia un secreto a un clúster:

  ```
  {
    "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
    "secretArnList": [
      "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
    ]
  }
  ```

# Conexión a un clúster con credenciales de inicio de sesión
<a name="msk-password-tutorial-connect"></a>

Después de crear un secreto y asociarlo al clúster, puede conectar el cliente con el clúster. El siguiente procedimiento muestra cómo conectar un cliente a un clúster que utiliza la SASL/SCRAM autenticación. También muestra cómo producir y consumir datos desde un tema de ejemplo.

**Topics**
+ [Conectar un cliente a un clúster mediante SASL/SCRAM autenticación](#w2aab9c13c29c17c13c11b9b7)
+ [Solución de problemas de conexión](#msk-password-tutorial-connect-troubleshooting)

## Conectar un cliente a un clúster mediante SASL/SCRAM autenticación
<a name="w2aab9c13c29c17c13c11b9b7"></a>

1. Ejecute el siguiente comando en una máquina que AWS CLI esté instalada. *clusterARN*Sustitúyalo por el ARN de su clúster.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn clusterARN
   ```

   Del resultado JSON de este comando, guarde el valor asociado a la cadena llamada `BootstrapBrokerStringSaslScram`. Utilizará este valor en pasos posteriores.

1. En su equipo cliente, cree un archivo de configuración JAAS que contenga las credenciales de usuario almacenadas en su secreto. Por ejemplo, para el usuario **alice**, cree un archivo llamado `users_jaas.conf` con el siguiente contenido.

   ```
   KafkaClient {
      org.apache.kafka.common.security.scram.ScramLoginModule required
      username="alice"
      password="alice-secret";
   };
   ```

1. Utilice el siguiente comando para exportar el archivo de configuración de JAAS como parámetro de entorno `KAFKA_OPTS`.

   ```
   export KAFKA_OPTS=-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf
   ```

1. Cree un archivo denominado `kafka.client.truststore.jks` en el directorio `/tmp`.

1. (Opcional) Utilice el siguiente comando para copiar el archivo del almacén de claves del JDK desde la carpeta `cacerts` del JVM al archivo `kafka.client.truststore.jks` que creó en el paso anterior. *JDKFolder*Sustitúyalo por el nombre de la carpeta JDK de la instancia. Por ejemplo, su carpeta JDK podría llamarse `java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64`.

   ```
   cp /usr/lib/jvm/JDKFolder/lib/security/cacerts /tmp/kafka.client.truststore.jks
   ```

1. En el directorio `bin` de su instalación de Apache Kafka, cree un archivo de propiedades del cliente llamado `client_sasl.properties` con el siguiente contenido. Este archivo define el mecanismo y el protocolo SASL.

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=SCRAM-SHA-512
   ```

1. Para crear un tema de ejemplo, ejecute el siguiente comando. *BootstrapBrokerStringSaslScram*Sustitúyala por la cadena del broker bootstrap que obtuviste en el paso 1 de este tema.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBrokerStringSaslScram --command-config <path-to-client-properties>/client_sasl.properties --replication-factor 3 --partitions 1 --topic ExampleTopicName
   ```

1. Para continuar con el tema de ejemplo que ha creado, ejecute el siguiente comando en su equipo cliente. *BootstrapBrokerStringSaslScram*Sustitúyala por la cadena bootstrap broker que recuperaste en el paso 1 de este tema.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties
   ```

1. Para continuar con el tema que ha creado, ejecute el siguiente comando en el equipo cliente. *BootstrapBrokerStringSaslScram*Sustitúyala por la cadena bootstrap broker que obtuviste en el paso 1 de este tema.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties
   ```

## Solución de problemas de conexión
<a name="msk-password-tutorial-connect-troubleshooting"></a>

Cuando ejecute comandos de cliente de Kafka, es posible que encuentre errores de memoria del montón de Java, especialmente al trabajar con temas o conjuntos de datos de gran tamaño. Estos errores se producen porque las herramientas de Kafka se ejecutan como aplicaciones Java con configuraciones de memoria predeterminadas que pueden ser insuficientes para la carga de trabajo.

Para resolver los errores `Out of Memory Java Heap`, puede aumentar el tamaño del montón de Java mediante la modificación de la variable de entorno `KAFKA_OPTS` para incluir la configuración de memoria.

El siguiente ejemplo establece el tamaño máximo del montón en 1 GB (`-Xmx1G`). Puede ajustar este valor en función de la memoria del sistema disponible y de los requisitos.

```
export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf -Xmx1G"
```

Para consumir temas de gran tamaño, considere el uso de parámetros basados en tiempo o en desplazamientos, en lugar de `--from-beginning`, con el fin de limitar el uso de memoria.

```
<path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --max-messages 1000 --consumer.config client_sasl.properties
```

# Uso de los usuarios
<a name="msk-password-users"></a>

**Creación de usuarios**: los usuarios se crean en su secreto como pares clave-valor. Al utilizar la opción **Texto no cifrado** de la consola de Secrets Manager, debe especificar los datos de las credenciales de inicio de sesión en el siguiente formato:

```
{
  "username": "alice",
  "password": "alice-secret"
}
```

**Revocar el acceso de un usuario:** para revocar las credenciales de un usuario para acceder a un clúster, le recomendamos que primero elimine o aplique una ACL en el clúster y, a continuación, desasocie el secreto. Esto se debe a lo siguiente:
+ La eliminación de un usuario no cierra las conexiones existentes.
+ Los cambios realizados en el secreto tardan hasta 10 minutos en propagarse.

Para obtener más información acerca del uso de ACL con Amazon MSK, consulte [Apache Kafka ACLs](msk-acls.md).

En el caso de los clústeres que utilizan el ZooKeeper modo, se recomienda restringir el acceso a ZooKeeper los nodos para evitar que los usuarios los modifiquen ACLs. Para obtener más información, consulte [Controle el acceso a ZooKeeper los nodos de Apache en su clúster de Amazon MSK](zookeeper-security.md).

# Limitaciones al momento de utilizar los secretos SCRAM
<a name="msk-password-limitations"></a>

Cuando utilice secretos SCRAM, tenga en cuenta las siguientes limitaciones:
+ Amazon MSK solo admite la autenticación SCRAM-SHA-512.
+ Un clúster de Amazon MSK puede tener hasta 1000 usuarios.
+ Debes usar un AWS KMS key con tu secreto. No puede usar un secreto que utilice la clave de cifrado predeterminada de Secrets Manager con Amazon MSK. Para obtener información sobre cómo crear una clave de KMS, consulte [Creating symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk).
+ No puede utilizar una clave de KMS asimétrica con Secrets Manager.
+ Puedes asociar hasta 10 secretos a un clúster a la vez mediante la [ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operación.
+ El nombre de los secretos asociados a un clúster de Amazon MSK debe tener el prefijo **AmazonMSK\$1**.
+ Los secretos asociados a un clúster de Amazon MSK deben estar en la misma cuenta y AWS región de Amazon Web Services que el clúster.

# Apache Kafka ACLs
<a name="msk-acls"></a>

Apache Kafka tiene un autorizador conectable y viene con una implementación de autorizador. out-of-box Amazon MSK habilita este autorizador en el archivo `server.properties` de los agentes.

Apache Kafka ACLs tiene el formato «La P principal es la operación O [permitida/denegada] del host H en cualquier recurso R que coincida con el RP». ResourcePattern Si RP no coincide con un recurso R específico, R no tiene asociado y ACLs, por lo tanto, solo los superusuarios pueden acceder a R. Para cambiar este comportamiento de Apache Kafka, establezca la propiedad en `allow.everyone.if.no.acl.found` true. Amazon MSK lo establece como true de forma predeterminada. Esto significa que con los clústeres de Amazon MSK, si no se establece ACLs un recurso de forma explícita, todos los principales pueden acceder a este recurso. Si habilita ACLs un recurso, solo los principales autorizados pueden acceder a él. Si desea restringir el acceso a un tema y autorizar a un cliente mediante la autenticación mutua TLS, agréguelo ACLs mediante la CLI del autorizador Apache Kafka. Para obtener más información sobre cómo añadir, eliminar y enumerar ACLs, consulte la interfaz de línea de comandos de [autorización de Kafka](https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Authorization+Command+Line+Interface).

Dado que Amazon MSK configura los agentes como superusuarios, estos pueden acceder a todos los temas. Esto ayuda a los agentes a replicar mensajes desde la partición principal, independientemente de que la propiedad `allow.everyone.if.no.acl.found` esté definida o no en la configuración del clúster.

**Adición o eliminación del acceso de lectura y escritura a un tema**

1. Añada a sus corredores a la tabla de ACL para que puedan leer todos los temas ACLs existentes. Para conceder a los agentes acceso de lectura a un tema, ejecute el siguiente comando en un equipo cliente que pueda comunicarse con el clúster de MSK. 

   Reemplácelo *Distinguished-Name* por el DNS de cualquiera de los agentes de arranque del clúster y, a continuación, sustituya la cadena situada antes del primer punto de este nombre distintivo por un asterisco ()`*`. Por ejemplo, si uno de los agentes de arranque del clúster tiene el DNS`b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com`, sustituya el siguiente *Distinguished-Name* comando por. `*.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com` Para obtener información sobre cómo obtener los agentes de arranque, consulte [Obtención de agentes de arranque para un clúster de Amazon MSK](msk-get-bootstrap-brokers.md).

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
   ```

1. Para conceder a una aplicación cliente acceso de lectura a un tema, ejecute el siguiente comando en la máquina cliente. Si utilizas la autenticación TLS mutua, usa la misma *Distinguished-Name* que usaste cuando creaste la clave privada.

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
   ```

   Para eliminar el acceso de lectura, puede ejecutar el mismo comando, sustituyendo `--add` por `--remove`.

1. Para conceder acceso de escritura a un tema, ejecute el siguiente comando en su máquina del cliente. Si utilizas la autenticación TLS mutua, usa la misma *Distinguished-Name* que usaste cuando creaste la clave privada.

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topic Topic-Name
   ```

   Para eliminar el acceso de escritura, puede ejecutar el mismo comando, sustituyendo `--add` por `--remove`.

# Modificación del grupo de seguridad de un clúster de Amazon MSK
<a name="change-security-group"></a>

En esta página, se explica cómo cambiar el grupo de seguridad de un clúster de MSK existente. Es posible que tenga que cambiar el grupo de seguridad de un clúster para proporcionar acceso a un determinado conjunto de usuarios o para limitar el acceso al clúster. Para obtener más información sobre los grupos de seguridad, consulte [Grupos de seguridad de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) en la Guía de usuario de Amazon VPC.

1. Utilice la [ListNodes](https://docs.amazonaws.cn/en_us/msk/1.0/apireference/clusters-clusterarn-nodes.html#ListNodes)API o el comando [list-nodes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/list-nodes.html) del AWS CLI para obtener una lista de los corredores de su clúster. Los resultados de esta operación incluyen las interfaces IDs de red elásticas (ENIs) asociadas a los corredores.

1. Inicie sesión en la consola Amazon EC2 Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. En la lista desplegable situada cerca de la esquina superior derecha de la pantalla, seleccione la región en la que se implementa el clúster.

1. En el panel izquierdo, en **Red y seguridad**, seleccione **Interfaces de red**.

1. Seleccione la primera ENI que obtuvo en el primer paso. Seleccione el menú **Acciones** en la parte superior de la pantalla y, a continuación, seleccione **Cambiar grupos de seguridad**. Asigne el nuevo grupo de seguridad a esta ENI. Repita este paso para cada uno de los pasos ENIs que obtuvo en el primer paso.
**nota**  
Los cambios que realice en el grupo de seguridad de un clúster mediante la consola de Amazon EC2 no se reflejan en la consola de MSK en **Configuración de redes**.

1. Configure las reglas del nuevo grupo de seguridad para garantizar que sus clientes tengan acceso a los agentes. Para obtener información acerca de cómo establecer reglas de grupo de seguridad, consulte [Adición, eliminación y actualización de reglas](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#AddRemoveRules) en la Guía del usuario de Amazon VPC.

**importante**  
Si cambia el grupo de seguridad asociado a los agentes de un clúster y, a continuación, agrega nuevos agentes a ese clúster, Amazon MSK asocia los nuevos agentes al grupo de seguridad original que estaba asociado al clúster cuando se creó el clúster. Sin embargo, para que un clúster funcione correctamente, todos sus agentes deben estar asociados al mismo grupo de seguridad. Por lo tanto, si añade nuevos corredores después de cambiar el grupo de seguridad, debe volver a seguir el procedimiento anterior y actualizar ENIs los nuevos corredores.

# Controle el acceso a ZooKeeper los nodos de Apache en su clúster de Amazon MSK
<a name="zookeeper-security"></a>

Por motivos de seguridad, puede limitar el acceso a los ZooKeeper nodos de Apache que forman parte de su clúster de Amazon MSK. Para limitar el acceso a los nodos, puede asignarles un grupo de seguridad independiente. A continuación, puede decidir quién obtiene acceso a ese grupo de seguridad.

**importante**  
Esta sección no se aplica a los clústeres que se ejecutan en KRaft modo. Consulte [KRaft modo](metadata-management.md#kraft-intro).

**Topics**
+ [Para colocar ZooKeeper los nodos de Apache en un grupo de seguridad independiente](zookeeper-security-group.md)
+ [Uso de la seguridad TLS con Apache ZooKeeper](zookeeper-security-tls.md)

# Para colocar ZooKeeper los nodos de Apache en un grupo de seguridad independiente
<a name="zookeeper-security-group"></a>

Para limitar el acceso a ZooKeeper los nodos de Apache, puede asignarles un grupo de seguridad independiente. Puede establecer reglas del grupo de seguridad para elegir quién tiene acceso a este nuevo grupo de seguridad.

1. Obtenga la cadena de ZooKeeper conexión de Apache para su clúster. Para aprender a hacerlo, consulte [ZooKeeper modo](metadata-management.md#msk-get-connection-string). La cadena de conexión contiene los nombres DNS de sus ZooKeeper nodos de Apache.

1. Utilice una herramienta como `host` o `ping` para convertir los nombres de los DNS que obtuvo en el paso anterior a las direcciones IP. Guarde estas direcciones IP porque las necesitará más adelante en este procedimiento.

1. Inicie sesión en la consola Amazon EC2 Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. En el panel izquierdo, en **NETWORK & SECURITY (Red y seguridad)**, seleccione **Network Interfaces (Interfaces de red)**.

1. En el campo de búsqueda situado encima de la tabla de interfaces de red, escriba el nombre del clúster y, a continuación, escriba return. Esto limita el número de interfaces de red que aparecen en la tabla a las interfaces asociadas al clúster.

1. Marque la casilla de verificación al principio de la fila correspondiente a la primera interfaz de red de la lista.

1. En el panel de detalles de la parte inferior de la página, busque la ** IPv4 IP privada principal**. Si esta dirección IP coincide con una de las direcciones IP que obtuvo en el primer paso de este procedimiento, significa que esta interfaz de red está asignada a un ZooKeeper nodo de Apache que forma parte de su clúster. De lo contrario, anule la selección de la casilla de verificación situada junto a esta interfaz de red y seleccione la siguiente interfaz de red de la lista. El orden en el que selecciona las interfaces de red no importa. En los siguientes pasos, realizará las mismas operaciones en todas las interfaces de red que estén asignadas a ZooKeeper los nodos de Apache, una por una.

1. Cuando seleccione una interfaz de red que corresponda a un ZooKeeper nodo de Apache, elija el menú **Acciones** en la parte superior de la página y, a continuación, elija **Cambiar grupos de seguridad**. Asigne un nuevo grupo de seguridad a esta interfaz de red. Para obtener más información acerca de la creación de grupos de seguridad, consulte [Creación de un grupo de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#CreatingSecurityGroups) en la documentación de Amazon VPC.

1. Repita el paso anterior para asignar el mismo grupo de seguridad nuevo a todas las interfaces de red asociadas a ZooKeeper los nodos Apache del clúster.

1. Ahora puede elegir quién tiene acceso a este nuevo grupo de seguridad. Para obtener información acerca de cómo establecer reglas de grupo de seguridad, consulte [Adición, eliminación y actualización de reglas](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#AddRemoveRules) en la documentación de Amazon VPC.

# Uso de la seguridad TLS con Apache ZooKeeper
<a name="zookeeper-security-tls"></a>

Puede utilizar la seguridad TLS para el cifrado en tránsito entre sus clientes y sus nodos de Apache ZooKeeper . Para implementar la seguridad TLS en sus ZooKeeper nodos de Apache, haga lo siguiente:
+ Los clústeres deben usar la versión 2.5.1 o posterior de Apache Kafka para usar la seguridad TLS con Apache. ZooKeeper
+ Active la seguridad TLS al crear o configurar el clúster. Los clústeres creados con la versión 2.5.1 o posterior de Apache Kafka con TLS activado utilizan automáticamente la seguridad TLS con los puntos de conexión de Apache. ZooKeeper Para obtener información sobre la configuración de la seguridad TLS, consulte [Introducción al cifrado de Amazon MSK](msk-working-with-encryption.md).
+ Recupere los puntos finales TLS de Apache mediante la operación. ZooKeeper [DescribeCluster ](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)
+ Cree un archivo ZooKeeper de configuración de Apache para usarlo con las [https://kafka.apache.org/documentation/#security_authz_cli](https://kafka.apache.org/documentation/#security_authz_cli)herramientas `kafka-configs.sh` y o con el ZooKeeper shell. Con cada herramienta, se utiliza el `--zk-tls-config-file` parámetro para especificar la ZooKeeper configuración de Apache.

  El siguiente ejemplo muestra un archivo de ZooKeeper configuración típico de Apache: 

  ```
  zookeeper.ssl.client.enable=true
  zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
  zookeeper.ssl.keystore.location=kafka.jks
  zookeeper.ssl.keystore.password=test1234
  zookeeper.ssl.truststore.location=truststore.jks
  zookeeper.ssl.truststore.password=test1234
  ```
+ Para otros comandos (como`kafka-topics`), debe usar la variable de `KAFKA_OPTS` entorno para configurar ZooKeeper los parámetros de Apache. El siguiente ejemplo muestra cómo configurar la variable de `KAFKA_OPTS` entorno para pasar ZooKeeper los parámetros de Apache a otros comandos:

  ```
  export KAFKA_OPTS="
  -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty 
  -Dzookeeper.client.secure=true 
  -Dzookeeper.ssl.trustStore.location=/home/ec2-user/kafka.client.truststore.jks
  -Dzookeeper.ssl.trustStore.password=changeit"
  ```

  Después de configurar la variable de entorno `KAFKA_OPTS`, puede utilizar los comandos de la CLI con normalidad. En el siguiente ejemplo, se crea un tema de Apache Kafka con la ZooKeeper configuración de Apache de la variable de `KAFKA_OPTS` entorno:

  ```
  <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --zookeeper ZooKeeperTLSConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic
  ```

**nota**  
Los nombres de los parámetros que utiliza en el archivo de ZooKeeper configuración de Apache y los que utiliza en la variable de `KAFKA_OPTS` entorno no son coherentes. Preste atención a los nombres que utiliza con los parámetros del archivo de configuración y la variable de entorno `KAFKA_OPTS`.

Para obtener más información sobre cómo acceder a ZooKeeper los nodos de Apache con TLS, consulte el artículo [KIP-515: Habilitar el cliente ZK para utilizar la nueva](https://cwiki.apache.org/confluence/display/KAFKA/KIP-515%3A+Enable+ZK+client+to+use+the+new+TLS+supported+authentication) autenticación compatible con TLS.

# Validación de la conformidad de Amazon Managed Streaming para Apache Kafka
<a name="MSK-compliance"></a>

Los auditores externos evalúan la seguridad y la conformidad de Amazon Managed Streaming para Apache Kafka en distintos programas de conformidad de AWS . Estos incluyen PCI y HIPAA BAA.

Para obtener una lista de AWS los servicios incluidos en el ámbito de los programas de conformidad específicos, consulte [Amazon Services in Scope by Compliance Program](https://aws.amazon.com/compliance/services-in-scope/) . Para obtener información general, consulte Programas de [AWS cumplimiento > Programas AWS](https://aws.amazon.com/compliance/programs/) .

Puede descargar informes de auditoría de terceros utilizando AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Su responsabilidad de conformidad al utilizar Amazon MSK viene determinada por la confidencialidad de sus datos, los objetivos de conformidad de su empresa y las leyes y reglamentos aplicables. AWS proporciona los siguientes recursos para ayudar con el cumplimiento:
+ [Security and Compliance Quick Start Guides](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance) (Guías de inicio rápido de seguridad y conformidad) (Guías de inicio rápido de seguridad y conformidad): Estas guías de implementación analizan las consideraciones en materia de arquitectura y proporcionan los pasos para implementar los entornos de referencia centrados en la seguridad y la conformidad en AWS.
+ Documento técnico sobre [cómo diseñar una arquitectura basada en la seguridad y el cumplimiento de la HIPAA: en este documento técnico](https://docs.aws.amazon.com/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.html) se describe cómo pueden utilizar las empresas para crear aplicaciones que cumplan con la HIPAA. AWS 
+ [AWS Recursos de cumplimiento Recursos](https://aws.amazon.com/compliance/resources/) de de trabajo y guías puede aplicarse a su sector y ubicación.
+ [Evaluación de los recursos con las reglas](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) de la *guía para AWS Config desarrolladores*: el AWS Config servicio evalúa en qué medida las configuraciones de los recursos cumplen con las prácticas internas, las directrices del sector y las normas.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)— Este AWS servicio proporciona una visión integral del estado de su seguridad AWS que le ayuda a comprobar su conformidad con los estándares y las mejores prácticas del sector de la seguridad.

# Resiliencia en Amazon Managed Streaming para Apache Kafka
<a name="disaster-recovery-resiliency"></a>

La infraestructura AWS global se basa en AWS regiones y zonas de disponibilidad. AWS Las regiones proporcionan varias zonas de disponibilidad aisladas y separadas físicamente, que están conectadas mediante redes de baja latencia, alto rendimiento y alta redundancia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos que realizan una conmutación por error automática entre las zonas sin interrupciones. Las zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras tradicionales de uno o varios centros de datos. 

[Para obtener más información sobre AWS las regiones y las zonas de disponibilidad, consulte Infraestructura global.AWS](https://aws.amazon.com/about-aws/global-infrastructure/)

# Seguridad de la infraestructura en Amazon Managed Streaming para Apache Kafka
<a name="infrastructure-security"></a>

Como servicio gestionado, Amazon Managed Streaming for Apache Kafka Kafka está protegido por los procedimientos de seguridad de red AWS global que se describen en el documento técnico [Amazon Web Services: Overview of Security Processes](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf).

Utiliza las llamadas a la API AWS publicadas para acceder a Amazon MSK a través de la red. Los clientes deben ser compatibles con la seguridad de la capa de transporte (TLS) 1.0 o una versión posterior. Recomendamos TLS 1.2 o una versión posterior. Los clientes también deben ser compatibles con conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos.

Además, las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de acceso secreta que esté asociada a una entidad principal de IAM. También puedes utilizar [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) para generar credenciales de seguridad temporales para firmar solicitudes.

# Registro de Amazon MSK
<a name="msk-logging"></a>

Puede entregar los registros del broker de Apache Kafka a uno o más de los siguientes tipos de destinos: Amazon CloudWatch Logs, Amazon S3, Amazon Data Firehose. También puede registrar las llamadas a la API de Amazon MSK con AWS CloudTrail.

**nota**  
Los registros de los corredores están disponibles tanto en los corredores MSK Standard como en los Express.

## Registros de agente
<a name="broker-logs"></a>

Los registros de agente le permiten solucionar problemas de las aplicaciones de Apache Kafka y analizar las comunicaciones con su clúster de MSK. Puede configurar su clúster de MSK nuevo o existente para entregar registros de corredores de nivel de información a uno o más de los siguientes tipos de recursos de destino: un grupo de CloudWatch registros, un depósito de S3 o un flujo de entrega de Firehose. A través de Firehose, puede enviar los datos de registro de su flujo de entrega a OpenSearch Service.

Debe crear un recurso de destino antes de configurar el clúster para enviarle los registros de los agentes. Amazon MSK no crea estos recursos de destino si aún no existen. Para obtener información acerca de estos tres tipos de recursos de destino y cómo crearlos, consulte la siguiente documentación:
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)

### Permisos necesarios
<a name="broker-logs-perms"></a>

Para configurar un destino para los registros de los agentes de Amazon MSK, la identidad de IAM que utilice para las acciones de Amazon MSK debe tener los permisos descritos en la política [AWS política gestionada: Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md). 

Para transmitir registros de agente a un bucket de S3, también necesita el permiso `s3:PutBucketPolicy`. Para obtener información acerca de las políticas de bucket de S3, consulte [¿Cómo agrego una política de bucket de S3?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html) en la Guía del usuario de Amazon S3. Para obtener información acerca de las políticas de IAM en general, consulte [Administración de accesos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) en la Guía del usuario de IAM. 

### Política de claves de KMS necesarias para usar con buckets de SSE-KMS
<a name="sse-kms-buckets"></a>

Si habilitó el cifrado del lado del servidor para su bucket de S3 mediante claves AWS KMS administradas (SSE-KMS) con una clave administrada por el cliente, añada lo siguiente a la política de claves de su clave de KMS para que Amazon MSK pueda escribir archivos de broker en el bucket.

```
{
  "Sid": "Allow Amazon MSK to use the key.",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "delivery.logs.amazonaws.com"
    ]
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
```

### Configure los registros de los corredores mediante el Consola de administración de AWS
<a name="broker-logs-console"></a>

Si va a crear un nuevo clúster, busque el encabezado **Broker log delivery (Entrega de registros de agente)** en la sección **Monitoring (Monitoreo)**. Puede especificar los destinos donde desea que Amazon MSK entregue los registros de agente. 

Para un clúster existente, elija el clúster de la lista de clústeres y, a continuación, elija la pestaña **Propiedades**. Desplácese hacia abajo hasta la sección **Envío de registros** y, a continuación, elija el botón **Editar**. Puede especificar los destinos donde desea que Amazon MSK entregue los registros de agente.

### Configure los registros de los corredores mediante el AWS CLI
<a name="broker-logs-cli"></a>

Si utiliza los comandos `update-monitoring` o `create-cluster`, tiene la opción de especificar el parámetro `logging-info` y pasarlo a una estructura JSON como en el siguiente ejemplo. En este JSON, los tres tipos de destino son opcionales.

**nota**  
Debe establecer la etiqueta `LogDeliveryEnabled` en `true` en los flujos de Firehose para configurar la entrega de registros. El rol vinculado al servicio que AWS crea CloudWatch los registros usa esta etiqueta para conceder permisos a todas las transmisiones de entrega de Firehose. Si elimina esta etiqueta, el rol vinculado al servicio no podrá entregar registros al flujo de Firehose. *Para ver un ejemplo de una política de IAM que muestre los permisos que incluye la función vinculada al servicio, consulte [Funciones de IAM utilizadas para los permisos de recursos en](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-infrastructure-V2-Firehose.html) la Guía del usuario de Amazon. CloudWatch *

```
{
  "BrokerLogs": {
    "S3": {
      "Bucket": "amzn-s3-demo-bucket",
      "Prefix": "ExamplePrefix",
      "Enabled": true
    },
    "Firehose": {
      "DeliveryStream": "ExampleDeliveryStreamName",
      "Enabled": true
    },
    "CloudWatchLogs": {
      "Enabled": true,
      "LogGroup": "ExampleLogGroupName"
    }
  }
}
```

### Configuración de los registros de agente con la API
<a name="broker-logs-api"></a>

Puedes especificar la `loggingInfo` estructura opcional en el JSON que vas a transferir a las operaciones o. [CreateCluster[UpdateMonitoring](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-monitoring.html#UpdateMonitoring)](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster)

**nota**  
De forma predeterminada, cuando el registro de agentes está habilitado, Amazon MSK almacena los registros de `INFO` en los destinos especificados. Sin embargo, en el caso de los corredores estándar, los usuarios de Apache Kafka 2.4.X y versiones posteriores pueden establecer dinámicamente el nivel de registro del corredor en cualquiera de los niveles de registro de [log4j](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html). Para obtener información sobre cómo configurar dinámicamente el nivel de registros de agente, consulte [KIP-412: Extend Admin API to support dynamic application log levels](https://cwiki.apache.org/confluence/display/KAFKA/KIP-412%3A+Extend+Admin+API+to+support+dynamic+application+log+levels). Si establece el nivel de registro de forma dinámica en `DEBUG` o `TRACE`, recomendamos que utilice Amazon S3 o Firehose como destino de los registros. Si utiliza CloudWatch Logs como destino de registros y habilita `DEBUG` o `TRACE` nivela el registro de forma dinámica, Amazon MSK puede entregar continuamente una muestra de registros. Esto puede afectar considerablemente al rendimiento del agente y solo debe utilizarse cuando el nivel de registro `INFO` no sea lo suficientemente detallado como para determinar la causa raíz del problema.

# Registre las llamadas a la API con AWS CloudTrail
<a name="logging-API-using-cloudtrail"></a>



**nota**  
AWS CloudTrail los registros están disponibles para Amazon MSK solo cuando los usas[Control de acceso de IAM](iam-access-control.md).

Amazon MSK está integrado con AWS CloudTrail un servicio que proporciona un registro de las acciones realizadas por un usuario, un rol o un AWS servicio en Amazon MSK. CloudTrail captura las llamadas a la API como eventos. Las llamadas capturadas incluyen las llamadas desde la consola de Amazon MSK y las llamadas desde el código a las operaciones de la API de Amazon MSK. También captura las acciones de Apache Kafka, como la creación y modificación de temas y grupos.

Si crea una ruta, puede habilitar la entrega continua de CloudTrail eventos a un bucket de Amazon S3, incluidos los eventos de Amazon MSK. Si no configura una ruta, podrá ver los eventos más recientes en la CloudTrail consola, en el **historial** de eventos. Con la información recopilada por CloudTrail, puede determinar la solicitud que se realizó a Amazon MSK o la acción de Apache Kafka, la dirección IP desde la que se realizó la solicitud, quién la hizo, cuándo se realizó y detalles adicionales. 

Para obtener más información CloudTrail, incluido cómo configurarlo y habilitarlo, consulte la Guía del [AWS CloudTrail usuario](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Información de Amazon MSK en CloudTrail
<a name="msk-info-in-cloudtrail"></a>

CloudTrail está activado en su cuenta de Amazon Web Services al crear la cuenta. Cuando una actividad de eventos admitida se produce en un clúster de MSK, esa actividad se registra en un CloudTrail evento junto con otros eventos de AWS servicio en el **historial** de eventos. Puede ver, buscar y descargar los últimos eventos de la cuenta de Amazon Web Services. Para obtener más información, consulte [Visualización de eventos con el historial de eventos de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Para mantener un registro continuo de eventos en la cuenta de Amazon Web Services, incluidos los eventos de Amazon MSK, cree un registro de seguimiento. Un *rastro* permite CloudTrail entregar archivos de registro a un bucket de Amazon S3. De manera predeterminada, cuando crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las regiones. El registro de seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3 especificado. Además, puedes configurar otros servicios de Amazon para analizar más a fondo los datos de eventos recopilados en los CloudTrail registros y actuar en función de ellos. Para más información, consulte los siguientes temas: 
+ [Introducción a la creación de registros de seguimiento](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail Servicios e integraciones compatibles](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Configuración de las notificaciones de Amazon SNS para CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Recibir archivos de CloudTrail registro de varias regiones](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) y [recibir archivos de CloudTrail registro de varias cuentas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Amazon MSK registra todas las [operaciones de Amazon MSK](https://docs.aws.amazon.com/MSK/2.0/APIReference/operations.html) como eventos en archivos de CloudTrail registro. Además, registra las siguientes acciones de Apache Kafka.
+ clúster kafka: DescribeClusterDynamicConfiguration 
+ cúmulo kafka: AlterClusterDynamicConfiguration 
+ cúmulo kafka: CreateTopic 
+ cúmulo kafka: DescribeTopicDynamicConfiguration 
+ cúmulo kafka: AlterTopic 
+ cúmulo kafka: AlterTopicDynamicConfiguration 
+ cúmulo kafka: DeleteTopic

Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de identidad del usuario le ayuda a determinar lo siguiente: 
+ Si la solicitud se realizó con credenciales de usuario root o de usuario AWS Identity and Access Management (IAM).
+ Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
+ Si la solicitud la realizó otro AWS servicio.

Para obtener más información, consulte el [Elemento userIdentity de CloudTrail ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Ejemplo: entradas del archivo de registros de Amazon MSK
<a name="understanding-msk-entries"></a>

Un rastro es una configuración que permite la entrega de eventos como archivos de registro a un bucket de Amazon S3 que especifique. CloudTrail Los archivos de registro contienen una o más entradas de registro. Un evento representa una solicitud única de cualquier fuente e incluye información sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud, etc. CloudTrail Los archivos de registro no son un registro ordenado de las llamadas a las API públicas y las acciones de Apache Kafka, por lo que no aparecen en ningún orden específico.

El siguiente ejemplo muestra las entradas de CloudTrail registro que muestran las acciones `DescribeCluster` y las de `DeleteCluster` Amazon MSK.

```
{
  "Records": [
    {
      "eventVersion": "1.05",
      "userIdentity": {
        "type": "IAMUser",
        "principalId": "ABCDEF0123456789ABCDE",
        "arn": "arn:aws:iam::012345678901:user/Joe",
        "accountId": "012345678901",
        "accessKeyId": "AIDACKCEVSQ6C2EXAMPLE",
        "userName": "Joe"
      },
      "eventTime": "2018-12-12T02:29:24Z",
      "eventSource": "kafka.amazonaws.com",
      "eventName": "DescribeCluster",
      "awsRegion": "us-east-1",
      "sourceIPAddress": "192.0.2.0",
      "userAgent": "aws-cli/1.14.67 Python/3.6.0 Windows/10 botocore/1.9.20",
      "requestParameters": {
        "clusterArn": "arn%3Aaws%3Akafka%3Aus-east-1%3A012345678901%3Acluster%2Fexamplecluster%2F01234567-abcd-0123-abcd-abcd0123efa-2"
      },
      "responseElements": null,
      "requestID": "bd83f636-fdb5-abcd-0123-157e2fbf2bde",
      "eventID": "60052aba-0123-4511-bcde-3e18dbd42aa4",
      "readOnly": true,
      "eventType": "AwsApiCall",
      "recipientAccountId": "012345678901"
    },
    {
      "eventVersion": "1.05",
      "userIdentity": {
        "type": "IAMUser",
        "principalId": "ABCDEF0123456789ABCDE",
        "arn": "arn:aws:iam::012345678901:user/Joe",
        "accountId": "012345678901",
        "accessKeyId": "AIDACKCEVSQ6C2EXAMPLE",
        "userName": "Joe"
      },
      "eventTime": "2018-12-12T02:29:40Z",
      "eventSource": "kafka.amazonaws.com",
      "eventName": "DeleteCluster",
      "awsRegion": "us-east-1",
      "sourceIPAddress": "192.0.2.0",
      "userAgent": "aws-cli/1.14.67 Python/3.6.0 Windows/10 botocore/1.9.20",
      "requestParameters": {
        "clusterArn": "arn%3Aaws%3Akafka%3Aus-east-1%3A012345678901%3Acluster%2Fexamplecluster%2F01234567-abcd-0123-abcd-abcd0123efa-2"
      },
      "responseElements": {
        "clusterArn": "arn:aws:kafka:us-east-1:012345678901:cluster/examplecluster/01234567-abcd-0123-abcd-abcd0123efa-2",
        "state": "DELETING"
      },
      "requestID": "c6bfb3f7-abcd-0123-afa5-293519897703",
      "eventID": "8a7f1fcf-0123-abcd-9bdb-1ebf0663a75c",
      "readOnly": false,
      "eventType": "AwsApiCall",
      "recipientAccountId": "012345678901"
    }
  ]
}
```

El siguiente ejemplo muestra una entrada de CloudTrail registro que demuestra la `kafka-cluster:CreateTopic` acción.

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "ABCDEFGH1IJKLMN2P34Q5",
    "arn": "arn:aws:iam::111122223333:user/Admin",
    "accountId": "111122223333",
    "accessKeyId": "CDEFAB1C2UUUUU3AB4TT",
    "userName": "Admin"
  },
  "eventTime": "2021-03-01T12:51:19Z",
  "eventSource": "kafka-cluster.amazonaws.com",
  "eventName": "CreateTopic",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "198.51.100.0/24",
  "userAgent": "aws-msk-iam-auth/unknown-version/aws-internal/3 aws-sdk-java/1.11.970 Linux/4.14.214-160.339.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/25.272-b10 java/1.8.0_272 scala/2.12.8 vendor/Red_Hat,_Inc.",
  "requestParameters": {
    "kafkaAPI": "CreateTopics",
    "resourceARN": "arn:aws:kafka:us-east-1:111122223333:topic/IamAuthCluster/3ebafd8e-dae9-440d-85db-4ef52679674d-1/Topic9"
  },
  "responseElements": null,
  "requestID": "e7c5e49f-6aac-4c9a-a1d1-c2c46599f5e4",
  "eventID": "be1f93fd-4f14-4634-ab02-b5a79cb833d2",
  "readOnly": false,
  "eventType": "AwsApiCall",
  "managementEvent": true,
  "eventCategory": "Management",
  "recipientAccountId": "111122223333"
}
```

# Administración de metadatos
<a name="metadata-management"></a>

Amazon MSK admite los modos de administración de KRaft metadatos ZooKeeper o Apache.

A partir de la versión 3.7.x de Apache Kafka en Amazon MSK, puede crear clústeres que usen el modo en lugar del KRaft modo. ZooKeeper KRaftlos clústeres basados en sistemas basados en Kafka se basan en los controladores de Kafka para administrar los metadatos.

**Topics**
+ [ZooKeeper modo](#msk-get-connection-string)
+ [KRaft modo](#kraft-intro)

## ZooKeeper modo
<a name="msk-get-connection-string"></a>

[Apache ZooKeeper](https://zookeeper.apache.org/) es «un servicio centralizado para mantener la información de configuración, asignar nombres, proporcionar sincronización distribuida y proporcionar servicios grupales. Las aplicaciones distribuidas utilizan todos estos tipos de servicios de una forma u otra”, como Apache Kafka.

Si su clúster utiliza el ZooKeeper modo, puede seguir los pasos que se indican a continuación para obtener la cadena de ZooKeeper conexión de Apache. Sin embargo, le recomendamos que utilice `BootstrapServerString` para conectarse a su clúster y realizar operaciones de administración, ya que el indicador `--zookeeper` ha quedado obsoleto en Kafka 2.5 y se ha eliminado de Kafka 3.0.

### Obtener la cadena de ZooKeeper conexión de Apache mediante el Consola de administración de AWS
<a name="get-connection-string-console"></a>

1. Abra la consola de Amazon MSK en [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/).

1. La tabla muestra todos los clústeres de la región actual en esta cuenta. Elija el nombre de un clúster para ver su descripción.

1. En la página **Resumen del clúster**, elija **Ver información del cliente**. Aquí se muestran los agentes de arranque, así como la cadena de ZooKeeper conexión de Apache.

### Obtención de la cadena de ZooKeeper conexión de Apache mediante AWS CLI
<a name="get-connection-string-cli"></a>

1. Si no conocee el nombre de recurso de Amazon (ARN) de su clúster, puede encontrarlo enumerando todos los clústeres de su cuenta. Para obtener más información, consulte [Enumeración de clústeres de Amazon MSK](msk-list-clusters.md).

1. Para obtener la cadena de ZooKeeper conexión de Apache, junto con otra información sobre el clúster, ejecute el siguiente comando y *ClusterArn* reemplácelo por el ARN del clúster. 

   ```
   aws kafka describe-cluster --cluster-arn ClusterArn
   ```

   El resultado de este comando `describe-cluster` tendrá un aspecto similar al siguiente.

   ```
   {
       "ClusterInfo": {
           "BrokerNodeGroupInfo": {
               "BrokerAZDistribution": "DEFAULT",
               "ClientSubnets": [
                   "subnet-0123456789abcdef0",
                   "subnet-2468013579abcdef1",
                   "subnet-1357902468abcdef2"
               ],
               "InstanceType": "kafka.m5.large",
               "StorageInfo": {
                   "EbsStorageInfo": {
                       "VolumeSize": 1000
                   }
               }
           },
           "ClusterArn": "arn:aws:kafka:us-east-1:111122223333:cluster/testcluster/12345678-abcd-4567-2345-abcdef123456-2",
           "ClusterName": "testcluster",
           "CreationTime": "2018-12-02T17:38:36.75Z",
           "CurrentBrokerSoftwareInfo": {
               "KafkaVersion": "2.2.1"
           },
           "CurrentVersion": "K13V1IB3VIYZZH",
           "EncryptionInfo": {
               "EncryptionAtRest": {
                   "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:555555555555:key/12345678-abcd-2345-ef01-abcdef123456"
               }
           },
           "EnhancedMonitoring": "DEFAULT",
           "NumberOfBrokerNodes": 3,
           "State": "ACTIVE",
           "ZookeeperConnectString": "10.0.1.101:2018,10.0.2.101:2018,10.0.3.101:2018"
       }
   }
   ```

   El ejemplo de JSON anterior muestra la clave `ZookeeperConnectString` en la salida del comando `describe-cluster`. Copie el valor correspondiente a esta clave y guárdelo para cuando necesite crear un tema en el clúster.
**importante**  
Su clúster de Amazon MSK debe estar en `ACTIVE` ese estado para que pueda obtener la cadena de ZooKeeper conexión de Apache. Cuando un clúster todavía está en el estado `CREATING`, la salida del comando `describe-cluster` no incluye `ZookeeperConnectString`. Si este es el caso, espere unos minutos y vuelva a ejecutar `describe-cluster` después de que el clúster alcance el estado `ACTIVE`.

### Obtener la cadena de ZooKeeper conexión de Apache mediante la API
<a name="get-connection-string-api"></a>

Para obtener la cadena de ZooKeeper conexión de Apache mediante la API, consulte [DescribeCluster](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster).

## KRaft modo
<a name="kraft-intro"></a>

Amazon MSK introdujo la compatibilidad con KRaft (Apache Kafka Raft) en la versión 3.7.x de Kafka. La comunidad de Apache Kafka se desarrolló KRaft para reemplazar a Apache en la administración de metadatos en los clústeres de [Apache ZooKeeper](#msk-get-connection-string) Kafka. En el KRaft modo, los metadatos del clúster se propagan dentro de un grupo de controladores de Kafka, que forman parte del clúster de Kafka, en lugar de propagarse entre nodos. ZooKeeper KRaftLos controladores se incluyen sin coste adicional para usted y no requieren ninguna configuración o administración adicionales por su parte. Consulte el [KIP-500](https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum) para obtener más información sobre. KRaft

Estos son algunos puntos a tener en cuenta sobre el KRaft modo en MSK:
+ KRaft el modo solo está disponible para clústeres nuevos. Una vez creado el clúster, no se puede cambiar de modo de metadatos.
+ En la consola de MSK, puede crear un clúster basado en Kraft seleccionando la versión 3.7.x de Kafka y marcando la casilla de verificación de la ventana de creación del KRaft clúster.
+ Para crear un clúster en KRaft modo mediante la API [https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster)o [https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters.html#CreateClusterV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters.html#CreateClusterV2)las operaciones de MSK, debe utilizarlo como versión. `3.7.x.kraft` `3.7.x`Utilícela como versión para crear un clúster en el ZooKeeper modo.
+ El número de particiones por agente es el mismo en los clústeres KRaft y ZooKeeper basados en ellos. Sin embargo, KRaft le permite alojar más particiones por clúster al aprovisionar [más agentes en un clúster](https://docs.aws.amazon.com/msk/latest/developerguide/limits.html).
+ No es necesario realizar cambios en la API para usar el KRaft modo en Amazon MSK. Sin embargo, si sus clientes siguen utilizando la cadena de conexión `--zookeeper` en la actualidad, debe actualizar a sus clientes para que usen la cadena de conexión `--bootstrap-server` para conectarse a su clúster. El indicador `--zookeeper` está obsoleto en la versión 2.5 de Apache Kafka y se elimina a partir de la versión 3.0 de Kafka. Por lo tanto, le recomendamos que utilice las versiones recientes del cliente Apache Kafka y la cadena de conexión `--bootstrap-server` para todas las conexiones a su clúster.
+ ZooKeeper El modo sigue estando disponible en todas las versiones publicadas en las que Apache Kafka también admite zookeeper. Consulte [Versiones compatibles de Apache Kafka](supported-kafka-versions.md) para obtener más información sobre la finalización de la compatibilidad con las versiones y futuras actualizaciones de Apache Kafka.
+ Debe comprobar que todas las herramientas que utilice son capaces de utilizar Kafka Admin sin necesidad de conexiones. APIs ZooKeeper Consulte [Utilice LinkedIn el control de crucero para Apache Kafka con Amazon MSK](cruise-control.md) para conocer los pasos actualizados para conectar el clúster a Cruise Control. El Cruise Control también incluye instrucciones para utilizar el [Cruise Control sin ZooKeeper él](https://github.com/linkedin/cruise-control/wiki/Run-without-ZooKeeper).
+ No necesita acceder directamente a los KRaft controladores del clúster para realizar ninguna acción administrativa. Sin embargo, si utiliza la supervisión abierta para recopilar métricas, también necesitará los puntos de conexión de DNS de sus controladores para recopilar algunas métricas del clúster que no estén relacionadas con los controladores. Puede obtener estos puntos finales de DNS desde la consola de MSK o mediante la operación de la [ListNodes](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-nodes.html#ListNodes)API. Consulte [Supervisión de un clúster de MSK aprovisionado con Prometheus](open-monitoring.md) los pasos actualizados para configurar la supervisión abierta de los clústeres basados. KRaft
+ No hay [CloudWatch métricas](https://docs.aws.amazon.com/msk/latest/developerguide/metrics-details.html) adicionales que debas supervisar para los clústeres de KRaft modos sobre los clústeres de ZooKeeper modos. MSK administra los KRaft controladores que se utilizan en los clústeres.
+ Puede seguir gestionando el ACLs uso de clústeres en KRaft modo activo mediante la cadena de `--bootstrap-server` conexión. No debe usar la cadena de `--zookeeper` conexión para administrar ACLs. Consulte [Apache Kafka ACLs](msk-acls.md).
+ En KRaft el modo, los metadatos del clúster se almacenan en KRaft controladores de Kafka y no en ZooKeeper nodos externos. Por lo tanto, no necesita controlar el acceso a los nodos del controlador por separado, [como lo hace con ZooKeeper los nodos](https://docs.aws.amazon.com/msk/latest/developerguide/zookeeper-security.html).

# Tema: Operaciones
<a name="msk-topic-operations-information"></a>

Puede usar Amazon MSK APIs para administrar los temas de su clúster aprovisionado de MSK sin necesidad de configurar y mantener los clientes de administración de Kafka. Con ellos APIs, puede definir o leer las propiedades de los temas, como el factor de replicación y el recuento de particiones, junto con los ajustes de configuración, como las políticas de retención y limpieza. Puede administrar los temas de Kafka mediante programación mediante sus interfaces conocidas, incluidas AWS CLI, y AWS SDKs. AWS CloudFormation También APIs están integradas en la consola de Amazon MSK, lo que permite agrupar todas las operaciones relacionadas con los temas en un solo lugar. Ahora puede crear o actualizar temas con solo unos pocos clics utilizando los valores predeterminados guiados y, al mismo tiempo, obtener una visibilidad completa de las configuraciones de los temas, la información a nivel de partición y las métricas.

**importante**  
Las respuestas de la API de estos temas reflejan datos que se actualizan aproximadamente cada minuto. Para ver el estado más actual del tema después de realizar cambios, espere aproximadamente un minuto antes de realizar la consulta.

## Requisitos para usar el tema APIs
<a name="topic-operations-requirements"></a>
+ El clúster debe ser un clúster aprovisionado por MSK. No APIs están disponibles para los clústeres sin servidor de MSK.
+ El clúster debe ejecutar la versión 3.6.0 o posterior de Apache Kafka. Para obtener más información sobre las versiones compatibles, consulte. [Versiones compatibles de Apache Kafka](supported-kafka-versions.md)
+ El clúster debe estar en ese `ACTIVE` estado. Para obtener más información acerca de los estados del clúster, consulte [Descripción de los estados de los clústeres de MSK aprovisionados](msk-cluster-states.md).
+ Debe tener los permisos de IAM adecuados. Para obtener más información, consulte [Permisos de IAM para las operaciones de los temas APIs](#topic-operations-permissions).

## Permisos de IAM para las operaciones de los temas APIs
<a name="topic-operations-permissions"></a>

Para llamarlas APIs, debe tener los permisos de IAM adecuados. En la siguiente tabla se enumeran los permisos necesarios para cada API.


**Permisos necesarios para las operaciones de los temas APIs**  

| API | Permisos necesarios | Recurso | 
| --- | --- | --- | 
| ListTopics |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | Clúster: ARN, tema: ARN | 
| DescribeTopic |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:DescribeTopicDynamicConfiguration`  | Clúster: ARN, tema: ARN | 
| DescribeTopicPartitions |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:DescribeTopicDynamicConfiguration`  | Clúster: ARN, tema: ARN | 
| CreateTopic |  `kafka-cluster:Connect` `kafka-cluster:CreateTopic`  | Clúster: ARN, tema: ARN | 
| DeleteTopic |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:DeleteTopic`  | Clúster: ARN, tema: ARN | 
| UpdateTopic |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterTopic` `kafka-cluster:AlterTopicDynamicConfiguration`  | Clúster: ARN, tema: ARN | 

**nota**  
Para`kafka-cluster:Connect`, especifique el ARN del clúster en su política de IAM. Para todas las demás acciones, especifique el ARN del tema en su política de IAM.

**nota**  
Para ello`ListTopics`, puede utilizar un comodín (\$1) para hacer coincidir todos los temas de un clúster. Por ejemplo: `arn:aws:kafka:us-east-1:123456789012:topic/my-cluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2/*`.

Para obtener más información sobre el control de acceso de IAM para Amazon MSK, consulte. [Control de acceso de IAM](iam-access-control.md)

**Topics**
+ [Requisitos para usar el tema APIs](#topic-operations-requirements)
+ [Permisos de IAM para las operaciones de los temas APIs](#topic-operations-permissions)
+ [Listar los temas de un clúster de Amazon MSK](msk-list-topics.md)
+ [Obtenga información detallada sobre un tema](msk-describe-topic.md)
+ [Ver la información de la partición de un tema](msk-describe-topic-partitions.md)
+ [Crear temas en un clúster de Amazon MSK](msk-create-topic.md)
+ [Actualizar un tema en un clúster de Amazon MSK](msk-update-topic.md)
+ [Eliminar un tema de un clúster de Amazon MSK](msk-delete-topic.md)

# Listar los temas de un clúster de Amazon MSK
<a name="msk-list-topics"></a>

Puede enumerar todos los temas de su clúster aprovisionado de MSK para ver los metadatos básicos, como el número de particiones y los factores de replicación. Esto resulta útil para supervisar los temas del clúster, realizar comprobaciones de inventario o identificar los temas que deben investigarse más a fondo.

**nota**  
La `ListTopics` API proporciona metadatos de temas básicos. Para obtener información detallada sobre un tema específico, incluidos su estado y configuración actuales, usa la `DescribeTopic` API. Para obtener más información, consulte [Obtenga información detallada sobre un tema](msk-describe-topic.md).

**nota**  
Esta respuesta de la API refleja los datos que se actualizan aproximadamente cada minuto. Para ver el estado más actual del tema después de realizar cambios, espere aproximadamente un minuto antes de realizar la consulta.

**Topics**
+ [Enumere los temas mediante el Consola de administración de AWS](list-topics-console.md)
+ [Enumere los temas utilizando el AWS CLI](list-topics-cli.md)
+ [Enumere los temas que utilizan la API](list-topics-api.md)

# Enumere los temas mediante el Consola de administración de AWS
<a name="list-topics-console"></a>

1. ¿Iniciar sesión en la Consola de administración de AWS consola Amazon MSK y abrirla desde [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. En la lista de clústeres, elija el nombre del clúster para el que desee enumerar los temas.

1. En la página de detalles del clúster, seleccione la pestaña **Temas**.

1. En la tabla se muestran todos los temas del clúster, incluidos el nombre del tema, el número de particiones, el factor de replicación y el recuento de out-of-sync réplicas.

# Enumere los temas utilizando el AWS CLI
<a name="list-topics-cli"></a>

Ejecute el siguiente comando y *ClusterArn* sustitúyalo por el nombre de recurso de Amazon (ARN) del clúster. Si no tiene el ARN para su clúster, puede encontrarlo enumerando todos los clústeres. Para obtener más información, consulte [Enumeración de clústeres de Amazon MSK](msk-list-clusters.md).

```
aws kafka list-topics --cluster-arn ClusterArn
```

El resultado de este comando tendrá un aspecto similar al siguiente.

```
{
    "topics": [
        {
            "topicArn": "arn:aws:kafka:us-east-1:123456789012:topic/MyCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2/MyTopic",
            "topicName": "MyTopic",
            "partitionCount": 3,
            "replicationFactor": 3,
            "outOfSyncReplicaCount": 0
        },
        {
            "topicArn": "arn:aws:kafka:us-east-1:123456789012:topic/MyCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2/AnotherTopic",
            "topicName": "AnotherTopic",
            "partitionCount": 6,
            "replicationFactor": 3,
            "outOfSyncReplicaCount": 1
        }
    ]
}
```

## Paginación de resultados
<a name="list-topics-pagination"></a>

Si su clúster tiene muchos temas, puede usar la paginación para recuperar los resultados en lotes más pequeños. Utilice el `--max-results` parámetro para especificar el número máximo de temas que se van a devolver y utilice el `--next-token` parámetro para recuperar la siguiente página de resultados.

```
aws kafka list-topics --cluster-arn ClusterArn --max-results 10
```

Si hay más resultados disponibles, la respuesta incluye un `nextToken` valor. Utilice este token para recuperar la siguiente página de resultados.

```
aws kafka list-topics --cluster-arn ClusterArn --max-results 10 --next-token NextToken
```

## Filtrar temas por nombre
<a name="list-topics-filter"></a>

Puede filtrar la lista de temas especificando un prefijo mediante el `--topic-name-filter` parámetro. Esto devuelve solo los temas cuyos nombres comiencen con el prefijo especificado.

```
aws kafka list-topics --cluster-arn ClusterArn --topic-name-filter "prod-"
```

Este comando devuelve solo los temas cuyos nombres comiencen por`prod-`, como `prod-orders` o`prod-inventory`.

# Enumere los temas que utilizan la API
<a name="list-topics-api"></a>

Para ver una lista de los temas que utilizan la API, consulte [ListTopics](https://docs.aws.amazon.com//msk/1.0/apireference/v1-clusters-clusterarn-topics.html#ListTopics).

# Obtenga información detallada sobre un tema
<a name="msk-describe-topic"></a>

Puede recuperar información detallada sobre un tema específico de su clúster aprovisionado de MSK, incluido su estado actual, el número de particiones, el factor de replicación y la configuración. Esto resulta útil para solucionar problemas, validar la configuración de los temas o supervisar el estado de los temas durante las operaciones.

**nota**  
Esta respuesta de la API refleja los datos que se actualizan aproximadamente cada minuto. Para ver el estado más actual del tema después de realizar cambios, espere aproximadamente un minuto antes de realizar la consulta.

**Topics**
+ [Describa un tema utilizando el Consola de administración de AWS](describe-topic-console.md)
+ [Describa un tema utilizando el AWS CLI](describe-topic-cli.md)
+ [Describa un tema mediante la API](describe-topic-api.md)

# Describa un tema utilizando el Consola de administración de AWS
<a name="describe-topic-console"></a>

1. ¿Iniciar sesión en la Consola de administración de AWS consola Amazon MSK y abrirla desde [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. En la lista de clústeres, elija el nombre del clúster que contiene el tema que desea describir.

1. En la página de detalles del clúster, seleccione la pestaña **Temas**.

1. En la lista de temas, elige el nombre del tema que quieres ver.

1. La página de detalles del tema muestra información sobre el tema, incluidos su estado, el número de particiones, el factor de replicación y los ajustes de configuración.

# Describa un tema utilizando el AWS CLI
<a name="describe-topic-cli"></a>

Ejecute el siguiente comando y *ClusterArn* sustitúyalo por el nombre de recurso de Amazon (ARN) del clúster y *TopicName* por el nombre del tema que desee describir.

```
aws kafka describe-topic --cluster-arn ClusterArn --topic-name TopicName
```

El resultado de este comando tendrá un aspecto similar al siguiente.

```
{
    "topicArn": "arn:aws:kafka:us-east-1:123456789012:topic/MyCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2/MyTopic",
    "topicName": "MyTopic",
    "partitionCount": 3,
    "replicationFactor": 3,
    "configs": "Y29tcHJlc3Npb24udHlwZT1wcm9kdWNlcgpyZXRlbnRpb24ubXM9NjA0ODAwMDAw",
    "status": "ACTIVE"
}
```

## Entender el estado del tema
<a name="describe-topic-status"></a>

El `status` campo indica el estado actual del tema. En la siguiente tabla se describen los posibles valores de estado.


**Valores de estado del tema**  

| Status | Description (Descripción) | 
| --- | --- | 
| CREATING | Se está creando el tema. | 
| ACTIVE | El tema está activo y listo para usarse. | 
| ACTUALIZANDO | Se está actualizando la configuración del tema. | 
| ELIMINANDO | Se está eliminando el tema. | 

## Descripción de las configuraciones de los temas
<a name="describe-topic-configs"></a>

El `configs` campo contiene las propiedades de configuración de Kafka del tema, codificadas en formato Base64. Para ver la configuración en un formato legible, debe decodificar la cadena Base64.

El siguiente ejemplo muestra cómo decodificar la configuración mediante el `base64` comando en Linux o macOS.

```
echo "Y29tcHJlc3Npb24udHlwZT1wcm9kdWNlcgpyZXRlbnRpb24ubXM9NjA0ODAwMDAw" | base64 --decode
```

El resultado decodificado muestra las propiedades de configuración del tema en formato clave-valor.

```
compression.type=producer
retention.ms=604800000
```

Para obtener más información sobre las propiedades de configuración a nivel de tema, consulte. [Configuración a nivel de tema de Amazon MSK](msk-configuration-properties.md#msk-topic-confinguration)

# Describa un tema mediante la API
<a name="describe-topic-api"></a>

Para describir un tema sobre el uso de la API, consulte [DescribeTopic](https://docs.aws.amazon.com//msk/1.0/apireference/v1-clusters-clusterarn-topics-topicname.html#DescribeTopic).

# Ver la información de la partición de un tema
<a name="msk-describe-topic-partitions"></a>

Puedes recuperar información detallada sobre las particiones de un tema específico de tu clúster aprovisionado de MSK. Esta información incluye el número de partición, el agente líder, los agentes de réplicas y las réplicas sincronizadas (ISR). Esto resulta útil para supervisar la distribución de las particiones, identificar las particiones que no están suficientemente replicadas o solucionar problemas de replicación.

**nota**  
Esta respuesta de la API refleja los datos que se actualizan aproximadamente cada minuto. Para ver el estado más actual del tema después de realizar cambios, espere aproximadamente un minuto antes de realizar la consulta.

**Topics**
+ [Vea la información de la partición mediante el Consola de administración de AWS](describe-topic-partitions-console.md)
+ [Vea la información de la partición mediante el AWS CLI](describe-topic-partitions-cli.md)
+ [Vea la información de las particiones mediante la API](describe-topic-partitions-api.md)

# Vea la información de la partición mediante el Consola de administración de AWS
<a name="describe-topic-partitions-console"></a>

1. ¿Iniciar sesión en la Consola de administración de AWS consola Amazon MSK y abrirla desde [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. En la lista de clústeres, elija el nombre del clúster que contiene el tema.

1. En la página de detalles del clúster, seleccione la pestaña **Temas**.

1. En la lista de temas, elija el nombre del tema del que quiere ver la información de la partición.

1. En la página de detalles del tema, se muestra la información de la partición, con el número de partición, el agente principal, las réplicas y las réplicas sincronizadas de cada partición.

# Vea la información de la partición mediante el AWS CLI
<a name="describe-topic-partitions-cli"></a>

Ejecute el siguiente comando y *ClusterArn* sustitúyalo por el nombre de recurso de Amazon (ARN) del clúster y *TopicName* por el nombre del tema.

```
aws kafka describe-topic-partitions --cluster-arn ClusterArn --topic-name TopicName
```

El resultado de este comando tendrá un aspecto similar al siguiente.

```
{
    "partitions": [
        {
            "partition": 0,
            "leader": 1,
            "replicas": [1, 2, 3],
            "isr": [1, 2, 3]
        },
        {
            "partition": 1,
            "leader": 2,
            "replicas": [2, 3, 1],
            "isr": [2, 3, 1]
        },
        {
            "partition": 2,
            "leader": 3,
            "replicas": [3, 1, 2],
            "isr": [3, 1]
        }
    ]
}
```

## Entender la información de las particiones
<a name="describe-topic-partitions-fields"></a>

La respuesta incluye la siguiente información para cada partición:
+ **partición**: el número de partición. Las particiones se numeran empezando por 0.
+ **líder**: el ID de intermediario del líder de esta partición. El líder gestiona todas las solicitudes de lectura y escritura de la partición.
+ **réplicas**: la lista de corredores IDs que tienen réplicas de esta partición. Esto incluye tanto las réplicas como las sincronizadas. out-of-sync
+ **isr**: la lista de corredores IDs que son réplicas sincronizadas. Estas réplicas están totalmente alineadas con el líder y, si es necesario, pueden asumir el papel de líder.

En el ejemplo anterior, la partición 2 tiene una out-of-sync réplica. La `replicas` lista incluye al corredor 2, pero no. `isr` Esto indica que el corredor 2 no está completamente al mismo nivel que el líder de esta partición.

## Paginación de resultados
<a name="describe-topic-partitions-pagination"></a>

Si el tema tiene muchas particiones, puede usar la paginación para recuperar los resultados en lotes más pequeños. Utilice el `--max-results` parámetro para especificar el número máximo de particiones que se van a devolver y utilice el `--next-token` parámetro para recuperar la siguiente página de resultados.

```
aws kafka describe-topic-partitions --cluster-arn ClusterArn --topic-name TopicName --max-results 10
```

Si hay más resultados disponibles, la respuesta incluye un `nextToken` valor. Utilice este token para recuperar la siguiente página de resultados.

```
aws kafka describe-topic-partitions --cluster-arn ClusterArn --topic-name TopicName --max-results 10 --next-token NextToken
```

## Casos de uso comunes
<a name="describe-topic-partitions-use-cases"></a>

La visualización de la información de las particiones es útil en varios escenarios:
+ **Identificación de las particiones infrarreplicadas**: compare las `isr` listas `replicas` y para identificar las particiones en las que algunas réplicas no están sincronizadas. Esto puede indicar problemas de rendimiento o problemas con los intermediarios.
+ **Supervisión de la distribución de** las particiones: compruebe que los líderes de las particiones estén distribuidos uniformemente entre los corredores para garantizar una carga equilibrada.
+ **Solución de problemas de replicación**: examine la lista de ISR para identificar qué intermediarios tienen problemas para mantener el ritmo de la replicación.
+ **Planear el reequilibrio de particiones**: utilice esta información para comprender el diseño actual de las particiones antes de realizar las operaciones de reequilibrio.

# Vea la información de las particiones mediante la API
<a name="describe-topic-partitions-api"></a>

Para ver la información de las particiones mediante la API, consulte [DescribeTopicPartitions](https://docs.aws.amazon.com//msk/1.0/apireference/v1-clusters-clusterarn-topics-topicname-partitions.html#DescribeTopicPartitions).

# Crear temas en un clúster de Amazon MSK
<a name="msk-create-topic"></a>

Puedes crear temas en tu clúster aprovisionado de MSK directamente con esta API sin tener que configurar ningún Kafka personalizado. AdminClient Al crear un tema, debe especificar el nombre del tema, el número de particiones, el factor de replicación y, si lo desea, las configuraciones del tema.

**Topics**
+ [Cree temas mediante el Consola de administración de AWS](create-topic-console.md)
+ [Cree un tema mediante el AWS CLI](create-topic-cli.md)
+ [Cree un tema mediante la API](create-topic-api.md)

# Cree temas mediante el Consola de administración de AWS
<a name="create-topic-console"></a>

1. ¿Iniciar sesión en la Consola de administración de AWS consola Amazon MSK y abrirla desde [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. En la lista de clústeres, elija el nombre del clúster en el que desee crear los temas.

1. En la página de detalles del clúster, seleccione la pestaña **Temas**.

1. Seleccione **Crear tema**.

1. Introduzca el nombre del tema, el número de particiones y el factor de replicación. Si lo desea, añada configuraciones. Puede crear varios temas a la vez.

1. Seleccione **Crear tema**.

# Cree un tema mediante el AWS CLI
<a name="create-topic-cli"></a>

Ejecute el siguiente comando y *ClusterArn* sustitúyalo por el nombre de recurso de Amazon (ARN) del clúster. Si no tiene el ARN para su clúster, puede encontrarlo enumerando todos los clústeres. Para obtener más información, consulte [Enumeración de clústeres de Amazon MSK](msk-list-clusters.md).

```
aws kafka create-topic --cluster-arn ClusterArn --topic-name MyTopic --partition-count 3 --replication-factor 3
```

El resultado de este comando tendrá un aspecto similar al siguiente.

```
{
    "topicArn": "arn:aws:kafka:us-east-1:123456789012:topic/MyCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2/MyTopic",
    "topicName": "MyTopic",
    "status": "CREATING"
}
```

# Cree un tema mediante la API
<a name="create-topic-api"></a>

Para crear un tema con la API, consulte [CreateTopic](https://docs.aws.amazon.com//msk/1.0/apireference/v1-clusters-clusterarn-topics.html#CreateTopic).

# Actualizar un tema en un clúster de Amazon MSK
<a name="msk-update-topic"></a>

Actualice el recuento de particiones o las configuraciones a nivel de tema de un tema existente. Esta operación modifica el tema sin necesidad de volver a crearlo.

**nota**  
Puede actualizar el recuento de particiones o las configuraciones de los temas en una sola llamada a la API, pero no de forma simultánea. Para actualizar ambas, realiza llamadas a la API por separado.

**Topics**
+ [Actualiza un tema mediante el Consola de administración de AWS](update-topic-console.md)
+ [Actualice un tema mediante el AWS CLI](update-topic-cli.md)
+ [Actualiza un tema mediante la API](update-topic-api.md)

# Actualiza un tema mediante el Consola de administración de AWS
<a name="update-topic-console"></a>

1. ¿Iniciar sesión en la Consola de administración de AWS consola Amazon MSK y abrirla desde [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. En la lista de clústeres, elija el nombre del clúster que contiene el tema que desee actualizar.

1. En la página de detalles del clúster, seleccione la pestaña **Temas**.

1. Seleccione el tema que desee actualizar y, a continuación, elija **Editar la configuración de la partición** o **Editar la configuración** desde **Acciones**.

1. Actualice el recuento de particiones o las configuraciones según sea necesario.

1. Seleccione **Save**.

# Actualice un tema mediante el AWS CLI
<a name="update-topic-cli"></a>

Ejecuta el siguiente comando y *ClusterArn* sustitúyelo por el nombre de recurso de Amazon (ARN) del clúster y *TopicName* por el nombre del tema que deseas actualizar.

```
aws kafka update-topic --cluster-arn ClusterArn --topic-name TopicName --partition-count 6
```

El resultado de este comando tendrá un aspecto similar al siguiente.

```
{
    "topicArn": "arn:aws:kafka:us-east-1:123456789012:topic/MyCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2/MyTopic",
    "topicName": "MyTopic",
    "status": "UPDATING"
}
```

# Actualiza un tema mediante la API
<a name="update-topic-api"></a>

Para actualizar un tema mediante la API, consulte [UpdateTopic](https://docs.aws.amazon.com//msk/1.0/apireference/v1-clusters-clusterarn-topics-topicname.html#UpdateTopic).

# Eliminar un tema de un clúster de Amazon MSK
<a name="msk-delete-topic"></a>

Al eliminar un tema, se eliminan permanentemente todos sus datos, metadatos e información de particiones. Esta operación no se puede deshacer.

**Topics**
+ [Elimine un tema mediante el Consola de administración de AWS](delete-topic-console.md)
+ [Elimine un tema mediante el AWS CLI](delete-topic-cli.md)
+ [Elimine un tema mediante la API](delete-topic-api.md)

# Elimine un tema mediante el Consola de administración de AWS
<a name="delete-topic-console"></a>

1. ¿Iniciar sesión en la Consola de administración de AWS consola Amazon MSK y abrirla desde [https://console.aws.amazon.com/msk/casa? region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/).

1. En la lista de clústeres, elija el nombre del clúster que contiene el tema que desea eliminar.

1. En la página de detalles del clúster, seleccione la pestaña **Temas**.

1. Seleccione los temas que desee eliminar y, a continuación, elija **Eliminar** de **las acciones**.

1. Confirme la eliminación y, a continuación, seleccione **Eliminar**.

# Elimine un tema mediante el AWS CLI
<a name="delete-topic-cli"></a>

Ejecuta el siguiente comando y *ClusterArn* sustitúyelo por el nombre de recurso de Amazon (ARN) del clúster y *TopicName* por el nombre del tema que deseas eliminar.

```
aws kafka delete-topic --cluster-arn ClusterArn --topic-name TopicName
```

El resultado de este comando tendrá un aspecto similar al siguiente.

```
{
    "topicArn": "arn:aws:kafka:us-east-1:123456789012:topic/MyCluster/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2/MyTopic",
    "topicName": "MyTopic",
    "status": "DELETING"
}
```

# Elimine un tema mediante la API
<a name="delete-topic-api"></a>

Para eliminar un tema mediante la API, consulte [DeleteTopic](https://docs.aws.amazon.com//msk/1.0/apireference/v1-clusters-clusterarn-topics-topicname.html#DeleteTopic).

# Recursos de Amazon MSK
<a name="resources"></a>

El término *recursos* tiene dos significados en Amazon MSK, según el contexto. En el contexto de APIs un recurso, es una estructura en la que se puede invocar una operación. Para obtener una lista de estos recursos y las operaciones que puede invocar en ellos, consulte [Recursos](https://docs.aws.amazon.com/msk/1.0/apireference/resources.html) en la referencia de la API de Amazon MSK. En el contexto de [Control de acceso de IAM](iam-access-control.md), un recurso es una entidad a la que puede permitir o denegar el acceso, tal y como se define en la sección [Recursos de la política de autorización](kafka-actions.md#msk-iam-resources).

# Versiones de Apache Kafka
<a name="kafka-versions"></a>

Cuando se crea un clúster de Amazon MSK, debe especificar la versión de Apache Kafka que desea que tenga. También puede actualizar la versión de Apache Kafka de un clúster existente. Los temas que se presentan en este capítulo lo ayudan a comprender los plazos del soporte de las versiones de Kafka y las prácticas recomendadas.

**Topics**
+ [Versiones compatibles de Apache Kafka](supported-kafka-versions.md)
+ [Soporte de las versiones de Amazon MSK](version-support.md)

# Versiones compatibles de Apache Kafka
<a name="supported-kafka-versions"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) es compatible con las siguientes versiones de Apache Kafka y Amazon MSK. La comunidad de Apache Kafka ofrece soporte para cada versión durante aproximadamente 12 meses después de su fecha de publicación. Para obtener más información, consulte la [política de fin de vida (EOL) de Apache Kafka](https://cwiki.apache.org/confluence/display/KAFKA/Time+Based+Release+Plan#TimeBasedReleasePlan-WhatIsOurEOLPolicy?).

La siguiente tabla enumera las versiones de Apache Kafka que admite Amazon MSK.


| Versión Apache Kafka | Fecha de publicación de MSK | Fecha de finalización del soporte | 
| --- | --- | --- | 
| <a name="1.1.1-title"></a>[1.1.1](https://archive.apache.org/dist/kafka/1.1.1/RELEASE_NOTES.html) | -- | 05 de junio de 2024 | 
| <a name="2.1.0-title"></a>[2.1.0](https://archive.apache.org/dist/kafka/2.1.0/RELEASE_NOTES.html) | -- | 2024-06-05 | 
| <a name="2.2.1-title"></a>[2.2.1](https://archive.apache.org/dist/kafka/2.2.1/RELEASE_NOTES.html) | 31/07/2019 | 2024-06-08 | 
| <a name="2.3.1-title"></a>[2.3.1](https://archive.apache.org/dist/kafka/2.3.1/RELEASE_NOTES.html) | 19/12/2019 | 2024-06-08 | 
| <a name="2.4.1-title"></a>[2.4.1](https://archive.apache.org/dist/kafka/2.4.1/RELEASE_NOTES.html) | 02/04/2020 | 2024-06-08 | 
| <a name="2.4.1.1-title"></a>[2.4.1.1](https://archive.apache.org/dist/kafka/2.4.1/RELEASE_NOTES.html) | 2020-09-09 | 2024-06-08 | 
| <a name="2.5.1-title"></a>[2.5.1](https://archive.apache.org/dist/kafka/2.5.1/RELEASE_NOTES.html) | 2020-09-30 | 2024-06-08 | 
| <a name="2.6.0-title"></a>[2.6.0](https://archive.apache.org/dist/kafka/2.6.0/RELEASE_NOTES.html) | 2020-10-21 | 2024-09-11 | 
| <a name="2.6.1-title"></a>[2.6.1](https://archive.apache.org/dist/kafka/2.6.1/RELEASE_NOTES.html) | 2021-01-19 | 2024-09-11 | 
| <a name="2.6.2-title"></a>[2.6.2](https://archive.apache.org/dist/kafka/2.6.2/RELEASE_NOTES.html) | 2021-04-29 | 2024-09-11 | 
| <a name="2.6.3-title"></a>[2.6.3](https://archive.apache.org/dist/kafka/2.6.3/RELEASE_NOTES.html) | 2021-12-21 | 2024-09-11 | 
| <a name="2.7.0-title"></a>[2.7.0](https://archive.apache.org/dist/kafka/2.7.0/RELEASE_NOTES.html) | 2020-12-29 | 2024-09-11 | 
| <a name="2.7.1-title"></a>[2.7.1](https://archive.apache.org/dist/kafka/2.7.1/RELEASE_NOTES.html) | 2021-05-25 | 2024-09-11 | 
| <a name="2.7.2-title"></a>[2.7.2](https://archive.apache.org/dist/kafka/2.7.2/RELEASE_NOTES.html) | 2021-12-21 | 2024-09-11 | 
| <a name="2.8.0-title"></a>[2.8.0](https://archive.apache.org/dist/kafka/2.8.0/RELEASE_NOTES.html) | 2021-05-19 | 2024-09-11 | 
| <a name="2.8.1-title"></a>[2.8.1](https://archive.apache.org/dist/kafka/2.8.1/RELEASE_NOTES.html) | 2022-10-28 | 2024-09-11 | 
| <a name="2.8.2-tiered-title"></a>[2.8.2, en niveles](https://archive.apache.org/dist/kafka/2.8.2/RELEASE_NOTES.html) | 28 de octubre de 2022 | 2025-01-14 | 
| <a name="3.1.1-title"></a>[3.1.1](https://archive.apache.org/dist/kafka/3.1.1/RELEASE_NOTES.html) | 2022-06-22 | 2024-09-11 | 
| <a name="3.2.0-title"></a>[3.2.0](https://archive.apache.org/dist/kafka/3.2.0/RELEASE_NOTES.html) | 2022-06-22 | 2024-09-11 | 
| <a name="3.3.1-title"></a>[3.3.1](https://archive.apache.org/dist/kafka/3.3.1/RELEASE_NOTES.html) | 2022-10-26 | 2024-09-11 | 
| <a name="3.3.2-title"></a>[3.3.2](https://archive.apache.org/dist/kafka/3.3.2/RELEASE_NOTES.html) | 2023-03-02 | 2024-09-11 | 
| <a name="3.4.0-title"></a>[3.4.0](https://archive.apache.org/dist/kafka/3.4.0/RELEASE_NOTES.html) | 2023-05-04 | 2025-08-04 | 
| <a name="3.5.1-title"></a>[3.5.1](https://archive.apache.org/dist/kafka/3.5.1/RELEASE_NOTES.html) | 2023-09-26 | 2025-10-23 | 
| <a name="3.6.0-title"></a>[3.6.0](https://archive.apache.org/dist/kafka/3.6.0/RELEASE_NOTES.html) | 2023-11-16 | 2026-06-01 | 
| <a name="3.7.kraft"></a>[3.7.x](https://archive.apache.org/dist/kafka/3.7.0/RELEASE_NOTES.html) | 2024-05-29 | -- | 
| <a name="3.8-title"></a>[3.8.x](https://downloads.apache.org/kafka/3.8.0/RELEASE_NOTES.html) | 2025-02-20 | -- | 
| <a name="3.9-title"></a>[3.9.x (recomendado)](https://downloads.apache.org/kafka/3.9.0/RELEASE_NOTES.html) | 2025-04-21 | -- | 
| <a name="4.0-title"></a>[4.0.x](https://downloads.apache.org/kafka/4.0.0/RELEASE_NOTES.html) | 2025-05-16 | -- | 
| <a name="4.1-title"></a>[4.1.x](https://downloads.apache.org/kafka/4.1.0/RELEASE_NOTES.html) | 15-10-25 | -- | 

Para obtener más información sobre la política de compatibilidad de versiones de Amazon MSK, consulte [Política de soporte de las versiones de Amazon MSK](version-support.md#version-support-policy).

## Amazon MSK versión 4.1.x
<a name="4.1"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora admite Apache Kafka versión 4.1, que introduce Colas como una característica en versión preliminar, un nuevo Protocolo de reequilibrio de Flujos con acceso anticipado y Réplicas líderes elegibles (ELR). Junto con estas características, Apache Kafka versión 4.1 incluye diversas correcciones de errores y mejoras.

Un aspecto destacado clave de Kafka 4.1 es la introducción de Colas como característica en versión preliminar. Puede utilizar varios consumidores para procesar mensajes de las mismas particiones temáticas, lo que mejora el paralelismo y el rendimiento de las cargas de trabajo que necesitan la entrega de mensajes. point-to-point El nuevo Protocolo de reequilibrio de Flujos se basa en el protocolo de reequilibrio de consumidores de Kafka 4.0 y amplía las capacidades de coordinación del agente para Kafka Streams, lo que permite asignaciones de tareas optimizadas y un reequilibrio más eficiente. Además, ELR ahora está habilitado de forma predeterminada para reforzar la disponibilidad.

Para obtener más información y una lista completa de mejoras y correcciones de errores, consulte las [notas de la versión de Apache Kafka 4.1](https://downloads.apache.org/kafka/4.1.0/RELEASE_NOTES.html).

Para empezar a usar Apache Kafka 4.1 en Amazon MSK, elija la versión 4.1.x al crear un nuevo clúster a través de, o. Consola de administración de AWS AWS CLI AWS SDKs También puede actualizar clústeres de MSK aprovisionados existentes mediante una actualización gradual en el lugar. Amazon MSK orquesta los reinicios de los agentes para mantener la disponibilidad y proteger los datos durante la actualización. La compatibilidad con la versión 4.1 de Kafka está disponible en todos los Regiones de AWS sitios donde se ofrece Amazon MSK.

## Amazon MSK versión 4.0.x
<a name="4.0"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora admite Apache Kafka versión 4.0. Esta versión incorpora los avances más recientes en administración de clústeres y rendimiento en MSK aprovisionado. Kafka 4.0 introduce un nuevo protocolo de reequilibrio de consumidores, ahora disponible de forma general, que ayuda a garantizar reequilibrios de grupos más fluidos y rápidos. Además, Kafka 4.0 requiere que los intermediarios y las herramientas utilicen Java 17, lo que proporciona una seguridad y un rendimiento mejorados, incluye varias correcciones de errores y mejoras, y hace obsoleta la administración de metadatos a través de Apache. ZooKeeper

Para obtener más información y una lista completa de mejoras y correcciones de errores, consulte las [notas de la versión de Apache Kafka 4.0](https://downloads.apache.org/kafka/4.0.0/RELEASE_NOTES.html).

## Amazon MSK versión 3.9.x (recomendada)
<a name="3.9"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora admite Apache Kafka versión 3.9. Esta versión mejora la funcionalidad de almacenamiento por niveles, ya que permite conservar los datos almacenados por niveles cuando se desactiva el almacenamiento por niveles en los temas. Las aplicaciones consumidoras pueden leer datos históricos desde el desplazamiento inicial del registro remoto (Rx), al tiempo que se mantienen desplazamientos de registro continuos entre el almacenamiento local y el remoto.

La versión 3.9 es la última versión compatible con ambos sistemas de administración ZooKeeper de KRaft metadatos. Amazon MSK proporcionará compatibilidad ampliada para la versión 3.9 durante un período mínimo de dos años a partir de su fecha de lanzamiento.

Para obtener más información y una lista completa de mejoras y correcciones de errores, consulte las [notas de la versión de Apache Kafka 3.9](https://downloads.apache.org/kafka/3.9.0/RELEASE_NOTES.html).

## Amazon MSK versión 3.8.x
<a name="3.8"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora admite Apache Kafka versión 3.8. Ahora puede crear nuevos clústeres con la versión 3.8 con KRAFT o con el ZooKeeper modo de administración de metadatos, o bien actualizar los clústeres ZooKeeper basados existentes para usar la versión 3.8. Apache Kafka versión 3.8 incluye varias correcciones de errores y nuevas características que mejoran el rendimiento. Entre las principales características nuevas se incluye la compatibilidad con la configuración del nivel de compresión. Esta versión permite optimizar aún más el rendimiento al usar tipos de compresión como lz4, zstd y gzip, ya que le permite cambiar el nivel de compresión predeterminado. 

Para obtener más información y una lista completa de mejoras y correcciones de errores, consulte las [notas de la versión de Apache Kafka 3.8.x](https://downloads.apache.org/kafka/3.8.0/RELEASE_NOTES.html).

## Versión 3.7.x Apache Kafka (con almacenamiento en niveles listo para producción)
<a name="3.7.kraft"></a>

La versión 3.7.x de Apache Kafka en MSK incluye compatibilidad para la versión 3.7.0 de Apache Kafka. Para utilizar la nueva versión 3.7.x, puede crear clústeres o actualizar los existentes. Con este cambio en el nombre de las versiones, ya no tendrá que adoptar versiones más recientes de corrección de parches, como la 3.7.1, cuando las publique la comunidad de Apache Kafka. Amazon MSK actualizará automáticamente la versión 3.7.x para que sea compatible con las futuras versiones de parche una vez que estén disponibles. Esto permite aprovechar las correcciones de seguridad y errores disponibles con las versiones de corrección de parches sin activar una actualización de versión. Estas versiones de corrección de parches que publica Apache Kafka no rompen la compatibilidad con la versión. Además, puede beneficiarse de las nuevas versiones de corrección de parches sin tener que preocuparse por los errores de lectura o escritura en las aplicaciones de sus clientes. Asegúrese de que sus herramientas de automatización de infraestructuras, por ejemplo CloudFormation, estén actualizadas para tener en cuenta este cambio en el nombre de las versiones.

Amazon MSK ahora admite el KRaft modo (Apache Kafka Raft) en la versión 3.7.x de Apache Kafka. En Amazon MSK, al igual que con ZooKeeper los nodos, los KRaft controladores se incluyen sin coste adicional para usted y no requieren ninguna configuración o administración adicionales por su parte. Ahora puede crear clústeres en cualquier KRaft modo o en modo en la versión ZooKeeper 3.7.x de Apache Kafka. En el modo KRaft, puede agregar hasta 60 agentes y alojar más particiones por clúster, sin que se requiera un aumento en el límite, en comparación con la cuota de 30 agentes de los clústeres basados en ZooKeeper. Para obtener más información KRaft sobre MSK, consulte. [KRaft modo](metadata-management.md#kraft-intro)

La versión 3.7.x de Apache Kafka también incluye varias correcciones de errores y nuevas características que mejoran el rendimiento. Entre las mejoras más importantes, se incluyen las optimizaciones de detección de nodos principales para los clientes y las opciones de optimización del vaciado de los segmentos de registros. Para consultar la lista completa de mejoras y correcciones de errores, consulte las notas de la versión [3.7.0](https://archive.apache.org/dist/kafka/3.7.0/RELEASE_NOTES.html) de Apache Kafka.

## Versión 3.6.0 de Apache Kafka (con almacenamiento en niveles listo para producción)
<a name="3.6.0"></a>

Para obtener información sobre la versión 3.6.0 de Apache Kafka (con almacenamiento en niveles listo para producción), consulte las [notas de la versión](https://archive.apache.org/dist/kafka/3.6.0/RELEASE_NOTES.html) en el sitio de descargas de Apache Kafka.

Amazon MSK seguirá utilizando y gestionando Zookeeper para la gestión del cuórum en esta versión para garantizar la estabilidad.

## Versión 3.5.1 de Amazon MSK
<a name="3.5.1"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora es compatible con la versión 3.5.1 de Apache Kafka para clústeres nuevos y existentes. La versión 3.5.1 de Apache Kafka incluye varias correcciones de errores y nuevas características que mejoran el rendimiento. Entre las características principales, se incluye la introducción de una nueva asignación de particiones compatible con los bastidores para los consumidores. Amazon MSK seguirá utilizando y administrando Zookeeper para la administración del cuórum en esta versión. Para consultar la lista completa de mejoras y correcciones de errores, consulte las notas de la versión 3.5.1 de Apache Kafka. 

Para obtener información sobre la versión 3.5.1 de Apache Kafka, consulte las [notas de la versión](https://archive.apache.org/dist/kafka/3.5.1/RELEASE_NOTES.html) en el sitio de descargas de Apache Kafka.

## Versión 3.4.0 de Amazon MSK
<a name="3.4.0"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora es compatible con la versión 3.4.0 de Apache Kafka para clústeres nuevos y existentes. La versión 3.4.0 de Apache Kafka incluye varias correcciones de errores y nuevas características que mejoran el rendimiento. Entre las características principales, se incluye una corrección para mejorar la estabilidad al recuperar datos de la réplica más cercana. Amazon MSK seguirá utilizando y administrando Zookeeper para la administración del cuórum en esta versión. Para consultar la lista completa de mejoras y correcciones de errores, consulte las notas de la versión 3.4.0 de Apache Kafka.

Para obtener información sobre la versión 3.4.0 de Apache Kafka, consulte las [notas de la versión](https://archive.apache.org/dist/kafka/3.4.0/RELEASE_NOTES.html) en el sitio de descargas de Apache Kafka.

## Versión 3.3.2 de Amazon MSK
<a name="3.3.2"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora es compatible con la versión 3.3.2 de Apache Kafka para clústeres nuevos y existentes. La versión 3.3.2 de Apache Kafka incluye varias correcciones de errores y nuevas características que mejoran el rendimiento. Entre las características principales, se incluye una corrección para mejorar la estabilidad al recuperar datos de la réplica más cercana. Amazon MSK seguirá utilizando y administrando Zookeeper para la administración del cuórum en esta versión. Para consultar la lista completa de mejoras y correcciones de errores, consulte las notas de la versión 3.3.2 de Apache Kafka.

Para obtener información sobre la versión 3.3.2 de Apache Kafka, consulte las [notas de la versión](https://archive.apache.org/dist/kafka/3.3.2/RELEASE_NOTES.html) en el sitio de descargas de Apache Kafka.

## Versión 3.3.1 de Amazon MSK
<a name="3.3.1"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora es compatible con la versión 3.3.1 de Apache Kafka para clústeres nuevos y existentes. La versión 3.3.1 de Apache Kafka incluye varias correcciones de errores y nuevas características que mejoran el rendimiento. Entre las características más importantes, se incluyen mejoras en las métricas y en el particionador. Amazon MSK seguirá utilizando y gestionando Zookeeper para la gestión del cuórum en esta versión para garantizar la estabilidad. Para consultar la lista completa de mejoras y correcciones de errores, consulte las notas de la versión 3.3.1 de Apache Kafka.

Para obtener información sobre la versión 3.3.1 de Apache Kafka, consulte las [notas de la versión](https://archive.apache.org/dist/kafka/3.3.1/RELEASE_NOTES.html) en el sitio de descargas de Apache Kafka.

## Versión 3.1.1 de Amazon MSK
<a name="3.1.1"></a>

Amazon Managed Streaming para Apache Kafka (Amazon MSK) ahora es compatible con las versiones 3.1.1 y 3.2.0 de Apache Kafka para clústeres nuevos y existentes. Las versiones 3.1.1 y 3.2.0 de Apache Kafka incluyen varias correcciones de errores y nuevas características que mejoran el rendimiento. Algunas de las características clave incluyen mejoras en las métricas y el uso del tema IDs. MSK seguirá utilizando y administrando Zookeeper para la administración del cuórum en esta versión para garantizar la estabilidad. Para consultar la lista completa de mejoras y correcciones de errores, consulte las notas de las versiones 3.1.1 y 3.2.0 de Apache Kafka.

Para obtener información sobre las versiones 3.1.1 y 3.2.0 de Apache Kafka, consulte las [notas de la versión 3.2.0](https://archive.apache.org/dist/kafka/3.2.0/RELEASE_NOTES.html) y las [notas de la versión 3.1.1](https://archive.apache.org/dist/kafka/3.1.1/RELEASE_NOTES.html) en el sitio de descargas de Apache Kafka.

## Almacenamiento por niveles de Amazon MSK, versión 2.8.2
<a name="2.8.2.tiered"></a>

Esta versión es una versión exclusiva para Amazon MSK de la versión 2.8.2 de Apache Kafka y es compatible con los clientes Apache Kafka de código abierto.

[La versión 2.8.2 contiene una funcionalidad de almacenamiento por niveles que es compatible con la APIs introducida en el KIP-405 para Apache Kafka.](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) Para obtener más información acerca de la característica por niveles de Amazon MSK, consulte [Almacenamiento por niveles para agentes Standard](msk-tiered-storage.md).

## Versión 2.5.1 de Apache Kafka
<a name="2.5.1"></a>

La versión 2.5.1 de Apache Kafka incluye varias correcciones de errores y nuevas funciones, como el cifrado en tránsito para los clientes de administración y de Apache. ZooKeeper Amazon MSK proporciona ZooKeeper puntos de enlace TLS, que puede consultar con la operación. [DescribeCluster ](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) 

El resultado de la [ DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)operación incluye el `ZookeeperConnectStringTls` nodo, que muestra los puntos de enlace de TLS Zookeeper.

El siguiente ejemplo muestra el nodo `ZookeeperConnectStringTls` de la respuesta de la operación `DescribeCluster`:

```
"ZookeeperConnectStringTls": "z-3.awskafkatutorialc.abcd123.c3.kafka.us-east-1.amazonaws.com:2182,z-2.awskafkatutorialc.abcd123.c3.kafka.us-east-1.amazonaws.com:2182,z-1.awskafkatutorialc.abcd123.c3.kafka.us-east-1.amazonaws.com:2182"
```

Para obtener información sobre el uso del cifrado TLS con Zookeeper, consulte [Uso de la seguridad TLS con Apache ZooKeeper](zookeeper-security-tls.md).

Para obtener más información sobre la versión 2.5.1 de Apache Kafka, consulte las [notas de la versión](https://archive.apache.org/dist/kafka/2.5.1/RELEASE_NOTES.html) en el sitio de descargas de Apache Kafka.

## Solución de errores de Amazon MSK, versión 2.4.1.1
<a name="2.4.1.1"></a>

Esta versión es una versión de corrección de errores exclusiva para Amazon MSK de la versión 2.4.1 de Apache Kafka. Esta versión de corrección de errores contiene una solución para el [KAFKA-9752](https://issues.apache.org/jira/browse/KAFKA-9752), un problema poco frecuente que provoca que los grupos de consumidores se reequilibren continuamente y permanezcan en el estado `PreparingRebalance`. Este problema afecta a los clústeres que ejecutan las versiones 2.3.1 y 2.4.1 de Apache Kafka. Esta versión contiene una corrección producida por la comunidad que está disponible en la versión 2.5.0 de Apache Kafka. 

**nota**  
Los clústeres de Amazon MSK que ejecutan la versión 2.4.1.1 son compatibles con cualquier cliente de Apache Kafka que sea compatible con la versión 2.4.1 de Apache Kafka.

Si prefiere usar Apache Kafka 2.4.1, le recomendamos que utilice la versión 2.4.1.1 con la corrección de errores de MSK para clústeres nuevos de Amazon MSK. Puede actualizar los clústeres existentes que ejecutan la versión 2.4.1 de Apache Kafka a esta versión para incorporar esta corrección. Para obtener información sobre cómo actualizar un clúster existente, consulte [Actualización de la versión de Apache Kafka](version-upgrades.md).

Para solucionar este problema sin actualizar el clúster a la versión 2.4.1.1, consulte la sección [Grupo de consumidores atrapado en el estado `PreparingRebalance`](troubleshooting.md#consumer-group-rebalance) de la guía [Solución de problemas del clúster de Amazon MSK](troubleshooting.md). 

## Versión 2.4.1 de Apache Kafka (utilice 2.4.1.1 en su lugar)
<a name="2.4.1"></a>

**nota**  
Ya no puede crear un clúster de MSK con la versión 2.4.1 de Apache Kafka. En su lugar, puede usar [Solución de errores de Amazon MSK, versión 2.4.1.1](#2.4.1.1) con clientes compatibles con la versión 2.4.1 de Apache Kafka. Y si ya tiene un clúster de MSK con la versión 2.4.1 de Apache Kafka, le recomendamos que lo actualice para que utilice la versión 2.4.1.1 de Apache Kafka en su lugar.

KIP-392 es una de las principales propuestas de mejora de Kafka que se incluyen en la versión 2.4.1 de Apache Kafka. Esta mejora permite a los consumidores recuperar de la réplica más cercana. Para utilizar esta característica, establezca `client.rack` en las propiedades del consumidor en el ID de la zona de disponibilidad del consumidor. Un ejemplo de ID de AZ es `use1-az1`. Amazon MSK establece `broker.rack` las zonas IDs de disponibilidad de los corredores. También debe establecer la propiedad de configuración `replica.selector.class` en `org.apache.kafka.common.replica.RackAwareReplicaSelector`, que es una implementación de reconocimiento de bastidor proporcionada por Apache Kafka. 

Cuando utiliza esta versión de Apache Kafka, las métricas en el nivel de monitoreo abierto `PER_TOPIC_PER_BROKER` aparecen solo después de que sus valores sean distintos de cero por primera vez. Para obtener más información acerca de este tema, consulte [Supervisión de `PER_TOPIC_PER_BROKER`](metrics-details.md#broker-topic-metrics). 

Para obtener información sobre cómo encontrar la zona de disponibilidad IDs, consulte [AZ IDs for Your Resource](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) en la guía del AWS Resource Access Manager usuario. 

Para obtener información sobre los ajustes de las propiedades de configuración, consulte [Configuración de Amazon MSK aprovisionado](msk-configuration.md). 

Para obtener más información acerca de KIP-392, consulte [Allow Consumers to Fetch from Closest Replica](https://cwiki.apache.org/confluence/display/KAFKA/KIP-392:+Allow+consumers+to+fetch+from+closest+replica) en las páginas de Confluence.

Para obtener más información sobre la versión 2.4.1 de Apache Kafka, consulte las [notas de la versión](https://archive.apache.org/dist/kafka/2.4.1/RELEASE_NOTES.html) en el sitio de descargas de Apache Kafka.

# Soporte de las versiones de Amazon MSK
<a name="version-support"></a>

Este tema describe la [Política de soporte de las versiones de Amazon MSK](#version-support-policy) y el procedimiento de [Actualización de la versión de Apache Kafka](version-upgrades.md). Si actualiza desde su versión de Kafka, siga las prácticas recomendadas que se describen en [Prácticas recomendadas para la actualización de versiones](version-upgrades-best-practices.md).

**Topics**
+ [Política de soporte de las versiones de Amazon MSK](#version-support-policy)
+ [Actualización de la versión de Apache Kafka](version-upgrades.md)
+ [Prácticas recomendadas para la actualización de versiones](version-upgrades-best-practices.md)

## Política de soporte de las versiones de Amazon MSK
<a name="version-support-policy"></a>

En esta sección, se describe la política de soporte para las versiones de Kafka compatibles con Amazon MSK.
+ Todas las versiones de Kafka son compatibles hasta la fecha de finalización del soporte. Para obtener información sobre las fechas de finalización del soporte, consulte [Versiones compatibles de Apache Kafka](supported-kafka-versions.md). Actualice su clúster MSK a la versión recomendada de Kafka o a una superior antes de la fecha de finalización del soporte. Para conocer los detalles sobre la actualización de la versión de Apache Kafka, consulte [Actualización de la versión de Apache Kafka](version-upgrades.md). Cualquier clúster que utilice una versión de Kafka posterior a la fecha de fin del soporte se actualizará automáticamente a la versión recomendada de Kafka. Las actualizaciones de versión automáticas pueden ocurrir en cualquier momento después de la fecha de fin de soporte. No recibirá ninguna notificación antes de la actualización de versión.
+ MSK eliminará gradualmente el soporte para los clústeres recién creados que utilicen versiones de Kafka con fechas de fin de soporte publicadas.

# Actualización de la versión de Apache Kafka
<a name="version-upgrades"></a>

Puede actualizar un clúster de Amazon MSK existente a una versión más reciente de Apache Kafka. Antes de actualizar la versión de Kafka del clúster, verifique que la versión del software del lado del cliente admita las características de la nueva versión de Kafka.

Para obtener información sobre cómo mantener un clúster con alta disponibilidad durante una actualización, consulte [Crear clústeres de alta disponibilidad](bestpractices.md#ensure-high-availability).

**Actualice la versión de Apache Kafka con el Consola de administración de AWS**

1. Abra la consola de Amazon MSK en [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/).

1. En la barra de navegación, seleccione la región en la que creó el clúster de MSK.

1. Seleccione el clúster de Amazon MSK que desea actualizar.

1. En la pestaña **Propiedades**, elija **Actualizar** en la sección **Versión de Apache Kafka**.

1. En la sección **Versión de Apache Kafka**, realice lo siguiente:

   1. En la lista desplegable *Elegir versión de Apache Kafka*, seleccione la versión de destino a la que desea realizar la actualización. En este ejemplo, elija **3.9.x**.

   1. (Opcional) Seleccione **Ver compatibilidad de versiones** para verificar la compatibilidad entre la versión actual del clúster y las versiones disponibles para la actualización. Luego, seleccione **Elegir** para continuar.
**nota**  
Amazon MSK admite actualizaciones de versión en el lugar para la mayoría de las versiones de Apache Kafka. Sin embargo, al actualizar de una versión ZooKeeper basada en Kafka a una versión KRaft basada en Kafka, debe crear un clúster nuevo. A continuación, copie los datos en el clúster nuevo y cambie los clientes para que utilicen dicho clúster.

   1. (Opcional) Seleccione la casilla **Actualizar la configuración del clúster** para aplicar actualizaciones de configuración compatibles con la nueva versión. Esto habilita las nuevas características y mejoras de la versión.

      Puede omitir este paso si necesita mantener las configuraciones personalizadas existentes.
**nota**  
Las actualizaciones del servidor no actualizan automáticamente las aplicaciones cliente.
Para mantener la estabilidad del clúster, no se admiten reducciones de versión.

   1. Seleccione **Actualizar versión** para iniciar el proceso.

**Actualice la versión de Apache Kafka mediante el AWS CLI**

1. Ejecute el siguiente comando, reemplazando *ClusterArn*por el nombre de recurso de Amazon (ARN) que obtuvo al crear el clúster. Si no tiene el ARN para su clúster, puede encontrarlo enumerando todos los clústeres. Para obtener más información, consulte [Enumeración de clústeres de Amazon MSK](msk-list-clusters.md).

   ```
   aws kafka get-compatible-kafka-versions --cluster-arn ClusterArn
   ```

   La salida de este comando incluye una lista de las versiones de Apache Kafka a las que puede actualizar el clúster. Es similar al ejemplo siguiente.

   ```
   {
       "CompatibleKafkaVersions": [
           {
               "SourceVersion": "2.2.1",
               "TargetVersions": [
                   "2.3.1",
                   "2.4.1",
                   "2.4.1.1",
                   "2.5.1"
               ]
           }
       ]
   }
   ```

1. Ejecute el siguiente comando, reemplazando *ClusterArn*por el nombre de recurso de Amazon (ARN) que obtuvo al crear el clúster. Si no tiene el ARN para su clúster, puede encontrarlo enumerando todos los clústeres. Para obtener más información, consulte [Enumeración de clústeres de Amazon MSK](msk-list-clusters.md).

   Reemplace *Current-Cluster-Version* con la versión actual del clúster. Pues *TargetVersion* puede especificar cualquiera de las versiones de destino a partir del resultado del comando anterior.
**importante**  
Las versiones de clúster no son enteros simples. Para encontrar la versión actual del clúster, utilice la [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)operación o el comando [AWS CLI describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html). Un ejemplo de ID de versión es `KTVPDKIKX0DER`.

   ```
   aws kafka update-cluster-kafka-version --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-kafka-version TargetVersion
   ```

   El resultado del comando anterior tiene un aspecto similar al siguiente JSON.

   ```
   {
       
       "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
       "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"
   }
   ```

1. Para obtener el resultado de la `update-cluster-kafka-version` operación, ejecute el siguiente comando y *ClusterOperationArn* reemplácelo por el ARN que obtuvo en el resultado del `update-cluster-kafka-version` comando.

   ```
   aws kafka describe-cluster-operation --cluster-operation-arn ClusterOperationArn
   ```

   El resultado de este comando `describe-cluster-operation` tendrá un aspecto similar al siguiente.

   ```
   {
       "ClusterOperationInfo": {
           "ClientRequestId": "62cd41d2-1206-4ebf-85a8-dbb2ba0fe259",
           "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
           "CreationTime": "2021-03-11T20:34:59.648000+00:00",
           "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef",
           "OperationState": "UPDATE_IN_PROGRESS",
           "OperationSteps": [
               {
                   "StepInfo": {
                       "StepStatus": "IN_PROGRESS"
                   },
                   "StepName": "INITIALIZE_UPDATE"
               },
               {
                   "StepInfo": {
                       "StepStatus": "PENDING"
                   },
                   "StepName": "UPDATE_APACHE_KAFKA_BINARIES"
               },
               {
                   "StepInfo": {
                       "StepStatus": "PENDING"
                   },
                   "StepName": "FINALIZE_UPDATE"
               }
           ],
           "OperationType": "UPDATE_CLUSTER_KAFKA_VERSION",
           "SourceClusterInfo": {
               "KafkaVersion": "2.4.1"
           },
           "TargetClusterInfo": {
               "KafkaVersion": "2.6.1"
           }
       }
   }
   ```

   Si `OperationState` tiene el valor `UPDATE_IN_PROGRESS`, espere un rato y vuelva a ejecutar el comando `describe-cluster-operation`. Cuando se completa la operación, el valor de `OperationState` se convierte en `UPDATE_COMPLETE`. Como el tiempo necesario para que Amazon MSK complete la operación varía, es posible que tenga que comprobarlo varias veces hasta que se complete la operación. 

**Actualización de la versión de Apache Kafka mediante la API**

1. Invoque la [GetCompatibleKafkaVersions](https://docs.aws.amazon.com//msk/1.0/apireference/compatible-kafka-versions.html#GetCompatibleKafkaVersions)operación para obtener una lista de las versiones de Apache Kafka a las que puede actualizar el clúster.

1. Ejecute la [UpdateClusterKafkaVersion](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-version.html#UpdateClusterKafkaVersion)operación para actualizar el clúster a una de las versiones compatibles de Apache Kafka.

# Prácticas recomendadas para la actualización de versiones
<a name="version-upgrades-best-practices"></a>

Para garantizar la continuidad del cliente durante la actualización progresiva que se realiza como parte del proceso de actualización de la versión de Kafka, revise la configuración de sus clientes y los temas de Apache Kafka de la siguiente manera:
+ Establezca el factor de replicación (RF) del tema en un valor mínimo de `2` para clústeres de dos zonas de disponibilidad y un valor mínimo de `3` para los clústeres de tres zonas de disponibilidad. Si el valor de RF es `2`, se pueden producir particiones fuera de línea durante la aplicación del parche.
+ Configure el valor mínimo de réplicas sincronizadas (minISR) con un valor máximo igual a uno menos que el factor de replicación (RF), es decir, `miniISR = (RF) - 1`. Esto garantiza que el conjunto de réplicas de la partición pueda tolerar que una réplica quede fuera de línea o esté subreplicada.
+ Configure los clientes para que utilicen varias cadenas de conexión de agentes. Tener varios corredores en la cadena de conexión de un cliente permite la conmutación por error si un corredor específico que brinda soporte al cliente I/O comienza a recibir parches. Para obtener información sobre cómo obtener una cadena de conexión con varios agentes, consulte [Obtención de agentes de arranque para un clúster de Amazon MSK](https://docs.aws.amazon.com//msk/latest/developerguide/msk-get-bootstrap-brokers.html).
+ Recomendamos que actualice los clientes conectados a la versión recomendada o superior para aprovechar las características disponibles en la nueva versión. Las actualizaciones de los clientes no están sujetas a las fechas de fin de vida útil (EOL) de la versión Kafka del clúster de MSK y no es necesario que se completen antes de la fecha de EOL. Apache Kafka ofrece una [política de compatibilidad bidireccional de clientes](https://kafka.apache.org/protocol#protocol_compatibility) que permite que los clientes antiguos trabajen con clústeres más nuevos y viceversa.
+ Es probable que los clientes de Kafka que utilizan las versiones 3.x.x tengan los siguientes valores predeterminados: `acks=all` y `enable.idempotence=true`. El valor `acks=all` difiere del valor predeterminado anterior de `acks=1` y ofrece durabilidad adicional al garantizar que las réplicas sincronizadas reconozcan la solicitud de producción. Del mismo modo, el valor predeterminado `enable.idempotence` era anteriormente `false`. El cambio a `enable.idempotence=true` como el valor predeterminado disminuye la posibilidad de mensajes duplicados. Estos cambios se consideran configuraciones de prácticas recomendadas y pueden introducir una pequeña cantidad de latencia adicional que se encuentra dentro de los parámetros normales de rendimiento.
+ Al crear nuevos clústeres de MSK, utilice la versión recomendada de Kafka. Si utiliza la versión recomendada de Kafka, podrá beneficiarse de las últimas características de Kafka y MSK.

# Solución de problemas del clúster de Amazon MSK
<a name="troubleshooting"></a>

La siguiente información le puede ser de ayuda para solucionar los problemas que podrían presentarse con el clúster de Amazon MSK. También puede publicar el problema en [AWS re:Post](https://repost.aws/). Para solucionar problemas del Replicador Amazon MSK, consulte [Solución de problemas del Replicador MSK](msk-replicator-troubleshooting.md).

**Topics**
+ [La sustitución del volumen provoca la saturación del disco debido a la sobrecarga de replicación](#replication-overload-disk-saturation)
+ [Grupo de consumidores atrapado en el estado `PreparingRebalance`](#consumer-group-rebalance)
+ [Error al entregar los registros de los corredores a Amazon CloudWatch Logs](#cw-broker-logs-error)
+ [Ningún grupo de seguridad predeterminado](#troubleshooting-shared-vpc)
+ [El clúster aparece atascado en el estado CREATING (Creando)](#troubleshooting-cluster-stuck)
+ [El estado del clúster pasa de CREATING (Creando) a FAILED (Error)](#troubleshooting-cluster-failed)
+ [El estado del clúster es ACTIVE (Activo), pero los productores no pueden enviar datos o los consumidores no pueden recibir datos](#troubleshooting-nodata)
+ [AWS CLI no reconoce Amazon MSK](#troubleshooting-nocli)
+ [Las particiones se desconectan o las réplicas no están sincronizadas](#troubleshooting-offlinepartition-outofsyncreplicas)
+ [El espacio en el disco se está agotando](#troubleshooting-lowdiskspace)
+ [La memoria se está agotando](#troubleshooting-lowmemory)
+ [El productor obtiene NotLeaderForPartitionException](#troubleshooting-NotLeaderForPartitionException)
+ [Particiones subreplicadas (URP) mayores que cero](#troubleshooting-urp)
+ [El clúster tiene temas denominados \$1\$1amazon\$1msk\$1canary y \$1\$1amazon\$1msk\$1canary\$1state](#amazon_msk_canary)
+ [La replicación de la partición falla](#partition_replication_fails)
+ [No se puede acceder al clúster que tiene activado el acceso público](#public-access-issues)
+ [No se puede acceder al clúster a través de bootstrap IPv6](#dualstack-issues)
+ [No se puede acceder al clúster desde dentro AWS: problemas de red](#networking-trouble)
+ [Error en la autenticación: demasiadas conexiones](#troubleshoot-too-many-connects)
+ [Error de autenticación: la sesión es demasiado corta](#troubleshoot-session-too-short)
+ [MSK sin servidor: se produce un error al crear el clúster](#troubleshoot-serverless-create-cluster-failure)
+ [No se puede actualizar KafkaVersionsList en la configuración de MSK](#troubleshoot-kafkaversionslist-cfn-update-failure)

## La sustitución del volumen provoca la saturación del disco debido a la sobrecarga de replicación
<a name="replication-overload-disk-saturation"></a>

Si se produce un error imprevisto en el hardware de volumen, Amazon MSK puede sustituir el volumen con una nueva instancia. Kafka replica las particiones de otros agentes del clúster para rellenar el nuevo volumen. Una vez que las particiones se replican y se actualizan, son elegibles para obtener la pertenencia como réplicas principales y sincronizadas (ISR). 

**Problema**  
En un agente que se está recuperando de una sustitución de volumen, algunas particiones de distintos tamaños pueden volver a funcionar antes que otras. Esto puede causar problemas, ya que esas particiones pueden recibir tráfico del mismo agente que sigue actualizando (replicando) otras particiones. Este tráfico de replicación suele saturar los límites de rendimiento del volumen subyacente, que en el caso predeterminado son de 250 MiB por segundo. Cuando se produce esta saturación, las particiones que ya estén actualizadas se verán afectadas, lo que provocará una latencia en todo el clúster para cualquier agente que comparta el ISR con esas particiones actualizadas (no solo para las particiones principales, debido a los reconocimientos `acks=all` remotos). Es más común encontrar esto en los clústeres más grandes, con un mayor número de particiones de diferentes tamaños. 

**Recomendación**
+ Para mejorar la estrategia I/O de replicación, asegúrese de [contar con la configuración de subprocesos](https://docs.aws.amazon.com/msk/latest/developerguide/bestpractices.html#optimize-broker-threads) recomendada.
+ Para reducir la probabilidad de que se produzca una saturación del volumen subyacente, habilite el almacenamiento aprovisionado con un mayor rendimiento. Se MiB/s recomienda un valor de rendimiento mínimo de 500 para los casos de replicación de alto rendimiento, pero el valor real necesario variará según el rendimiento y el caso de uso. [Aprovisionamiento del rendimiento de almacenamiento para agentes Standard en un clúster de Amazon MSK](msk-provision-throughput.md). 
+ Para minimizar la presión de replicación, baje `num.replica.fetchers` hasta el valor predeterminado de `2`.

## Grupo de consumidores atrapado en el estado `PreparingRebalance`
<a name="consumer-group-rebalance"></a>

Si uno o más de sus grupos de consumidores están atrapados en un estado de reequilibrio continuo, la causa podría ser el problema [KAFKA-9752](https://issues.apache.org/jira/browse/KAFKA-9752), que afecta a las versiones 2.3.1 y 2.4.1 de Apache Kafka.

Para resolver este problema, le recomendamos que actualice el clúster a [Solución de errores de Amazon MSK, versión 2.4.1.1](supported-kafka-versions.md#2.4.1.1), que contiene una solución para este problema. Para obtener información sobre cómo actualizar un clúster existente a la versión 2.4.1.1 de corrección de errores de Amazon MSK, consulte [Actualización de la versión de Apache Kafka](version-upgrades.md).

 Las soluciones alternativas para resolver este problema sin actualizar el clúster a la versión 2.4.1.1 de corrección de errores de Amazon MSK consisten en configurar los clientes de Kafka que van a utilizar [Protocolo de pertenencia estática](#consumer-group-rebalance-static), o bien [Identificación y reinicio](#consumer-group-rebalance-reboot) el nodo del agente coordinador del grupo de consumidores atascados. 

### Implementación de un protocolo de pertenencia estática
<a name="consumer-group-rebalance-static"></a>

Para implementar el protocolo de permanencia estática en los clientes, haga lo siguiente:

1. Establezca la propiedad `group.instance.id` de la configuración de los [consumidores de Kafka](https://kafka.apache.org/26/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html) en una cadena estática que identifique al consumidor del grupo. 

1. Asegúrese de que las demás instancias de la configuración estén actualizadas para usar la cadena estática.

1. Implemente los cambios en los consumidores de Kafka.

El uso del protocolo de permanencia estática es más eficaz si el tiempo de espera de la sesión en la configuración del cliente se establece en una duración que permita al consumidor recuperarse sin provocar un reequilibrio prematuro del grupo de consumidores. Por ejemplo, si su aplicación de consumo puede tolerar 5 minutos de inactividad, un valor razonable para el tiempo de espera de la sesión sería de 4 minutos en lugar del valor predeterminado de 10 segundos.

**nota**  
El uso del protocolo de permanencia estática solo reduce la probabilidad de que se produzca este problema. Es posible que siga encontrándose con este problema incluso cuando utilice el protocolo de permanencia estática.

### Reinicio del nodo del agente coordinador
<a name="consumer-group-rebalance-reboot"></a>

Para reiniciar el nodo del agente coordinador, haga lo siguiente:

1. Identifique al coordinador del grupo mediante el comando `kafka-consumer-groups.sh`.

1. Reinicie el coordinador de grupo del grupo de consumidores bloqueado mediante la acción de la [ RebootBroker](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-reboot-broker.html#RebootBroker)API.

## Error al entregar los registros de los corredores a Amazon CloudWatch Logs
<a name="cw-broker-logs-error"></a>

Al intentar configurar el clúster para enviar los registros de los corredores a Amazon CloudWatch Logs, es posible que se produzca una de estas dos excepciones.

Si obtiene una excepción `InvalidInput.LengthOfCloudWatchResourcePolicyLimitExceeded`, vuelva a intentarlo pero utilice grupos de registro que comiencen por `/aws/vendedlogs/`. Para obtener más información, consulte [Habilitar el registro desde determinados servicios de Amazon Web Services](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html).

Si recibes una `InvalidInput.NumberOfCloudWatchResourcePoliciesLimitExceeded` excepción, elige una política de Amazon CloudWatch Logs existente en tu cuenta y añádele el siguiente JSON.

```
{"Sid":"AWSLogDeliveryWrite","Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":["*"]}
```

Si intentas añadir el JSON anterior a una política existente pero aparece un error que indica que has alcanzado la longitud máxima de la política que has elegido, intenta añadir el JSON a otra de tus políticas de Amazon CloudWatch Logs. Tras añadir el JSON a una política existente, intenta configurar de nuevo la entrega de registros de agentes a Amazon Logs. CloudWatch 

## Ningún grupo de seguridad predeterminado
<a name="troubleshooting-shared-vpc"></a>

Si intenta crear un clúster y obtiene un error que indica que no hay ningún grupo de seguridad predeterminado, puede deberse a que está utilizando una VPC compartida con usted. Pídale al administrador que le conceda permiso para describir los grupos de seguridad de esta VPC e inténtelo de nuevo. Para obtener un ejemplo de una política que permite esta acción, consulte [Amazon EC2: Permite administrar grupos de seguridad de EC2 asociados con una VPC específica, mediante programación y en la consola ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_ec2_securitygroups-vpc.html).

## El clúster aparece atascado en el estado CREATING (Creando)
<a name="troubleshooting-cluster-stuck"></a>

A veces, la creación de clústeres puede tardar hasta 30 minutos. Espere 30 minutos y compruebe de nuevo el estado del clúster.

## El estado del clúster pasa de CREATING (Creando) a FAILED (Error)
<a name="troubleshooting-cluster-failed"></a>

Intente crear el clúster de nuevo.

## El estado del clúster es ACTIVE (Activo), pero los productores no pueden enviar datos o los consumidores no pueden recibir datos
<a name="troubleshooting-nodata"></a>
+ Si la creación del clúster se realiza correctamente (el estado del clúster es `ACTIVE`), pero no puede enviar ni recibir datos, asegúrese de que las aplicaciones de productor y consumidor tengan acceso al clúster. Para obtener más información, consulte la guía en [Paso 3: creación de un equipo cliente](create-client-machine.md).
+ Si sus productores y consumidores tienen acceso al clúster pero siguen teniendo problemas para producir y consumir datos, la causa podría ser [KAFKA-7697](https://issues.apache.org/jira/browse/KAFKA-7697), que afecta a Apache Kafka versión 2.1.0 y puede conducir a un punto muerto en uno o más corredores. Considere migrar a Apache Kafka 2.2.1, que no se ve afectado por este error. Para obtener información acerca de cómo efectuar la migración, consulte [Migración de cargas de trabajo de Kafka a un clúster de Amazon MSK](migration.md).

## AWS CLI no reconoce Amazon MSK
<a name="troubleshooting-nocli"></a>

Si lo tienes AWS CLI instalado, pero no reconoce los comandos de Amazon MSK, actualiza tu versión AWS CLI a la última. Para obtener instrucciones detalladas sobre cómo actualizar el AWS CLI, consulte [Instalación del AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html). Para obtener información sobre cómo utilizar los comandos AWS CLI para ejecutar los comandos de Amazon MSK, consulte[Características y conceptos clave de Amazon MSK](operations.md).

## Las particiones se desconectan o las réplicas no están sincronizadas
<a name="troubleshooting-offlinepartition-outofsyncreplicas"></a>

Estos pueden ser síntomas de poco espacio en el disco. Consulte [El espacio en el disco se está agotando](#troubleshooting-lowdiskspace).

## El espacio en el disco se está agotando
<a name="troubleshooting-lowdiskspace"></a>

Consulte las siguientes prácticas recomendadas para administrar el espacio en disco: [Monitorear el espacio en disco](bestpractices.md#bestpractices-monitor-disk-space) y [Ajuste los parámetros de retención de datos](bestpractices.md#bestpractices-retention-period).

## La memoria se está agotando
<a name="troubleshooting-lowmemory"></a>

Si ve que la métrica `MemoryUsed` está ejecutándose alta o `MemoryFree` está ejecutándose en baja, eso no significa que haya un problema. Apache Kafka está diseñado para usar tanta memoria como sea posible, y lo gestiona de manera óptima.

## El productor obtiene NotLeaderForPartitionException
<a name="troubleshooting-NotLeaderForPartitionException"></a>

Este suele ser un error transitorio. Establezca el parámetro de configuración `retries` del productor en un valor superior a su valor actual.

## Particiones subreplicadas (URP) mayores que cero
<a name="troubleshooting-urp"></a>

Es importante supervisar la métrica `UnderReplicatedPartitions`. En un clúster MSK correcto, esta métrica tiene el valor 0. Si es mayor que cero, podría deberse a una de las siguientes razones.
+ Si `UnderReplicatedPartitions` tiene picos, el problema puede ser que el clúster no se aprovisiona con el tamaño correcto para manejar el tráfico entrante y saliente. Consulte [Prácticas recomendadas para agentes Standard](bestpractices.md).
+ Si siempre `UnderReplicatedPartitions` es superior a 0, incluso durante los períodos de poco tráfico, el problema podría deberse a que has establecido restricciones ACLs que no permiten el acceso a los temas a los corredores. Para replicar particiones, los agentes deben estar autorizados a LEER y DESCRIBIR temas. DESCRIBE (Describir) se concede de forma predeterminada con la autorización READ (Leer). Para obtener información sobre la configuración ACLs, consulte [Autorización y](https://kafka.apache.org/documentation/#security_authz) la ACLs documentación de Apache Kafka.

## El clúster tiene temas denominados \$1\$1amazon\$1msk\$1canary y \$1\$1amazon\$1msk\$1canary\$1state
<a name="amazon_msk_canary"></a>

Es posible que vea que su clúster de MSK tiene un tema con el nombre `__amazon_msk_canary` y otro con el nombre `__amazon_msk_canary_state`. Se trata de temas internos que Amazon MSK crea y utiliza para las métricas de estado y diagnóstico del clúster. Estos temas tienen un tamaño insignificante y no se pueden eliminar.

## La replicación de la partición falla
<a name="partition_replication_fails"></a>

Asegúrese de no haber configurado ACLs CLUSTER\$1ACTIONS.

## No se puede acceder al clúster que tiene activado el acceso público
<a name="public-access-issues"></a>

Si su clúster tiene activado el acceso público, pero sigue sin poder acceder a él desde Internet, siga estos pasos:

1. Asegúrese de que las reglas de entrada del grupo de seguridad del clúster admitan su dirección IP y el puerto del clúster. Para obtener una lista de los números de puerto del clúster, consulte [Información del puerto](port-info.md). Asegúrese también de que las reglas de salida del grupo de seguridad permitan las comunicaciones salientes. Para obtener más información acerca del uso de grupos de seguridad de VPC y sus reglas de entrada y salida, consulte [Grupos de seguridad de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) en la Guía del usuario de Amazon VPC.

1. Asegúrese de que su dirección IP y el puerto del clúster estén permitidos en las reglas de entrada de la ACL de la red de VPC del clúster. A diferencia de los grupos de seguridad, las redes ACLs no tienen estado. Esto significa que debe configurar las reglas de entrada y salida. En las reglas de salida, permita que todo el tráfico (rango de puertos: 0-65535) llegue a su dirección IP. Para obtener más información, consulte [Adición y eliminación de reglas](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#Rules) en la Guía del usuario de Amazon VPC. 

1. Asegúrese de utilizar la cadena bootstrap-brokers de acceso público para acceder al clúster. Un clúster de MSK que tiene activado el acceso público tiene dos cadenas bootstrap-brokers diferentes, una para el acceso público y otra para el acceso desde dentro de AWS. Para obtener más información, consulte [Obtenga los corredores de bootstrap utilizando la Consola de administración de AWS](get-bootstrap-console.md).

## No se puede acceder al clúster a través de bootstrap IPv6
<a name="dualstack-issues"></a>

Si tiene problemas para conectarse a un clúster mediante las cadenas de IPv6 arranque proporcionadas, siga estos pasos:

1.  Asegúrese de que su cliente tenga asignadas las direcciones IPv4 e IPv6. La aplicación cliente debe ejecutarse en una subred que tenga habilitadas y correctamente configuradas las direcciones IPv4 e IPv6. Compruebe si su VPC tiene un bloque CIDR de IPv4 y un bloque CIDR de IPv6 asociado, confirme que la subred tiene habilitadas las direcciones IPv4 e IPv6 y compruebe que la instancia de EC2 o el entorno de cliente tienen ambas direcciones asignadas. IPv4 IPv6 Para obtener más información, consulte el [direccionamiento IP de su red VPCs y de sus subredes](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html) en la Guía del usuario de Amazon VPC. 

1.  Asegúrese de que IPv6 los puertos relevantes estén presentes en las reglas de entrada y salida del grupo de seguridad. Agregue reglas de entrada para permitir el tráfico en los puertos del clúster desde sus IPv6 direcciones y configure las reglas de salida para permitir el tráfico. IPv6 Para obtener números de puerto específicos, consulte la [información sobre puertos](https://docs.aws.amazon.com/msk/latest/developerguide/port-info.html) en la documentación de MSK. Recuerde actualizar ambos IPv4 y IPv6 las reglas si se ejecuta en modo de doble pila. Para obtener más información acerca del uso de grupos de seguridad de VPC y sus reglas de entrada y salida, consulte [Grupos de seguridad de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html) en la Guía del usuario de Amazon VPC. 

1.  Asegúrese de que la configuración de las propiedades de la JVM sea correcta para el soporte IPv6 . En la aplicación cliente, `java.net.preferIPv6Addresses` configúrelo en `true` y `java.net.preferIPv4Stack` en`false`. Estos parámetros se pueden configurar como propiedades del sistema o como argumentos de JVM. Reinicie la aplicación después de realizar estos cambios para que surtan efecto. 

## No se puede acceder al clúster desde dentro AWS: problemas de red
<a name="networking-trouble"></a>

Si tiene una aplicación de Apache Kafka que no puede comunicarse correctamente con un clúster de MSK, comience por llevar a cabo la siguiente prueba de conectividad.

1. Utilice cualquiera de los métodos descritos en [Obtención de agentes de arranque para un clúster de Amazon MSK](msk-get-bootstrap-brokers.md) para obtener las direcciones de los agentes de arranque.

1. En el siguiente comando, *bootstrap-broker* sustituya por una de las direcciones de intermediario que obtuvo en el paso anterior. *port-number*Sustitúyala por 9094 si el clúster está configurado para usar la autenticación TLS. Si el clúster no usa la autenticación TLS, *port-number* sustitúyala por la 9092. Ejecute el comando desde el equipo cliente.

   ```
   telnet bootstrap-broker port-number
   ```

   Donde port-number es:
   + 9094 si el clúster está configurado para utilizar la autenticación TLS. 
   + 9092 si el clúster no utiliza la autenticación TLS.
   + Si el acceso público está habilitado, se requiere un port-number diferente.

   Ejecute el comando desde el equipo cliente.

1. Repita el comando anterior para todos los agentes de arranque.

Si el equipo cliente puede acceder a los agentes, esto significa que no hay problemas de conectividad. En este caso, ejecute el siguiente comando para comprobar si su cliente Apache Kafka está configurado correctamente. Para obtenerla*bootstrap-brokers*, utilice cualquiera de los métodos descritos en. [Obtención de agentes de arranque para un clúster de Amazon MSK](msk-get-bootstrap-brokers.md) *topic*Sustitúyalo por el nombre del tema.

```
<path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list bootstrap-brokers --producer.config client.properties --topic topic
```

Si el comando anterior tiene éxito, significa que su cliente está configurado correctamente. Si sigue sin poder producir y consumir desde una aplicación, depure el problema en el nivel de aplicación.

Si el equipo cliente no puede acceder a los agentes, consulte las siguientes subsecciones para obtener instrucciones según la configuración del equipo cliente. 

### Cliente de Amazon EC2 y clúster de MSK en la misma VPC
<a name="troubleshoot-ec2-client-in-cluster-vpc"></a>

Si el equipo cliente está en la misma VPC que el clúster de MSK, asegúrese de que el grupo de seguridad del clúster tenga una regla de entrada que acepte el tráfico del grupo de seguridad del equipo cliente. Para obtener información acerca de estas reglas, consulte [Reglas del grupo de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules). Para obtener un ejemplo de cómo acceder a un clúster desde una instancia de Amazon EC2 que esté en la misma VPC que el clúster, consulte [Introducción a Amazon MSK](getting-started.md).

### El cliente Amazon EC2 y el clúster de MSK son diferentes VPCs
<a name="troubleshoot-peering-connection"></a>

Si la máquina cliente y el clúster están en dos equipos diferentes VPCs, asegúrese de lo siguiente: 
+ Los dos VPCs están emparejados.
+ El estado de la interconexión está activo.
+ Las tablas de enrutamiento de los dos VPCs están configuradas correctamente.

Para obtener información acerca de la interconexión de VPC, consulte [Trabajo con interconexiones de VPC](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html).

### Cliente en las instalaciones
<a name="troubleshoot-on-prem-client"></a>

En el caso de un cliente local que esté configurado para conectarse al clúster de MSK mediante Site-to-Site VPN, asegúrese de lo siguiente:
+ El estado de la conexión de VPN es `UP`. Para obtener información acerca de cómo comprobar el estado de la conexión de VPN, consulte [¿Cómo compruebo el estado actual de mi túnel VPN?](https://aws.amazon.com/premiumsupport/knowledge-center/check-vpn-tunnel-status/).
+ La tabla de enrutamiento de la VPC del clúster contiene la ruta de un CIDR en las instalaciones cuyo destino tiene el formato `Virtual private gateway(vgw-xxxxxxxx)`.
+ El grupo de seguridad del clúster de MSK permite el tráfico en el puerto 2181, el puerto 9092 (si el clúster acepta tráfico de texto sin formato) y el puerto 9094 (si el clúster acepta tráfico cifrado TLS).

Para obtener más instrucciones Site-to-Site VPN de solución de problemas, consulte [Solución de problemas de Client VPN](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/troubleshooting.html).

### Direct Connect
<a name="troubleshoot-direct-connect"></a>

Si el cliente la usa Direct Connect, consulte [Solución de problemas Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Troubleshooting.html).

Si las instrucciones de solución de problemas anteriores no resuelven el problema, asegúrese de que ningún firewall bloquee el tráfico de red. Para depurar más, utilice herramientas como `tcpdump` y `Wireshark` para analizar el tráfico y para asegurarse de que está llegando al clúster de MSK.

## Error en la autenticación: demasiadas conexiones
<a name="troubleshoot-too-many-connects"></a>

El error `Failed authentication ... Too many connects` indica que un agente se está protegiendo a sí mismo porque uno o varios clientes de IAM están intentando conectarse a él a un ritmo agresivo. Para ayudar a los agentes a aceptar una tasa más alta de nuevas conexiones de IAM, puede aumentar el parámetro de la configuración [https://kafka.apache.org/documentation/#producerconfigs_reconnect.backoff.ms](https://kafka.apache.org/documentation/#producerconfigs_reconnect.backoff.ms).

Para obtener más información sobre los límites de velocidad para las nuevas conexiones por agente, consulte la página [Cuota de Amazon MSK](limits.md).

## Error de autenticación: la sesión es demasiado corta
<a name="troubleshoot-session-too-short"></a>

El error `Failed authentication ... Session too short` se produce cuando el cliente se intenta conectar a un clúster con credenciales de IAM que están a punto de caducar. Asegúrese de revisar cómo se renuevan las credenciales de IAM. En la mayoría de los casos, las credenciales se reemplazan demasiado cerca del vencimiento de la sesión, lo que provoca problemas en el servidor y errores de autenticación.

## MSK sin servidor: se produce un error al crear el clúster
<a name="troubleshoot-serverless-create-cluster-failure"></a>

Si intenta crear un clúster de MSK sin servidor y se produce un error en el flujo de trabajo, es posible que no tenga permiso para crear un punto de conexión de VPC. Compruebe que el administrador le haya concedido permiso para crear un punto de conexión de VPC al permitir la acción `ec2:CreateVpcEndpoint`. 

Para obtener una lista completa de los permisos necesarios para realizar todas las acciones de Amazon MSK, consulte [AWS política gestionada: Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md).

## No se puede actualizar KafkaVersionsList en la configuración de MSK
<a name="troubleshoot-kafkaversionslist-cfn-update-failure"></a>

Al actualizar la [KafkaVersionsList](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-configuration.html#cfn-msk-configuration-kafkaversionslist)propiedad del [AWS::MSK::Configuration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-configuration.html)recurso, la actualización falla y muestra el siguiente error.

```
Resource of type 'AWS::MSK::Configuration' with identifier '<identifierName>' already exists.
```

Al actualizar la `KafkaVersionsList` propiedad, AWS CloudFormation vuelve a crear una nueva configuración con la propiedad actualizada antes de eliminar la configuración anterior. La actualización de la CloudFormation pila falla porque la nueva configuración usa el mismo nombre que la configuración existente. Este tipo de actualización requiere un [reemplazo del recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement). Para actualizar `KafkaVersionsList` correctamente, también debe actualizar la propiedad [Nombre](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-configuration.html#cfn-msk-configuration-name) en la misma operación.

Además, si la configuración está asociada a algún clúster creado con Consola de administración de AWS o AWS CLI, añada lo siguiente al recurso de configuración para evitar [intentos fallidos de eliminación de recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-resource-removed-not-deleted).

```
UpdateReplacePolicy: Retain
```

Después de que la actualización se complete correctamente, vaya a la consola de Amazon MSK y elimine la configuración anterior. Para obtener más información acerca de las configuraciones de MSK, consulte [Configuración de Amazon MSK aprovisionado](msk-configuration.md).