Este repositorio proporciona un ejemplo de cómo habilitar la comunicación entre dos funciones AWS Lambda ubicadas en diferentes cuentas de AWS. La solución se implementa utilizando AWS CDK con JavaScript y funciones Lambda escritas en Python.
La arquitectura de esta solución se muestra a continuación:
- Disparador de Evento: Un scheduler activa una función Lambda cada 5 minutos.
- Kinesis Stream: La función Lambda activada envía un payload dummy a un stream de Amazon Kinesis.
- Lambda Origen: El stream de Kinesis invoca una función Lambda en la cuenta de AWS de origen.
- Asunción de Rol Cross-Account: La función Lambda en la cuenta de origen asume un rol en la cuenta de destino de AWS y obtiene credenciales temporales.
- Lambda Destino: Usando estas credenciales temporales, la función Lambda en la cuenta de origen se comunica con una función Lambda en la cuenta de destino.
- AWS CDK instalado en tu máquina local.
- Node.js instalado en tu máquina local.
- Python 3.8 o superior instalado en tu máquina local.
- AWS CLI configurado con acceso a ambas cuentas de AWS.
git clone https://github.com//kinesis_eventbridge_lambda_cross_account.git
Navega al directorio del proyecto CDK e instala las dependencias necesarias:
cd /kinesis_eventbridge_lambda_cross_account/destino/cdk-lambda-origin-account
npm install
Si aún no has hecho bootstrap de tu entorno AWS para CDK, ejecuta:
cdk bootstrap aws://ID_CUENTA/REGION
Asegúrate de reemplazar ID_CUENTA
y REGION
con el ID de tu cuenta y región específicos.
cdk deploy
Importante: Despliega el stack de CDK en ambas cuentas, origen y destino en 2 cuentas de aws diferentes
Las funciones Lambda están implementadas en Python y se pueden encontrar en el directorio lambda/
. Cada función está diseñada para realizar lo siguiente:
- Lambda Origen: Envía datos al stream de Kinesis y asume el rol cross-account.
- Lambda Destino: Recibe los datos y realiza un procesamiento adicional.
- Asegúrate de que los roles de IAM tengan los permisos mínimos necesarios.
- Utiliza métodos seguros para almacenar y gestionar las credenciales temporales.
Para eliminar los recursos creados por este stack:
cdk destroy
Asegúrate de eliminar los recursos en ambas cuentas, origen y destino.
Este proyecto está licenciado bajo la Licencia MIT.