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