写点什么

AWS 发布用于本地构建和测试 AWS Lambda 无服务器应用的“SAM Local”

  • 2017-08-22
  • 本文字数:2006 字

    阅读完需:约 7 分钟

AWS 最近发布了一款测试版的新工具 SAM Local ,该工具可以帮助开发者在本地计算机上更轻松地构建并测试无服务器 AWS Lambda 应用程序。SAM Local 提供的核心功能包括:在本地运行的 Docker 中测试 AWS Lambda 函数,借助 SAM 模板通过一个简单的 CLI 启动本地 API 网关并置于 Lambda 函数之前,验证 SAM 模板,以及针对 S3、Kinesis、CloudTrail 等各种 AWS 事件源的测试工作生成示例载荷。

AWS 去年发布的无服务器应用程序模型(Serverless Application Model,SAM),意在帮助开发者更轻松地部署无服务器应用。SAM 是一种开源规范,基于 AWS CloudFormation 构建并对其进行了扩展,这是 AWS 提供的基础架构即代码(IaC)产品,可供开发者以声明的方式指定云资源的部署和配置。

SAM Local 的主要功能包括:

通过 SAM Local 在本地运行无服务器项目和函数需要安装并运行Docker ,此时SAM Local 将使用DOCKER_HOST 环境变量连接Docker 守护进程。SAM Local 可通过 NPM 安装(npm install -g aws-sam-local),或可从原代码库直接安装最新版(访问 github.com/awslabs/aws-sam-loca,并创建一个名为aws-sam-local,而非sam的二进制文件)。

开发者可通过增强的 CloudFormation 模板格式指定函数的部署配置以及相关的集成式 AWS 资源(这种格式最终会转换为标准的 CloudFormation 模板)。例如,下列template.yaml文件定义了一个简单的 DynamoDB 表,一个基于 Python 的 Lambda 函数(源代码包含在一个单独的文件中,其名称可通过’Handler property’ lambda_function.py 指定),以及一个支持 GET 和 POST 方法的 API 网关实例。

复制代码
---
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
VotesTable:
Type: "AWS::Serverless::SimpleTable"
VoteSpacesTabs:
Type: "AWS::Serverless::Function"
Properties:
Timeout: 30
Runtime: python3.6
Handler: lambda_function.lambda_handler
Policies: AmazonDynamoDBFullAccess
Environment:
Variables:
TABLE_NAME: !Ref VotesTable
Events:
GetVotes:
Properties:
Method: get
Path: /
Type: Api
Vote:
Properties:
Method: post
Path: /
Type: Api

Randall Hunt 撰写的一篇 AWS 博客文章提供了 SAM 部署与 API 网关集成的范例,并演示了 SAM Local 对整个开发流程提供的帮助。相关说明已经很完善,但实际使用时需要首先创建相应的 DynamoDB 表,随后才能测试函数(例如下列示例通过 AWS CLI 执行了create-table命令),此外在针对测试用途运行本地DynamoDB 时,还需要将函数中的DynamoDB 主机名改为计算机的本地网络IP 地址,不能直接使用 localhost,这是因为函数实际上运行在 Docker 容器内,而 Mac 或 Windows 上的 Docker 都运行在自己的虚拟机内,此时localhost代表不同的上下文。

复制代码
aws dynamodb create-table \
--table-name spaces-tabs-votes \
--attribute-definitions \
AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 \
--endpoint-url http://localhost:8000

SAM Local 可以针对测试用途生成AWS 服务事件,例如运行 sam local generate-event <service>这样的 CLI 命令,此外还可通过受支持的 IDE 进行交互式调试。在Java 和Node.js 中,-d 标志和端口可传递至 sam local CLI 命令,借此可立刻启动调试器。AWS 博客建议对 Python 使用诸如 epdb 这样的二进制库。

在本地开发并测试无服务器应用后,可以使用 SAM CLI 将应用程序打包并部署到生产环境。sam package命令可将代码压缩为 Zip 格式,上传至 S3,并生成一个可直接通过 AWS CloudFormation 部署至 Lambda 的 SAM 文件。sam deploy命令可将打包后的 SAM 模板部署至 CloudFormation。sam packagesam deploy的作用分别等同于 AWS CLI 中的 aws cloudformation package aws cloudformation deploy 命令。

