安装AWS SAM并部署第一个AWS Lambda服务[AWS Lambda教程AWS SAM系列]

2023年 7月 25日 88.3k 0

AWS SAM 简介

AWS SAM是Serverless Application Model 的缩写,指无服务器应用程序模型,它是一种可以用来在 AWS 上构建无服务器应用程序的开源框架。它提供了一种简略语法,以便您使用简单的 YAML 模板来描述应用程序(Lambda 函数、API 终端节点、DynamoDB 表和其他资源)。在部署期间,SAM 将对简略 SAM 语法进行转换并扩展为 AWS CloudFormation 模板。然后,CloudFormation 将会以可靠、可重复的方式预置资源。作为AWS官方的开源框架,能够让客户使用最新的serverless技术来构建自己的无服务器后端服务。

使用AWS SAM有如下好处

  • 深度集成了AWS在Serverless领域的各个产品,为开发者提高最新的技术,通过YAML描述项目结构大大减轻了手动管理大量lambda的人力负担或者人工编写AWS CloudFormation的难度。
  • 通过SAM,用户可以使用命令轻松完成本地开发和测试,在开发完成后帮助客户快速部署到AWS云上,免去复杂的运维工作
  • 支持AWS Lambda所能运行的全部的语言,比如Python3、Nodejs,Java,Go等。详情请见Supported Runtimes

安装AWS SAM

安装AWS SAM前,我们需要满足前提条件,简而言之就是注册一个AWS Account或者有一个AWS IAM账户,安装好AWS Cli2并配置好AWS凭证。

我们可以按照Installing the AWS SAM CLI来根据自己的操作系统的类型来安装。

以我的电脑(Ubuntu 22.04)为例,我们可以直接下载安装包并进行安装

# 解压
unzip aws-sam-cli-linux-x86_64.zip 
# 安装
sudo ./install
# 检查安装效果
sam --version

image

image

使用SAM编写第一个AWS Lambda项目

我们以Tutorial: Deploying a Hello World application为例子,通过SAM编排AWS Lambda实现一个hello world级别的API demo.

我们可以执行sam init创建项目,并选择python作为编程语言
image

我们可以用vs code或者pycharm打开项目,并执行sam build进行构建
image

构建完成后,我们可以执行sam local start-api在本地进行运行,注意本地运行需要安装docker
image

本地运行后会产生一个本地链接,地址为http://127.0.0.1:3000/hello,当我们访问这个连接即可触发代码的执行并返回结果
image

当我们本地调试完成后,可以运行sam deploy进行发布,sam这时会为我们自动部署项目到AWS上
image
部署完成后,会将互联网可以访问的API输出到命令框,方便大家访问
image
我们使用浏览器访问这个连接,即可得到lamdba被触发运行后的结果
image

项目结构

使用sam创建的项目有固定的结构,具体如下
image

(venv) thinktik@thinkdesk:~/workspace/hello-world$ tree
.
├── events
│   └── event.json
├── hello_world
│   ├── app.py
│   ├── __init__.py
│   └── requirements.txt
├── __init__.py
├── README.md
├── samconfig.toml
├── template.yaml
└── tests
    ├── __init__.py
    ├── integration
    │   ├── __init__.py
    │   └── test_api_gateway.py
    ├── requirements.txt
    └── unit
        ├── __init__.py
        └── test_handler.py

5 directories, 14 files
(venv) thinktik@thinkdesk:~/workspace/hello-world$ 

需要我们重点了解的是:

  • hello_world: 您的代码目录,自己编写的代码都放在这里(可以在template.yaml里进行路径修改)
  • hello_world/app.py: 包含您的 Lambda 函数代码。
  • hello_world/requirements.txt:包含您的 Lambda 函数所需的任何Python依赖关系。
  • samconfig.toml:您的应用程序的配置文件,用于存储 AWS SAM CLI 使用的默认参数。
  • template.yaml:包含您的应用程序基础架构代码的AWS SAM模板。

参考

  • AWS 无服务器应用程序模型 (SAM) 命令行界面介绍
  • 几种高效管理AWS的方式以及AWS开发环境配置

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论