Deploy aplicacion serverless en python con aws sam y github action
github actions y sam aws
AWS Serverless Application Model (SAM) es un marco de código abierto para crear aplicaciones sin servidor. Proporciona sintaxis abreviada para expresar funciones, API, bases de datos y asignaciones de origen de eventos, el cual le hace un complemento a cloudFormation para mejorar el deploy de una aplicación serverless.
Vamos a desplegar nuestra aplicación serverless escrita en python el codigo final.
- Creamos nuestra aplicacion base con sam puedes instalarlo.
sam init
2. Creamos un archivo .github/workflows/main.yml
on: [push]
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: Deploy sam
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Deploy sam on aws
uses: ncleguizamon/aws-sam-python-action@v1.1
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
#AWS_SESSION_TOKEN: ${{ secrets.AWS_SESSION_TOKEN }}
with:
STACK: 'app1' #requerido
S3_BUCKET: 'testactions' # requerido
#PARAMETER_OVERRIDES: 'branch=master'
#AWS_DEFAULT_REGION: 'us-east-1'
#CAPABILITIES: CAPABILITY_IAM
Bueno les voy a comentar que hace cada steps
steps Checkout
- name: Checkout
uses: actions/checkout@v2
Este step lo que hace es un pull a la maquina que utiliza github para hacer el deploy en este caso un ubuntu runs-on: ubuntu-latest
steps Deploy Sam on aws
En este step vamos a a empaquetar y deploy en nuestra cuenta aws, para eso devemos crear 2 o 3 secrets en github.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN (este es opcional)
Luego se especifica el Nombre del stack y el bucket en s3 los cuales son requeridos, los demas son opcionales.
3. hacemos push a github y vamos a la seccion de actions y vemos que sucede.
Podemos ver el log de lo que esta empaquetando y configurando SAM
Vemos en aws cloudformation
y Listo ya se nos ha creado nuestro stack en nuestra cuenta aws.