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
