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

news/2024/5/20 6:11:53 标签: serverless, python, runtime
\

看新闻很累?看技术新闻更累?试试下载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


http://www.niftyadmin.cn/n/1041587.html

相关文章

对数据结构概念的理解和认识_从这个角度去理解数据结构与算法更容易

原文:https://blog.csdn.net/jintianyishiyeai/article/details/88628442引言在互联网、大数据、人工智能火爆的今天,“算法”这个词几乎妇孺皆知,业已成为“高薪”“牛X”的代名词。What is Algorithm?(算法是个什么鬼 )为了不落…

【思特奇杯.云上蓝桥-算法训练营】第2周

1.带分数 100 可以表示为带分数的形式:100 3 69258 / 714 还可以表示为:100 82 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。 类似这样的带分数,100 有 11 种表示…

python打印字符串和变量_如何在Python中的同一行上打印变量和字符串?

Ashwini Chau.. 217 用于,在打印时分隔字符串和变量: print "If there was a birth every 7 seconds, there would be: ",births,"births" , 在print语句中用单个空格分隔项目: >>> print "foo","bar","spam" foo …

【思特奇杯.云上蓝桥-算法训练营】第3周

1.斐波那契数 动态规划 class Solution {public int fib(int n) {if(n0) return 0;if(n1) return 1;int [] dpnew int[n1];dp[0]0;dp[1]1;for(int i2;i<n;i){dp[i]dp[i-1]dp[i-2];}return dp[n];} }2.第 N 个泰波那契数 class Solution {public int tribonacci(int n) {i…

c++数据结构_基于锁的并发数据结构:如何给数据结构加锁

在结束锁的讨论之前&#xff0c;我们先讨论如何在常见数据结构中使用锁。通过锁可以使数据结构线程安全(thread safe)。当然&#xff0c;具体如何加锁决定了该数据结构的正确性和效率&#xff1f;因此&#xff0c;我们的挑战是&#xff1a;关键问题&#xff1a;如何给数据结构加…

技术沙龙|拷问智能合约技术安全,落地金融与物联网该如何实践?(上海)

2019独角兽企业重金招聘Python工程师标准>>> 区块链落地实践&#xff0c;一般会选择以太坊智能合约开发&#xff0c;但是目前已有的智能合约实践项目&#xff0c;在安全性上存在很多漏洞风险。 总结了很多起因智能合约漏洞导致的数字货币被盗事件后我们发现&#xf…

python游戏编程快速上手. pdf_《Python游戏编程快速上手》一1.3 如何使用本书

本节书摘来异步社区《Python游戏编程快速上手》一书中的第1章&#xff0c;第1.3节&#xff0c;作者&#xff1a; 【美】Al Sweigart&#xff08;斯维加特&#xff09; 译者&#xff1a; 李强 责编&#xff1a; 陈冀康&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众…

java四舍五入(保留两位小数)

1.最简单的方法&#xff1a; float a 123.4567f; 这里的100就是2位小数点,如果要其它位,如4位, 这里两个100改成10000 float b (float)(Math.round(a*100))/100;double f 111231.5585; BigDecimal b new BigDecimal(f); double f1 b.setScale(2…