标签归档:aws-lambda

Chalice-面向AWS的Python无服务器微框架

Chalice是一个用python编写无服务器应用程序的框架。它允许您快速创建和部署使用AWS Lambda的应用程序。它提供:

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

您可以创建睡觉接口:

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 deployChalice负责部署您的应用程序

$ chalice deploy
...
https://endpoint/dev

$ curl https://endpoint/api
{"hello": "world"}

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

文档是可用的here

快速入门

在本教程中,您将使用chalice用于创建和部署基本睡觉应用编程接口的命令行实用程序。此快速入门使用Python3.7,但AWS Chalice支持AWS Lambda支持的所有版本的Python,包括python2.7、python3.6、python3.7、python3.8。我们建议您使用Python3的版本。您可以在Python download page

要安装Chalice,我们将首先在python3.7中创建并激活一个虚拟环境:

$ python3 --version
Python 3.7.3
$ python3 -m venv venv37
$ . venv37/bin/activate

接下来,我们将使用以下命令安装圣杯pip

$ python3 -m pip install chalice

您可以通过运行以下命令来验证您是否安装了圣杯:

$ chalice --help
Usage: chalice [OPTIONS] COMMAND [ARGS]...
...

凭据

在部署应用程序之前,请确保已配置凭据。如果您之前已将计算机配置为运行boto3(AWS SDK For Python)或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 docs

创建您的项目

接下来我们要做的是使用chalice用于创建新项目的命令:

$ chalice new-project helloworld

这将创建一个helloworld目录。cd放入此目录。您将看到已为您创建了几个文件:

$ 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'}

这个new-project命令创建了定义单个视图的示例应用程序,/,调用时将返回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 Gateway和Lambda启动并运行了API:

$ curl https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/
{"hello": "world"}

尝试从中更改返回的词典index()功能。然后,您可以通过运行以下命令重新部署更改chalice deploy

下一步

现在,您已经使用以下工具创建了您的第一个应用程序chalice您可以修改您的app.py文件并重新运行chalice deploy要重新部署更改,请执行以下操作

此时,您可以采取以下几个步骤

  • Tutorials-从多个指导性教程中进行选择,这些教程将为您提供Chalice各种功能的分步示例
  • Topics-深入研究圣杯特定领域的文档。其中包含比教程更详细的文档
  • API Reference-有关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

反馈

我们也很想听到你的消息。请为您想要查看的其他功能创建任何Github问题,请访问https://github.com/aws/chalice/issues您也可以在GITER上与我们聊天:https://gitter.im/awslabs/chalice