chalice

Python 2025-08-23

AWS chalice

chalice是在Python中编写无服务器应用程序的框架。它使您可以快速创建使用AWS Lambda的应用程序。它提供:

  • 用于创建,部署和管理应用程序的命令行工具
  • 基于装饰的API,可与Amazon API Gateway,Amazon S3,Amazon SNS,Amazon SQS和其他AWS服务集成。
  • 自动IAM政策生成

您可以创建REST API:

chalice app = chalice (app_name="helloworld") @app.route("/") def index(): return {"hello": "world"}">
 from chalice import chalice

app = chalice ( app_name = "helloworld" )

@ app . route ( "/" )
def index ():
    return { "hello" : "world" }

定期运行的任务:

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"}">
 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事件:

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))">
 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队列:

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)">
 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部署,而chalice则负责部署应用程序。

 $ chalice部署
...
https:// endpoint/dev

$ curl https:// endpoint/api
{“你好世界”}

启动并在不到30秒内运行。尝试一下这个项目,并在Github上与我们分享您的反馈。

该文档可在此处提供。

Quickstart

在本教程中,您将使用chalice命令行实用程序来创建和部署基本的REST API。此QuickStart使用Python 3.9,但是AWS chalice支持AWS Lambda支持的所有版本的Python,其中包括Python 3.9至Python 3.13。

要安装chalice ,我们将首先在Python3.9中创建并激活虚拟环境:

 $ python3- version
Python 3.9.22
$ python3 -m venv venv39
$。 VENV39/bin/activate

接下来,我们将使用PIP安装chalice :

 $ python3 -m pip安装chalice

您可以通过运行安装chalice :

 $ chalice -Help
用法: chalice [选项]命令[args] ...
...

证书

在部署应用程序之前,请确保您配置了凭据。如果您以前已经配置了机器以运行Boto3(Python的AWS SDK)或AWS CLI,则可以跳过此部分。

如果这是您第一次为AWS配置凭据,则可以按照以下步骤快速开始:

 $ mkdir〜/.aws
$ cat >>〜/.aws/config
[默认]
aws_access_key_id = your_access_key_here
aws_secret_access_key = your_secret_access_key
区域= your_region(例如US-West-2,US-West-1等)

如果您想要有关配置凭据的所有支持方法的更多信息,请参见Boto3文档。

创建您的项目

我们将要做的下一件事是使用chalice Command创建一个新项目:

 $ chalice新项目

这将创建一个Helloworld目录。 CD进入此目录。您会看到为您创建了几个文件:

 $ CD Helloworld
$ LS -LA
drwxr-xr-x。 chalice
-rw-r-r--- app.py
-rw-r--r--要求.txt

您可以忽略。目前, chalice Directory,我们将重点介绍的两个主要文件是app.py and unignts.txt。

让我们看一下app.py文件:

chalice app = chalice (app_name='helloworld') @app.route('/') def index(): return {'hello': 'world'}">
 from chalice import chalice

app = chalice ( app_name = 'helloworld' )


@ app . route ( '/' )
def index ():
    return { 'hello' : 'world' }

新项目命令创建了一个示例应用程序,该应用程序定义单个视图, /当调用时将返回JSON主体{“ Hello”:“ world”}。

部署

让我们部署此应用程序。确保您在Helloworld目录中并运行chalice部署:

 $ chalice部署
创建部署软件包。
创建IAM角色:Helloworld-dev
创建lambda函数:helloworld-dev
创建REST API
部署的资源:
  -lambda arn:arn:aws:lambda:us-west-2:12345:功能: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.amaz**onaws.com/api/
{“你好世界”}

尝试从index()函数更改返回的字典。然后,您可以通过运行chalice部署来重新部署更改。

下一步

现在,您已经使用chalice创建了第一个应用程序。您可以对app.py文件进行修改,并重新运行chalice部署以重新部署更改。

在这一点上,您可以采取几个下一步。

  • 教程 - 从几个指导教程中进行选择,这些教程将为您提供各种chalice特征的逐步示例。
  • 主题 - 深入了解chalice特定领域的文档。这包含比教程更详细的文档。
  • API参考 - 有关chalice公共API一部分的所有类和方法的低级参考文档。

如果您完成了使用chalice的实验,并且想清理,则可以使用chalice Delete命令,而chalice将删除运行chalice Deploy Command时创建的所有资源。

 $ chalice Delete
删除REST API:ABCD4KWYL4
删除功能AWS:ARN:LAMBDA:区域:123456789:Helloworld-dev
删除IAM角色helloworld-dev

反馈

我们也很想收到您的来信。请创建任何GitHub问题,以了解您想在https://gi*th*ub*.com/aws/chalice/issues上看到的其他功能。您也可以在Gitter上与我们聊天:https://gitter.im/awslabs/chalice

下载源码

通过命令行克隆项目:

git clone https://github.com/aws/chalice.git