写点什么

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

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

关注

评论

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

n8n教程分享,从Github读取.md文档内容

溪抱鱼

人工智能 n8n

一篇说人话的文章,告诉你 Django、Flask、FastAPI 到底怎么选

程序员晚枫

django flask FastApi

低代码可视化工作流的系统设计与实现路径研究

JeeLowCode低代码平台

工作流 低代码 可视化 工作流编排 低代码选择

淘宝商品评论API接口详解

tbapi

淘宝商品评论接口 天猫商品评论接口 淘宝评论API 天猫评论API 淘宝评论采集

基于YOLOv8的AI虫子种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

使用Svelte和D3实现交互式数据可视化

qife122

数据可视化 Svelte

最佳LED视频墙分辨率推荐

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家 户内led显示屏 算力租赁

MCP协议中的不安全凭证存储漏洞分析与安全实践

qife122

MCP 凭证安全

MKVToolNix for Mac mkv视频编辑工具

晨光熹微

Recompress for Mac PDF文件压缩软件

晨光熹微

大数据-45 Redis 从快照到日志:RDB 与 AOF 持久化机制

武子康

Java redis 大数据 缓存 分布式

开启你的专属智能时代:枫清科技个人智能体限时体验计划上线!

Fabarta

人工智能 智能体 agent

淘宝商品详情API响应数据解析(一)

tbapi

淘宝商品详情接口 淘宝API 天猫商品详情接口 天猫API

AI虫子种类识别数据集(近3000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】

申公豹

数据集 yolo

高性能数据模型设计

俞凡

大数据

使用AWS KMS和ML-DSA创建后量子签名指南

qife122

AWS KMS ML-DSA

ZKTorch:通过并行证明累积将机器学习推理编译为零知识证明

qife122

零知识证明 密码学

AI招聘机器人公司Paradox.ai因弱密码泄露数百万求职者数据

qife122

网络安全 密码安全

从 Berlinterop 看三大确定性趋势:以太坊升级与 Layer 2 生态新篇章

NFT Research

Ethereum blockchain web3、

AI-Compass(AI百科全书开源):构建最全面的AI学习与实践生态,服务AI全群体

汀丶人工智能

人工智能 大模型

AI-Compass前沿速览:ChatGPT Agent、Kimi2、Mistral语音模型、Grok AI情感陪伴、百度Tizzy、有言数字人

汀丶人工智能

人工智能 大模型

完美黑客配置的秘诀?Docker化渗透测试工具集ReconBox详解

qife122

网络安全 渗透测试

从Web 2.0到Agentic Web:MCP对智能代理生态构建的推动作用

申公豹

Web

javax.security.auth.login.LoginException: null (68)

刘大猫

人工智能 数据挖掘 算法 数据分析 LoginException

Flink exactly once sink 实现

Joseph295

摆脱偏见,Mac也要逆袭“游戏圈”

阿拉灯神丁

crossover MacBook M1 如何在Mac上运行win游戏 Mac游戏推荐 游戏本

大数据-46 Redis RDB 持久化机制详解:原理、配置与优缺点解析

武子康

Java redis 大数据 缓存 分布式

Netflix 数据网关实践

俞凡

架构 大厂实践

告别 T+1!解密金融级实时数据平台的构建与实践

镜舟科技

数据分析 StarRocks 物化视图 主键模型 湖仓架构

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