# 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**

```plaintext
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)**

```plaintext
cp /usr/lib/jvm/jre/lib/security/cacerts kafka.client.truststore.jks
```

---

### **3\. Definir brokers MSK (SCRAM)**

```plaintext
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**

```plaintext
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**

```plaintext
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.

```plaintext
export KAFKA_OPTS="-Djava.security.auth.login.config=$(pwd)/users_jaas.conf"
```

---

### **7\. Listar tópicos del clúster**

```plaintext
./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.
