QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

大作业1-同城快递业务系统设计

arcyao

Go Modules v2 及后续版本

Rayjun

Go 语言

2 期架构师训练营 - 大作业(二)

云飞扬

架构师训练营第2期

婚恋交友软件开发

luluhulian

Python实现钉钉/企业微信自动打卡

sum56

Python python 爬虫 打卡

容器&服务:开篇,压力与资源

程序员架构进阶

容器 服务 七日更 28天写作 2月春节不断更

让人“眼前一亮、不明觉厉”的互联网技术PPT

不脱发的程序猿

程序人生 PPT 2月春节不断更 互联网技术PPT 互联网工具

百度网盘限速解决方案

孙叫兽

解决方案 百度网盘 限速

探寻内部类的奥秘(上)

后台技术汇

2月春节不断更

股票配资系统开发

v16629866266

驱动力读书笔记之四

张老蔫

28天写作

产品 0 期 - 第四周作业

vipyinzhiwei

机器学习笔记之:Matrix Matrix Multiplication

Nydia

重磅发布 | 2021年OpenAtom XuperChain开源技术路径

开放原子开源基金会

区块链 百度 开源 开放原子开源基金会

OpenCV--基本的线条操作

IT蜗壳-Tango

七日更 2月春节不断更

OpenCV简介及其工程应用-游戏色块检测

行者AI

OpenCV

Elasticsearch multi-index 搜索

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

史上最全的技术手册整理总结,编程小白都从这篇文章迅速成为大牛

孙叫兽

Java 大前端 技术手册 开发文档

话题讨论 |互联网软件技术培训,靠谱吗?

不脱发的程序猿

程序员 程序人生 话题讨论 互联网培训 技术培训

Webpack | 提升构建速度和体积优化的N种方式

梁龙先森

大前端 webpack 2月春节不断更

Linux Lab 进阶: Uboot 引导程序

贾献华

Linux bootloader Linux Kenel boot

即使技术再精,面试时一问这个必挂!!

冰河

面试 类加载器 我要进大厂 Java类加载

大作业2-知识总结

arcyao

使用APICloud敏捷式开发总结,回顾开发一个完整APP过程。

孙叫兽

App 开发 APICloud 引航计划

从躬身入局到共生入境的做产品

boshi

产品经理 产品设计 七日更

MyBatis专栏 - 进阶(引入外部配置文件, 类型参数设置)

小马哥

Java mybatis 七日更 2月春节不断更

什么是防火墙?

程序员养家活口接私活必备网站(顺便用技术改变世界)

孙叫兽

程序员 网站 私活

学习总结之HTML5剑指前端(建议收藏,图文并茂)

我是哪吒

学习 程序员 面试 大前端 2月春节不断更

2020年末总结,脚踏实地,一步一个脚印——致敬自己一年的心酸历程

孙叫兽

孙叫兽 年度报告 引航计划

“五年饮冰,难凉热血”,一名专科生的求学历程

不脱发的程序猿

程序人生 心路历程 2月春节不断更 大学总结 2020年度总结

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