10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

一文看懂——SimSolid的优势

智造软件

仿真 有限元 SimSolid

NIPs 平台:Mint Blockchain 推动 NFT 创新的新平台

NFT Research

NFT\ #Web3

百度搜索2024考研大数据:北方考生“南移”成潮流

极客天地

得物iOS函数调用栈及符号化调优实践|得物技术

得物技术

ios

k8s-NFS系统配置

不在线第一只蜗牛

Kubernetes 容器 云原生

云桌面解决方案:为何远程办公需要它们

青椒云云电脑

云桌面 云桌面系统 云桌面技术

鸿蒙开发案例:绘制中国象棋棋盘与棋子的技术教程

zhongcx

1688跨境代采集运系统

tbapi

1688代采系统 1688代购系统 1688跨境代采系统

AIGC加速商业化落地,抖音开放平台如何打造新ToB商业模式?

ToB行业头条

RUM性能优化之图片加载

乘云数字DataBuff

前端监控 可观测性 JavaScrip RUM

大数据存储计算平台EasyMR:大数据集群动态扩缩容,快速提升集群服务能力

袋鼠云数栈

云桌面适合哪些类型的工作

青椒云云电脑

云桌面

离了大谱,和HR互怼后被开了!

王磊

公链技术开发之路:从概念到实现的公链开发全攻略

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 海外推广

零一万物 Yi-Lightning:超越 GPT-4o 冲击全球榜单;阿里国际 Marco 翻译大模型发布丨 RTE 开发者日报

声网

什么政府网站一定要安装SSL证书吗?应该选择哪种SSL证书?

国科云

实时语音交互的游戏队友——网易伏羲AI Agent创新应用 | DataFunSummit2024演讲实录

网易伏羲

人工智能 AI 语音 网易伏羲 游戏AI

阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse

Apache Flink

大数据 flink StarRocks EMR

博睿数据首届“观测先锋 · 2024 可观测平台创新应用案例大赛”现已启动!

博睿数据

推荐给远程办公用户的云桌面服务

青椒云云电脑

云桌面 云桌面厂家 云桌面系统

淘宝商品详情数据接口:解锁电商数据分析新密码

tbapi

淘宝商品详情数据接口

AI+云原生时代,高校该如何创新教育模式

是但求其发

云计算 软件工程 计算机 大学 #云原生

淘宝 app 商品详情数据接口:让你轻松掌握优惠价、视频和到手价,助力电商决策

tbapi

淘宝商品详情接口 淘宝app详情接口 淘宝详情数据接口 淘宝优惠券接口 淘宝到手价接口

活动预告 | 10月26日,中国数据库联盟(ACDU)中国行·上海站邀您探讨数据库前沿技术

墨天轮

数据库 开源 国产数据库

一图为你揭秘云数据库GaussDB管理平台亮点

华为云开发者联盟

云原生 GaussDB 智能运维 数据库·

如何评估云桌面套餐的性价比?

青椒云云电脑

桌面云 云桌面 云桌面厂家 云桌面系统

有哪些常见的云桌面套餐比较推荐?

青椒云云电脑

云桌面 云桌面厂家 云桌面方案

完全指南:如何高效进行业务应用开发?

NocoBase

开源 低代码 开发工具 无代码 业务应用开发

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