Conexión a MSK desde AWS CloudShell
Documentación paso a paso para conectarte a un clúster de Amazon MSK (con autenticación SCRAM-SHA-512) desde AWS CloudShell, utilizando la versión Kafka 3.6.0
Requisitos
Acceso a AWS CloudShell en la misma región del clúster MSK (us-east-1).
Nombre de usuario y contraseña SCRAM habilitados en el clúster (se encuentran como secret en la misma cuenta y región del clúster).
DNS de brokers disponibles.
El clúster debe estar accesible desde el entorno VPC de CloudShell (ver como crear un VPC Environment en AWS CloudShell)
1. Descargar Kafka
export KAFKA_VERSION=3.6.0
wget https://archive.apache.org/dist/kafka/$KAFKA_VERSION/kafka_2.13-$KAFKA_VERSION.tgz
tar -xzf kafka_2.13-$KAFKA_VERSION.tgz
cd kafka_2.13-$KAFKA_VERSION/bin
2. Copiar truststore por defecto (para SSL)
cp /usr/lib/jvm/jre/lib/security/cacerts kafka.client.truststore.jks
3. Definir brokers MSK (SCRAM)
export KAFKA_BROKERS_SCRAM="b-2.dfhsdf.u4jjft.c2.kafka.us-east-1.amazonaws.com:9096,b-1.dfhsdf.u4jjft.c2.kafka.us-east-1.amazonaws.com:9096"
4. Crear archivo client.properties
cat <<EOF > client.properties
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
ssl.truststore.location=$(pwd)/kafka.client.truststore.jks
EOF
5. Crear archivo users_jaas.conf
cat <<EOF > users_jaas.conf
KafkaClient {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="msk-user"
password="msk-pass";
};
EOF
6. Exportar variable de entorno KAFKA_OPTS
Esta variable asegura que el cliente Kafka use la autenticación SASL/SCRAM configurada.
export KAFKA_OPTS="-Djava.security.auth.login.config=$(pwd)/users_jaas.conf"
7. Listar tópicos del clúster
./kafka-topics.sh --bootstrap-server $KAFKA_BROKERS_SCRAM --list --command-config client.properties
Validación y Troubleshooting
Si ves errores de conexión o certificados, verifica que:
El VPC Endpoint está configurado (si el MSK es privado).
Estás usando el truststore correcto (cacerts).
El usuario y contraseña SCRAM son válidos.
Tienes conectividad desde CloudShell hacia los brokers.
