Chalice是一个用python编写无服务器应用程序的框架。它允许您快速创建和部署使用AWS Lambda的应用程序。它提供:
- 用于创建、部署和管理应用程序的命令行工具
- 基于修饰器的API,用于与Amazon API Gateway、Amazon S3、Amazon SNS、Amazon SQS和其他AWS服务集成
- 自动生成IAM策略
您可以创建睡觉接口:
from chalice import Chalice app = Chalice(app_name="helloworld")
@app.route("/") def index():
return {"hello": "world"}
定期运行的任务:
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"}
您可以将lambda函数连接到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))
以及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)
以及其他几个AWS资源
一旦您编写了代码,您只需运行chalice deploy
Chalice负责部署您的应用程序
$ chalice deploy ... https://endpoint/dev $ curl https://endpoint/api {"hello": "world"}
在不到30秒的时间内启动并运行。试一试这个项目,并在Github上与我们分享您的反馈
文档是可用的here
快速入门
在本教程中,您将使用chalice
用于创建和部署基本睡觉应用编程接口的命令行实用程序。此快速入门使用Python3.7,但AWS Chalice支持AWS Lambda支持的所有版本的Python,包括python2.7、python3.6、python3.7、python3.8。我们建议您使用Python3的版本。您可以在Python download page
要安装Chalice,我们将首先在python3.7中创建并激活一个虚拟环境:
$ python3 --version Python 3.7.3 $ python3 -m venv venv37 $ . venv37/bin/activate
接下来,我们将使用以下命令安装圣杯pip
:
$ python3 -m pip install chalice
您可以通过运行以下命令来验证您是否安装了圣杯:
$ chalice --help Usage: chalice [OPTIONS] COMMAND [ARGS]... ...
凭据
在部署应用程序之前,请确保已配置凭据。如果您之前已将计算机配置为运行boto3(AWS SDK For Python)或AWS CLI,则可以跳过此部分
如果这是您第一次为AWS配置凭据,您可以按照以下步骤快速入门:
$ mkdir ~/.aws $ cat >> ~/.aws/config [default] aws_access_key_id=YOUR_ACCESS_KEY_HERE aws_secret_access_key=YOUR_SECRET_ACCESS_KEY region=YOUR_REGION (such as us-west-2, us-west-1, etc)
如果需要有关所有支持的凭据配置方法的详细信息,请参阅boto3 docs
创建您的项目
接下来我们要做的是使用chalice
用于创建新项目的命令:
$ chalice new-project helloworld
这将创建一个helloworld
目录。cd放入此目录。您将看到已为您创建了几个文件:
$ cd helloworld $ ls -la drwxr-xr-x .chalice -rw-r--r-- app.py -rw-r--r-- requirements.txt
您可以忽略.chalice
目录,我们现在要关注的两个主要文件是app.py
和requirements.txt
我们来看一下app.py
文件:
from chalice import Chalice app = Chalice(app_name='helloworld')
@app.route('/') def index():
return {'hello': 'world'}
这个new-project
命令创建了定义单个视图的示例应用程序,/
,调用时将返回JSON正文{"hello": "world"}
正在部署
让我们部署此应用程序。一定要确保你在helloworld
目录并运行chalice deploy
:
$ chalice deploy Creating deployment package. Creating IAM role: helloworld-dev Creating lambda function: helloworld-dev Creating Rest API Resources deployed: - Lambda ARN: arn:aws:lambda:us-west-2:12345:function:helloworld-dev - Rest API URL: https://abcd.execute-api.us-west-2.amazonaws.com/api/
现在,您已经使用API Gateway和Lambda启动并运行了API:
$ curl https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/ {"hello": "world"}
尝试从中更改返回的词典index()
功能。然后,您可以通过运行以下命令重新部署更改chalice deploy
下一步
现在,您已经使用以下工具创建了您的第一个应用程序chalice
您可以修改您的app.py
文件并重新运行chalice deploy
要重新部署更改,请执行以下操作
此时,您可以采取以下几个步骤
- Tutorials-从多个指导性教程中进行选择,这些教程将为您提供Chalice各种功能的分步示例
- Topics-深入研究圣杯特定领域的文档。其中包含比教程更详细的文档
- API Reference-有关Chalice公共API的所有类和方法的低级参考文档
如果您已经完成了对Chalice的实验,并且您想要进行清理,您可以使用chalice delete
命令,则Chalice将删除它在运行chalice deploy
命令
$ chalice delete Deleting Rest API: abcd4kwyl4 Deleting function aws:arn:lambda:region:123456789:helloworld-dev Deleting IAM Role helloworld-dev
反馈
我们也很想听到你的消息。请为您想要查看的其他功能创建任何Github问题,请访问https://github.com/aws/chalice/issues您也可以在GITER上与我们聊天:https://gitter.im/awslabs/chalice