SQL Writer
Esta guía te muestra cómo construir un escenario de nube híbrida usando LocalStack y una instancia externa de PostgreSQL. Este lab demuestra cómo una AWS Lambda recupera secretos de Secrets Manager e interactúa con una base de datos fuera del entorno AWS.
Prerrequisitos
Sección titulada «Prerrequisitos»- Docker instalado y en ejecución.
- Dev Containers extension instalada (opcional).
- Terraform (incluido en el Dev Container).
- AWS CLI (incluido en el Dev Container).
- DBeaver o cualquier cliente SQL (para verificar resultados).
Cómo ejecutar
Sección titulada «Cómo ejecutar»-
Configurar el entorno:
Abre VS Code en la carpeta del proyecto y ejecuta este comando en la Paleta de Comandos:
Ventana de terminal > Dev Containers: Reopen in ContainerVentana de terminal docker compose up -d -
A continuación, configura el AWS CLI:
Ventana de terminal aws configure set aws_access_key_id testaws configure set aws_secret_access_key testaws configure set region us-east-1 -
Desplegar recursos:
Ventana de terminal python package_lambda.pyterraform init && terraform apply -auto-approve -
Ejecutar el ejemplo:
Ventana de terminal aws --endpoint-url=http://localhost:4566 lambda invoke \--function-name AddUserFunction \--payload '{}' \response.json
Validar resultados
Sección titulada «Validar resultados»-
Verifica con DBeaver: Conecta a la instancia local de PostgreSQL y ejecuta la siguiente consulta:
- Host:
localhost. - Port:
5432. - Database:
mydb. - User:
myuser. - Password:
mypassword.
SELECT * FROM users ORDER BY created_at DESC; - Host:
-
Verifica con AWS CLI:
- Lista las funciones Lambda:
Ventana de terminal aws --endpoint-url=http://localhost:4566 lambda list-functions - Comprueba los secretos:
Ventana de terminal aws --endpoint-url=http://localhost:4566 secretsmanager list-secrets
- Lista las funciones Lambda:
Limpieza
Sección titulada «Limpieza»terraform destroy -auto-approvedocker compose down -vrm lambda.zip response.jsonSolución de problemas
Sección titulada «Solución de problemas»| Problema | Solución |
|---|---|
| Conexión rechazada | Asegúrate de que host.docker.internal es accesible desde el contenedor LocalStack. En versiones antiguas de Docker en Linux, añádelo a extra_hosts en docker-compose.yml. |
| Puerto ya en uso | Modifica los mapeos de puertos para 4566 o 5432 en docker-compose.yml. |