写点什么

AWS 开源并扩展无服务器应用程序模型(SAM)实现

  • 2018-05-14
  • 本文字数:1561 字

    阅读完需:约 5 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

近日,Amazon Web Services(AWS)开源了其无服务器应用程序模型(SAM)实现,并增加了一个面向CloudWatch Logs 订阅过滤器的新事件源。该版本全面扩展了通过Amazon API 网关配置和部署REST API 的选项,其中包括支持CORS 头、区域端点和二进制媒体类型。

无服务器应用程序模型(SAM)是一个开源规范,扩展了AWS 的基础设施即代码服务 CloudFormation ,有特定的资源类型,“使用一种简洁的语法定义无服务器应用程序”。SAM 实现了目前两种可用的 CloudFormation 转换中的一种,旨在“通过精简 AWS 基础设施即代码的表达式来简化模板编写”。当模板指定了 AWS::Serverless 转换时,在使用处理过的模板创建或更新栈之前,CloudFormation 会把更简洁的 SAM 语法扩展成平常的 CloudFormation 资源类型

编写 SAM 应用程序要借助 SAM Local CLI,它让你可以“在本地测试函数,从 SAM 模板启动一个本地 API 网关,验证 SAM 模板,生成各种事件源的样例负载”(之前报道过)。然后,开发人员可以使用 AWS CodePipeline AWS CodeBuild 、CloudFormation 和 AWS CodeDeploy 持续地构建,并通过各种金丝雀或线性流量切换配置逐步部署SAM 应用程序。还可以通过无服务器应用程序库以及AWS SAM 应用程序打包、发现和配置平台(之前报道过)共享兼容的解决方案

虽然SAM 规范从一开始就是开源的,但AWS 团队必须闭门实现其认可的每一个请求特性。现在,AWS 开源了将SAM 转换成平常的CloudFormation 模板的代码,降低了社区的参与门槛,这样,任何人都可以实现新特性,并通过pull request 和AWS 团队合作,加速验收。 Samtranslator 的源代码遵循 Apache 2.0 许可协议,已经提供的 aws-sam-translator PyPI 程序包也会让无服务器社区更容易“集成其他框架和部署提供程序”。

除了开源 SAM 实现外, SAM 1.5 版本还增加了一个面向 Amazon CloudWatch Logs 的新事件源,当日志消息与特定的过滤器模式相匹配时,会触发一个 Lambda 函数:

复制代码
# [...]
Resources:
LogsProcessor:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: lambda_function.lambda_handler
Runtime: python3.6
Events:
HelloInfoQSubscription:
Type: CloudWatchLogs
Properties:
LogGroupName: !Ref CloudWatchLambdaLogsGroup
FilterPattern: Hello InfoQ

之前的 SAM 1.4 版本提供了人们强烈要求的“跨源资源分享(Cross-Origin Resource Sharing,缩写为CORS)” Amazon API 网关支持,现在,只需简单地指定一个域(还有一个更细粒度的 CORS 配置)就可以启用。它还集成了新的 API 网关区域端点、二进制媒体类型、日志、指标、缓存TTL 设置、AWS Lambda函数并发以及各种小改进和Bug 修复。下面的模板节选说明了通过 Globals 段支持 SAM API 网关的简洁性:

复制代码
---
Transform: AWS::Serverless-2016-10-31
Globals:
Api:
# 允许 www.infoq.com 调用这个 API——SAM 将自动
# 添加 AllowMethods,这是该 API 使用的 HTTP 方法的列表
Cors: "'https://www.infoq.com'"
EndpointConfiguration: REGIONAL
BinaryMediaTypes:
# 在部署时和 image/gif、image/png 等效
- image~1gif
- image~1png
# [...]

无服务器应用程序模型的源代码包含一份开发指南、一份简要设计概述贡献准则。其中还包含生成的CloudFormation 资源和相关的 CloudFormation 兼容性。截至目前,SAM 终端用户支持通过 AWS Lambda 论坛提供,后续会转移到新的 AWS 无服务器应用程序库论坛。有兴趣与 SAM 社区及团队合作的开发人员可以加入 AWS SAM 开发者频道(#samdev)。

查看英文原文 AWS Open Sources and Expands Serverless Application Model (SAM) Implementation

2018-05-14 19:001185
用户头像

发布了 1008 篇内容, 共 389.4 次阅读, 收获喜欢 344 次。

关注

评论

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

物联网为什么需要5G?

华为云开发者联盟

5G 物联网

架构师训练营-第十二周作业

腾志文(清样)

云栖大会倒计时8天,新一代CDN的技术突破和应用实践专场有什么看点?

阿里云Edge Plus

CDN CDN加速

LeetCode题解:225. 用队列实现栈,一个队列, 压入 - O(n), 弹出 - O(1),JavaScript,详细注释

Lee Chen

大前端 LeetCode

java安全编码指南之:表达式规则

简爱W

Java java架构师

北京或先行落地央行数字货币 人民币3.0时代将来临

CECBC

数字货币 银行 人民币

35岁以上的程序员们,后来都干什么去了?

华为云开发者联盟

程序员 职业规划 架构师

架构师0期Week13总结

Nan Jiang

为什么说区块链是制造信任的机器?

CECBC

区块链 不可篡改

架构师训练营第十三周作业

叮叮董董

Securecrt 使用

yuanhang

securecrt

区块链赋能数字经济,为知识和版权确权定价

CECBC

区块链 知识产权 数字经济

打破Scrum的五个误区(译)

Bruce Talk

Scrum 敏捷开发 Agile

大数据2学习总结

周冬辉

架构师课程第十三周总结

dongge

微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!

刘早起😶

Python

架构师训练营-第十一周作业

腾志文(清样)

CommonMistakes

卓丁

捡到宝啦!阿里内部人手一本的Springboot进阶手册,先学为敬

Java架构师迁哥

够开放吗?来,和一群开发者搞事情!

易观大数据

搜索引擎如何推荐网页

dongge

【DevCloud · 敏捷智库】暴走在发布前夜的开发,你怕不怕?

华为云开发者联盟

版本控制 系统集成 发布

淘宝服务端高并发分布式架构演进之路

简爱W

Java java架构师

JavaScript中的原型到底该如何理解?

Walker

Java 大前端 面向对象编程 原型

常用数据分析指标

纯纯

架构师0期Week13作业

Nan Jiang

架构师13周练习

小蚂蚁

Linux 基础操作

yuanhang

linux命令

JavaScript 简介

InfoQ_34a83d636158

从零开始搭建完整的电影全栈系统(二)——简单的WEB展示网站的搭建

刘强西

Yii2 yii

到底什么是分布式系统?你需要了解这些

华为云开发者联盟

分布式 部署

AWS开源并扩展无服务器应用程序模型(SAM)实现_亚马逊云科技_Steffen Opel_InfoQ精选文章