Chalice es un marco para escribir aplicaciones sin servidor en Python. Le permite crear e implementar rápidamente aplicaciones que utilizan AWS Lambda. Proporciona:
Puede crear API Rest:
from chalice import Chalice
app = Chalice ( app_name = "helloworld" )
@ app . route ( "/" )
def index ():
return { "hello" : "world" }
Tareas que se ejecutan de forma periódica:
from chalice import Chalice , Rate
app = Chalice ( app_name = "helloworld" )
# Automatically runs every 5 minutes
@ app . schedule ( Rate ( 5 , unit = Rate . MINUTES ))
def periodic_task ( event ):
return { "hello" : "world" }
Puede conectar una función lambda a un evento S3:
from chalice import Chalice
app = Chalice ( app_name = "helloworld" )
# Whenever an object is uploaded to 'mybucket'
# this lambda function will be invoked.
@ app . on_s3_event ( bucket = 'mybucket' )
def handler ( event ):
print ( "Object uploaded for bucket: %s, key: %s"
% ( event . bucket , event . key ))
Además de una cola SQS:
from chalice import Chalice
app = Chalice ( app_name = "helloworld" )
# Invoke this lambda function whenever a message
# is sent to the ``my-queue-name`` SQS queue.
@ app . on_sqs_message ( queue = 'my-queue-name' )
def handler ( event ):
for record in event :
print ( "Message body: %s" % record . body )
Y varios otros recursos de AWS.
Una vez que haya escrito su código, simplemente ejecute chalice deploy
y Chalice se encargará de implementar su aplicación.
$ cáliz desplegar ... https://punto final/dev $ curl https://punto final/api {"Hola Mundo"}
En funcionamiento en menos de 30 segundos. Pruebe este proyecto y comparta sus comentarios con nosotros aquí en Github.
La documentación está disponible aquí.
En este tutorial, utilizará la utilidad de línea de comandos chalice
para crear e implementar una API REST básica. Este inicio rápido utiliza Python 3.7, pero AWS Chalice admite todas las versiones de Python admitidas por AWS Lambda, que incluye Python 3.7 a Python 3.12.
Puede encontrar las últimas versiones de Python en la página de descarga de Python.
Para instalar Chalice, primero crearemos y activaremos un entorno virtual en python3.7:
$ python3 --versión Pitón 3.7.3 $ python3 -m venv venv37 $ . venv37/bin/activar
A continuación instalaremos Chalice usando pip
:
$ python3 -m pip instalar cáliz
Puedes verificar que tienes cáliz instalado ejecutando:
$ cáliz --ayuda Uso: cáliz [OPCIONES] COMANDO [ARGS]... ...
Antes de poder implementar una aplicación, asegúrese de tener las credenciales configuradas. Si previamente configuró su máquina para ejecutar boto3 (el SDK de AWS para Python) o la CLI de AWS, puede omitir esta sección.
Si es la primera vez que configura credenciales para AWS, puede seguir estos pasos para comenzar rápidamente:
$ mkdir ~/.aws $ gato >> ~/.aws/config [por defecto] aws_access_key_id=SU_LLAVE_ACCESO_AQUÍ aws_secret_access_key=TU_LLAVE_ACCESO_SECRET región=TU_REGIÓN (como us-west-2, us-west-1, etc.)
Si desea obtener más información sobre todos los métodos admitidos para configurar credenciales, consulte los documentos de boto3.
Lo siguiente que haremos será usar el comando chalice
para crear un nuevo proyecto:
$ cáliz nuevo proyecto helloworld
Esto creará un directorio helloworld
. Cd en este directorio. Verás que se han creado varios archivos para ti:
$ cd hola mundo $ ls-la drwxr-xr-x .cálice -rw-r--r-- aplicación.py -rw-r--r-- requisitos.txt
Puedes ignorar el directorio .chalice
por ahora; los dos archivos principales en los que nos centraremos son app.py
y requirements.txt
.
Echemos un vistazo al archivo app.py
:
from chalice import Chalice
app = Chalice ( app_name = 'helloworld' )
@ app . route ( '/' )
def index ():
return { 'hello' : 'world' }
El comando new-project
creó una aplicación de muestra que define una vista única, /
, que cuando se llama devolverá el cuerpo JSON {"hello": "world"}
.
Implementemos esta aplicación. Asegúrate de estar en el directorio helloworld
y ejecuta chalice deploy
:
$ desplegar cáliz Creando paquete de implementación. Creando rol de IAM: helloworld-dev Creando la función lambda: helloworld-dev Creando API de descanso Recursos desplegados: - ARN Lambda: arn:aws:lambda:us-west-2:12345:función:helloworld-dev - URL de la API de descanso: https://abcd.execute-api.us-west-2.amazonaws.com/api/
Ahora tiene una API en funcionamiento mediante API Gateway y Lambda:
$ rizo https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/ {"Hola Mundo"}
Intente realizar un cambio en el diccionario devuelto desde la función index()
. Luego puede volver a implementar sus cambios ejecutando chalice deploy
.
Ya has creado tu primera aplicación usando chalice
. Puede realizar modificaciones en su archivo app.py
y volver a ejecutar chalice deploy
para volver a implementar sus cambios.
En este punto, hay varios pasos siguientes que puede seguir.
Si ha terminado de experimentar con Chalice y desea realizar una limpieza, puede usar el comando chalice delete
, y Chalice eliminará todos los recursos que creó al ejecutar el comando chalice deploy
.
$ cáliz borrar Eliminando API Rest: abcd4kwyl4 Eliminando función aws:arn:lambda:region:123456789:helloworld-dev Eliminación del rol de IAM helloworld-dev
También nos encantaría saber de usted. Cree cualquier problema de Github para funciones adicionales que le gustaría ver en https://github.com/aws/chalice/issues. También puedes chatear con nosotros en gitter: https://gitter.im/awslabs/chalice