微框架
项目描述
Chalice是一个用于在Python中编写无服务器应用的框架。它允许您快速创建和部署使用AWS Lambda的应用程序。它提供
创建、部署和管理您的应用的命令行工具
基于装饰器的API,用于与Amazon API Gateway、Amazon S3、Amazon SNS、Amazon SQS和其他AWS服务集成。
自动IAM策略生成
您可以创建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就会负责部署您的应用程序。
$ chalice deploy ... https://endpoint/dev $ curl https://endpoint/api {"hello": "world"}
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 --version Python 3.7.3 $ python3 -m venv venv37 $ . venv37/bin/activate
接下来,我们将使用 pip 安装Chalice
$ python3 -m pip install chalice
您可以通过运行以下命令来验证是否已安装chalice
$ chalice --help Usage: chalice [OPTIONS] COMMAND [ARGS]... ...
凭证
在您部署应用程序之前,请确保已配置凭证。如果您以前已配置机器以运行boto3(Python的AWS SDK)或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文档。
创建您的项目
接下来,我们将使用 chalice 命令创建一个新项目
$ chalice new-project helloworld
这将创建一个 helloworld 目录。进入此目录。您会看到为您创建了几个文件
$ 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'}
新项目命令创建了一个示例应用程序,它定义了一个单个视图 /,当调用时将返回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网关和Lambda运行了一个API
$ curl https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/ {"hello": "world"}
尝试修改来自 index() 函数的返回字典。然后您可以通过运行 chalice deploy 来重新部署您的更改。
下一步
您现在已使用 chalice 创建了您的第一个应用程序。您可以对 app.py 文件进行修改,并重新运行 chalice deploy 来重新部署您的更改。
此时,您可以采取以下几个下一步行动。
教程 - 从多个引导教程中选择,这些教程将为您提供Chalice各种功能的逐步示例。
主题 - 深入学习Chalice特定领域的文档。这比教程包含更详细的文档。
API参考 - 所有属于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
反馈
我们也非常愿意听取您的意见。请在https://github.com/aws/chalice/issues创建任何GitHub问题,以添加您希望看到的额外功能。您也可以在我们的gitter上与我们聊天:https://gitter.im/awslabs/chalice
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。