Project Icon

chalice

Python无服务器应用开发框架 简化AWS Lambda部署

Chalice是一个Python无服务器应用开发框架,专为AWS Lambda设计。它提供命令行工具、装饰器API和自动IAM策略生成功能,支持快速创建REST API、定期任务、S3事件处理和SQS消息队列等。开发者可以通过简洁的代码和命令,在短时间内完成应用的部署和运行,显著提高了无服务器应用的开发效率。

=========== AWS Chalice

.. image:: https://badges.gitter.im/awslabs/chalice.svg :target: https://gitter.im/awslabs/chalice?utm_source=badge&utm_medium=badge :alt: Gitter .. image:: https://readthedocs.org/projects/chalice/badge/?version=latest :target: http://aws.github.io/chalice/?badge=latest :alt: 文档状态

.. image:: https://aws.github.io/chalice/_images/chalice-logo-whitespace.png :target: https://aws.github.io/chalice/ :alt: Chalice徽标

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

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

你可以创建REST API:

.. code-block:: python

from chalice import Chalice

app = Chalice(app_name="helloworld")

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

定期运行的任务:

.. code-block:: python

from chalice import Chalice, Rate

app = Chalice(app_name="helloworld")

# 每5分钟自动运行一次
@app.schedule(Rate(5, unit=Rate.MINUTES))
def periodic_task(event):
    return {"hello": "world"}

你可以将Lambda函数连接到S3事件:

.. code-block:: python

from chalice import Chalice

app = Chalice(app_name="helloworld")

# 每当有对象上传到'mybucket'时
# 这个Lambda函数就会被调用

@app.on_s3_event(bucket='mybucket')
def handler(event):
    print("对象上传到存储桶: %s,键: %s"
          % (event.bucket, event.key))

以及SQS队列:

.. code-block:: python

from chalice import Chalice

app = Chalice(app_name="helloworld")

# 每当有消息发送到"my-queue-name" SQS队列时
# 调用这个Lambda函数

@app.on_sqs_message(queue='my-queue-name')
def handler(event):
    for record in event:
        print("消息内容: %s" % record.body)

以及其他几个AWS资源。

一旦你编写完代码,只需运行chalice deploy,Chalice就会负责部署你的应用程序。

::

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

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

30秒内即可启动并运行。 尝试这个项目,并在Github上与我们分享你的反馈。

文档可在 这里 <http://aws.github.io/chalice/>__获取。

快速入门

.. quick-start-begin

在本教程中,你将使用chalice命令行工具创建和部署一个基本的REST API。本快速入门使用Python 3.7,但AWS Chalice支持AWS Lambda支持的所有Python版本,包括Python 3.7到Python 3.12。

你可以在Python下载页面 <https://www.python.org/downloads/>_找到最新的Python版本。

要安装Chalice,我们首先在Python 3.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 (例如 us-west-2, us-west-1 等)

如果你想了解有关所有支持的凭证配置方法的更多信息,请参阅 boto3文档 <http://boto3.readthedocs.io/en/latest/guide/configuration.html>__。

创建你的项目

接下来,我们将使用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文件:

.. code-block:: python

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重新部署你的更改。

.. quick-start-end

后续步骤

你现在已经使用chalice创建了第一个应用。你可以对app.py文件进行修改,然后重新运行chalice deploy来重新部署你的更改。

此时,你可以采取以下几个后续步骤:

  • 教程 <https://aws.github.io/chalice/tutorials/index.html>__
    • 从几个引导教程中选择,这些教程将为你提供Chalice各种功能的分步示例。
  • 主题 <https://aws.github.io/chalice/topics/index.html>__ - 深入了解Chalice特定领域的文档。 这里包含比教程更详细的文档。
  • API参考 <https://aws.github.io/chalice/api.html>__ - 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

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号