AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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:006429
用户头像

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

关注

评论

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

FastDFS入门,Java编程笔试题及答案

爱好编程进阶

Java 面试 后端开发

Java-23种设计模式概述,手动实现一个简单的AOP框架

爱好编程进阶

Java 面试 后端开发

世界级计算机大神花两年总结出2000页深入理解计算机系统文档

爱好编程进阶

Java 面试 后端开发

架构实战营 - 第 6 期 模块三课后作业

乐邦

「架构实战营」

百度程序员开发避坑指南(Go语言篇)

百度Geek说

后端

Docker编排利器DockerCompose,java面试题大汇总

爱好编程进阶

Java 面试 后端开发

阿里云强力贡献:如何让 StarRocks 做到极速数据湖分析

StarRocks

数据库 大数据 StarRocks

SpringMVC之Interceptor拦截器之登录拦截器,阿里巴巴java面试题

爱好编程进阶

Java 面试 后端开发

百度ToB垂类账号权限平台的设计与实践

百度Geek说

架构 后端

三面头条+四面阿里+五面腾讯拿offer分享面经总结,java最新多线程面试题及答案

爱好编程进阶

Java 面试 后端开发

建议收藏!总结了42种前端常用布局方案

云智慧AIOps社区

CSS html 前端 大前端 HTML5, CSS3

一天下载量突破9000000!限时分享:阿里Java架构师成长笔记

爱好编程进阶

Java 面试 后端开发

关于 MySQL 数据库学习的书籍有哪些值得推荐?

程序员万金游

MySQL 数据库 java 日志 MySQL 数据库 java

90天吃透阿里P8推荐的625页Java编程兵书技术实战,直接入职阿里定级P6

爱好编程进阶

Java 面试 后端开发

无聊科技正经事(第1期):裁员毕业潮,你焦虑吗?

潘大壮

裁员 周刊 科技

Java 定时任务技术趋势

阿里巴巴云原生

【阿里Java岗的魔鬼三面】狠心刷完这6份pdf,java关于异常的面试题

爱好编程进阶

Java 面试 后端开发

两个通宵熬出来的互联网大厂最新面试题收集整理1000道(七-并发编程-下篇),欢迎点赞收藏!!!

爱好编程进阶

Java 面试 后端开发

2021阿里总监最新整理:初级-中级-高级大厂面试真题(附答案解析

爱好编程进阶

Java 面试 后端开发

Github上都在疯找的阿里内部“全栈技能修炼”终于来了,中级java工程师面试题

爱好编程进阶

Java 面试 后端开发

SpringBoot+JWT+Shiro,linux高级编程面试题

爱好编程进阶

Java 面试 后端开发

【Java 基础语法】纯 Java,springmvc面试题常问2022

爱好编程进阶

Java 面试 后端开发

JavaEE框架学习笔记——SpringMVC篇,java集合详解和集合面试题目

爱好编程进阶

Java 面试 后端开发

Sentinel FlowSlot 限流实现原理(文末附流程图与总结),50家大厂面试万字精华总结

爱好编程进阶

Java 面试 后端开发

银杏谷创始人陈向明博士谈云原生的投资策略与思考 | 云原生加速器观点

阿里巴巴云原生

mybatis-plus如何自动填充字段创建时间和修改时间,10天拿到阿里Java岗offer

爱好编程进阶

Java 面试 后端开发

【并发编程系列12】从Java线程池的常用4种写法深入分析线程池(Thread Pool)的实现原理

爱好编程进阶

Java 面试 后端开发

星环科技春季新品发布周,4月19日-23日重磅内容等你来解锁!

星环科技

一键智能Mock,你值得拥有

Liam

前端 前端开发 Postman swagger web前端开发

HTTP 中 ServletContext 对象,java软件工程师面试话术

爱好编程进阶

Java 面试 后端开发

eclipse配置SVN和Maven插件,原生Java开发的路该怎么走

爱好编程进阶

Java 面试 后端开发

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