跳转到主要内容

微框架

项目描述

Gitter Documentation Status Chalice Logo

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.pyrequirements.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

项目详情


发行历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

chalice-1.31.2.tar.gz (257.0 kB 查看哈希值)

上传时间

构建分布

chalice-1.31.2-py3-none-any.whl (265.5 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面