Chalice 是一个用 Python 编写无服务器应用程序的框架。它允许您快速创建和部署使用 AWS Lambda 的应用程序。它提供:
您可以创建 Rest API:
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 就会负责部署您的应用程序。
$ 圣杯部署 ... https://端点/dev $ 卷曲 https://端点/api {“你好世界”}
不到 30 秒即可启动并运行。尝试一下这个项目并在 Github 上与我们分享您的反馈。
该文档可在此处获取。
在本教程中,您将使用chalice
命令行实用程序来创建和部署基本 REST API。本快速入门使用 Python 3.7,但 AWS Chalice 支持 AWS Lambda 支持的所有 Python 版本,其中包括 Python 3.7 到 python 3.12。
您可以在 Python 下载页面找到最新版本的 python。
要安装 Chalice,我们首先在 python3.7 中创建并激活一个虚拟环境:
$ python3 --版本 Python 3.7.3 $ python3 -m venv venv37 $。 venv37/bin/激活
接下来我们将使用pip
安装 Chalice :
$ python3 -m pip 安装圣杯
您可以通过运行以下命令来验证您是否已安装 chalice:
$ 圣杯 --帮助 用法:圣杯 [选项] 命令 [参数]... ...
在部署应用程序之前,请确保您已配置凭据。如果您之前已将计算机配置为运行 boto3(适用于 Python 的 AWS 开发工具包)或 AWS CLI,则可以跳过本部分。
如果这是您第一次为 AWS 配置凭证,您可以按照以下步骤快速开始:
$ mkdir ~/.aws $ 猫 >> ~/.aws/config [默认] aws_access_key_id=YOUR_ACCESS_KEY_HERE aws_secret_access_key=您的_SECRET_ACCESS_KEY Region=YOUR_REGION(例如 us-west-2、us-west-1 等)
如果您想了解有关配置凭据的所有受支持方法的更多信息,请参阅 boto3 文档。
接下来我们要做的是使用chalice
命令创建一个新项目:
$ chalice 新项目 helloworld
这将创建一个helloworld
目录。 cd 进入该目录。您将看到已为您创建了几个文件:
$ cd 你好世界 $ ls -la drwxr-xr-x .圣杯 -rw-r--r--app.py -rw-r--r--需求.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
:
$ 圣杯部署 创建部署包。 创建 IAM 角色:helloworld-dev 创建 lambda 函数:helloworld-dev 创建 Rest API 部署的资源: - Lambda ARN:arn:aws:lambda:us-west-2:12345:函数:helloworld-dev - 休息 API URL:https://abcd.execute-api.us-west-2.amazonaws.com/api/
您现在已经使用 API Gateway 和 Lambda 启动并运行了一个 API:
$ 卷曲 https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/ {“你好世界”}
尝试对index()
函数返回的字典进行更改。然后,您可以通过运行chalice deploy
重新部署您的更改。
您现在已经使用chalice
创建了您的第一个应用程序。您可以修改app.py
文件并重新运行chalice deploy
以重新部署您的更改。
此时,您可以采取几个后续步骤。
如果您已经完成了 Chalice 的实验并且想要进行清理,则可以使用chalice delete
命令,Chalice 将删除它在运行chalice deploy
命令时创建的所有资源。
$ 圣杯删除 删除 Rest API:abcd4kwyl4 删除函数 aws:arn:lambda:region:123456789:helloworld-dev 删除 IAM 角色 helloworld-dev
我们也很乐意听取您的意见。请在 https://github.com/aws/chalice/issues 上创建您想要查看的其他功能的任何 Github 问题。您还可以在 gitter 上与我们聊天:https://gitter.im/awslabs/chalice