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

2018阿里云全部产品优惠券(好东东,强烈推荐)
领取地址 https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=zo93kaue

看新闻很累?看技术新闻更累?试试 下载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 CodePipelineAWS CodeBuild 、CloudFormation和 AWS CodeDeploy 持续 地构建,并通过各种金丝雀或线性流量切换配置 逐步 部署SAM应用程序。还可以通过 无服务器应用程序库 以及AWS SAM应用程序打包、发现和配置平台(之前报道过)共享 兼容的解决方案

推荐:在ASP.NET AJAX中使用应用程序服务和本地化(5):自定义应用程序服务的服务器端实现

[本文来自《ASP.NET AJAX程序设计 第II卷:客户端Microsoft AJAX Library相关》的第五章《应用程序服务和本地化》。   身份认证与用户个性化等应用程序服务在实际项目中的

虽然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

相关推荐