Asegúrate de tener instaladas las siguientes herramientas:
-
AWS CLI
Requerido para interactuar con servicios de AWS desde la línea de comandos. -
Docker
Necesario para ejecutar contenedores localmente.
docker pull localstack/localstack
docker run -d --name localstackdev -p 4566:4566 -p 4571:4571 -v localstack-data:/var/lib/localstack -v /var/run/docker.sock:/var/run/docker.sock localstack/localstackcd lambda
python3 -m venv .venv
# Windows
source .venv/scripts/activate
# MAC/LINUX
source .venv/bin/activate
pip3 install awscli-local# MAC
zip lambda_function.zip handler.py
# windows click derecho y buscar la opcion para comprimir en zipawslocal lambda create-function \
--function-name my-lambda \
--runtime python3.11 \
--handler handler.lambda_handler \
--role arn:aws:iam::000000000000:role/lambda-role \
--zip-file fileb://lambda_function.zip
awslocal lambda list-functionsawslocal dynamodb create-table \
--table-name MyTableDynamo \
--attribute-definitions AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5awslocal sqs create-queue --queue-name queue-for-example-lambda
awslocal sqs list-queues
awslocal lambda add-permission \
--function-name my-lambda \
--statement-id sqs-access \
--action "lambda:*" \
--principal "*" \
--source-arn arn:aws:sqs:us-east-1:000000000000:queue-for-example-lambda
awslocal lambda add-permission \
--function-name my-lambda \
--statement-id dynamodb-access \
--action "dynamodb:*" \
--principal "*" \
--source-arn arn:aws:dynamodb:us-east-1:000000000000:table/MyTableDynamoawslocal lambda create-event-source-mapping \
--function-name my-lambda \
--event-source-arn arn:aws:sqs:us-east-1:000000000000:queue-for-example-lambdaawslocal sqs send-message \
--queue-url http://localhost:4566/000000000000/queue-for-example-lambda \
--message-body "{ 'msg': 'mensaje 1'}"
awslocal sqs send-message \
--queue-url http://localhost:4566/000000000000/queue-for-example-lambda \
--message-body "{ 'msg': 'mensaje 2'}"
awslocal sqs send-message \
--queue-url http://localhost:4566/000000000000/queue-for-example-lambda \
--message-body "{ 'message': 'mensaje 3'}"
awslocal sqs send-message \
--queue-url http://localhost:4566/000000000000/queue-for-example-lambda \
--message-body "{ 'message': 'mensaje 4'}"awslocal s3 mb s3://my-bucket🐍 Crea un entorno virtual de Python, que es un espacio aislado para trabajar en proyectos.
cd fast-api
python3 -m venv .venv
# Windows
source .venv/scripts/activate
# MAC/LINUX
source .venv/bin/activate📦 Instalación de librerías:
pip3 install -r requirements.txt🚦 Comandos para levantar el API:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload🔔 Llamar al endpoint POST /s3/export para generar un documento en el S3
🧩 Puedes usar la extensión de EchoApi:

ingresamos a la carpeta de terraform:
cd terraformcreamos la infra:
terraform init
terraform apply -auto-approveprobamos la infra:
cd ..
cd lambda
source .venv/bin/activate
awslocal sqs send-message \
--queue-url http://localhost:4566/000000000000/queue-for-example-lambda \
--message-body "{ 'msg': 'mensaje con infra de terraform'}"