有关 SAM Local 的更多信息可访问 AWS 博客文章:“新增 - AWS SAM Local (Beta) – 本地构建并测试无服务器应用程序”,或访问该项目的 GitHub 代码库

阅读英文原文 AWS Release ‘SAM Local’ to Facilitate Local Build and Test of AWS Lambda Serverless Applications

2017-08-22 19:006591
用户头像

发布了 283 篇内容, 共 113.0 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

【Java优化实战】「微基准系列」带你脚踏实地的进行开发和使用JMH测试和提升应用程序和服务指南

码界西柚

Java JMH 3月日更 JMH性能基准测试

三天吃透SpringMVC面试八股文

程序员大彬

Java spring springmvc

5分钟部署百台云上计算机,22支参赛队伍快速接入南网电力调度AI应用大赛

云布道师

无影云电脑

软件测试 | Sonarqube架构

测吧(北京)科技有限公司

测试

软件测试 | 精准化测试

测吧(北京)科技有限公司

测试

1行Python代码,把PPT转成图片,python-office功能更新~

程序员晚枫

Python Office 自动化办公

阿里云函数计算助力高德 RTA 广告投放系统架构升级

Serverless Devs

Serverless 高德

软件测试 | Sonarqube中的覆盖率分析

测吧(北京)科技有限公司

测试

2022 IoTDB Summit:中冶赛迪工业互联网平台与CISDigital-TimeS(基于IoTDB)在钢铁行业的实践

Apache IoTDB

大数据 开源 IoTDB

推荐这5个很牛的开源项目,程序员直呼内行

引迈信息

开源 低代码

软件测试 | Sonarqube scanner使用

测吧(北京)科技有限公司

测试

2022 IoTDB Summit:长安汽车黄立《Apache IoTDB 在长安智能汽车数据平台的实践》

Apache IoTDB

软件测试 | 代码分析的持续集成应用

测吧(北京)科技有限公司

测试

C++ 线程池

王玉川

c++ 编程语言 多线程 线程池

Matlab实现小波变换

timerring

图像处理 数字图像处理

软件测试 | 常见覆盖率统计工具

测吧(北京)科技有限公司

测试

设计模式之美—接口隔离

GalaxyCreater

设计模式

Spring进阶:定义bean时容易踩的两个坑,连老手也容易犯错

程序员拾山

spring

四步走搭建自己的专属 ChatGPT(附开源代码)| 社区征文

FN0

AI 话题广场 ChatGPT

用友成为铸基计划-2022标准建设贡献单位!

用友BIP

2022 IoTDB Summit:宝武智维徐少锋《Apache IoTDB 在宝武装备远程智能运维平台中的使用案例》

Apache IoTDB

大数据 时序数据库 IoTDB

软件测试 | 测试左移代码分析

测吧(北京)科技有限公司

测试

Docker 环境搭建

流火

Docker

DockQuery x 达梦 国产数据库生态“加速跑”

BinTools图尔兹

#数据库 信创产业 达梦认证

英特尔公司高级副总裁、中国区董事长王锐: 下一个中国是中国!

科技之家

GPT-3/ChatGPT复现的经验教训

OneFlow

人工智能 深度学习 GPT-3 ChatGPT

这样在 C# 使用 LongRunnigTask 是错的

newbe36524

C# Docker Kubernetes

2022 IoTDB Summit:IoTDB PMC 乔嘉林《端边云协同:Apache IoTDB 全新单机分布式架构》

Apache IoTDB

好用的数据校验&修复工具gt-checksum开源啦

GreatSQL

greatsql社区 gt-checksum

软件测试 | Sonarqube maven分析

测吧(北京)科技有限公司

测试

IntelliJ IDEA中提高代码开发效率的10个快捷操作

京东科技开发者

var java 企业号 3 月 PK 榜 psvm sout

AWS发布用于本地构建和测试AWS Lambda无服务器应用的“SAM Local”_亚马逊云科技_Daniel Bryant_InfoQ精选文章