Chalice é uma estrutura para escrever aplicativos sem servidor em python. Ele permite criar e implantar rapidamente aplicativos que usam AWS Lambda. Ele fornece:
Você pode criar APIs Rest:
from chalice import Chalice
app = Chalice ( app_name = "helloworld" )
@ app . route ( "/" )
def index ():
return { "hello" : "world" }
Tarefas executadas periodicamente:
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" }
Você pode conectar uma função lambda a um 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 ))
Bem como uma fila 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 )
E vários outros recursos da AWS.
Depois de escrever seu código, basta executar chalice deploy
e o Chalice cuidará da implantação do seu aplicativo.
$ implantação de cálice ... https://ponto final/dev $ curl https://endpoint/api {"olá": "mundo"}
Pronto e funcionando em menos de 30 segundos. Experimente este projeto e compartilhe seus comentários conosco aqui no Github.
A documentação está disponível aqui.
Neste tutorial, você usará o utilitário de linha de comando chalice
para criar e implementar uma API REST básica. Este início rápido usa Python 3.7, mas o AWS Chalice oferece suporte a todas as versões de python suportadas pelo AWS Lambda, que inclui Python 3.7 até python 3.12.
Você pode encontrar as versões mais recentes do python na página de download do Python.
Para instalar o Chalice, primeiro criaremos e ativaremos um ambiente virtual em python3.7:
$ python3 --versão Pitão 3.7.3 $ python3 -m venv venv37 $. venv37/bin/ativar
A seguir instalaremos o Chalice usando pip
:
$ python3 -m pip instalar cálice
Você pode verificar se o Chalice está instalado executando:
$ cálice --help Uso: cálice [OPÇÕES] COMANDO [ARGS]... ...
Antes de implantar um aplicativo, certifique-se de ter as credenciais configuradas. Se você configurou anteriormente sua máquina para executar o boto3 (o AWS SDK para Python) ou a AWS CLI, você pode pular esta seção.
Se esta for a primeira vez que você configura credenciais para AWS, siga estas etapas para começar rapidamente:
$ mkdir ~/.aws $ gato >> ~/.aws/config [padrão] aws_access_key_id=SEU_ACCESS_KEY_HERE aws_secret_access_key=SEU_SECRET_ACCESS_KEY região = SUA_REGION (como us-west-2, us-west-1, etc.)
Se você quiser mais informações sobre todos os métodos suportados para configurar credenciais, consulte a documentação do boto3.
A próxima coisa que faremos é usar o comando chalice
para criar um novo projeto:
$ chalice novo projeto helloworld
Isso criará um diretório helloworld
. CD neste diretório. Você verá que vários arquivos foram criados para você:
$ cd olá mundo $ls-la drwxr-xr-x .chalice -rw-r--r-- app.py -rw-r--r-- requisitos.txt
Você pode ignorar o diretório .chalice
por enquanto, os dois arquivos principais nos quais focaremos são app.py
e requirements.txt
.
Vamos dar uma olhada no arquivo app.py
:
from chalice import Chalice
app = Chalice ( app_name = 'helloworld' )
@ app . route ( '/' )
def index ():
return { 'hello' : 'world' }
O comando new-project
criou um aplicativo de amostra que define uma única visualização, /
, que quando chamada retornará o corpo JSON {"hello": "world"}
.
Vamos implantar este aplicativo. Certifique-se de estar no diretório helloworld
e execute chalice deploy
:
$ implantação de cálice Criando pacote de implantação. Criando função IAM: helloworld-dev Criando função lambda: helloworld-dev Criando API Rest Recursos implantados: - Lambda ARN: arn:aws:lambda:us-west-2:12345:function:helloworld-dev - URL da API Rest: https://abcd.execute-api.us-west-2.amazonaws.com/api/
Agora você tem uma API instalada e funcionando usando API Gateway e Lambda:
$ curl https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/ {"olá": "mundo"}
Tente fazer uma alteração no dicionário retornado pela função index()
. Você pode então reimplantar suas alterações executando chalice deploy
.
Agora você criou seu primeiro aplicativo usando chalice
. Você pode fazer modificações em seu arquivo app.py
e executar novamente chalice deploy
para reimplantar suas alterações.
Neste ponto, existem vários próximos passos que você pode seguir.
Se você tiver terminado de experimentar o Chalice e quiser fazer a limpeza, poderá usar o comando chalice delete
, e o Chalice excluirá todos os recursos que criou ao executar o comando chalice deploy
.
$ cálice excluir Excluindo API Rest: abcd4kwyl4 Excluindo função aws:arn:lambda:region:123456789:helloworld-dev Excluindo função IAM helloworld-dev
Também adoraríamos ouvir de você. Crie quaisquer problemas no Github para recursos adicionais que você gostaria de ver em https://github.com/aws/chalice/issues. Você também pode conversar conosco no gitter: https://gitter.im/awslabs/chalice