9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

AWS Serverless 应用模型添加对 Step Functions 状态机的支持

  • 2020-08-17
  • 本文字数:2256 字

    阅读完需:约 7 分钟

AWS Serverless应用模型添加对Step Functions状态机的支持

AWS Serverless 应用模型(AWS Serverless Application Model,AWS SAM)最近获得了对AWS Step Functions状态机的支持。新的AWS::Serverless::StateMachine资源类型能够让开发人员在一个 SAM 模板或单独的文件中定义状态机,这样的话,他们就能够以 serverless 应用中集成部件的形式提供工作流编排。


AWS Serverless应用模型是一个开源框架,它提供了一个“简单整洁”的速记语法来扩展 AWS 的基础设施即代码服务CloudFormation,从而简化 serverless 应用的构建(我们此前曾经介绍过)。它是伴随AWS SAM CLI一起使用的,该工具最近刚刚正式发布,提供了“一个本地的工具来创建、开发、调试和部署 serverless 应用”。


AWS Step Functions是一个 serverless 工作流编排服务,它允许“序列化 AWS Lambda 函数和多个 AWS 服务到业务关键型应用中”。Step Functions 状态机的执行能够最多运行一年的时间,同时会自动管理状态、错误处理和重试逻辑(我们此前曾经介绍过)。


正如 Rob Sutter 在他的概述博客文章中所描述的,AWS SAM 为 Step Functions 所提供的支持借助AWS::Serverless::StateMachine资源类型简化了 serverless 应用中工作流的定义。除了为工作流执行的日志记录或基于事件的触发配置选项提供速写语法之外,它还允许使用SAM策略模板将工作流的权限缩小到仅限于当前应用所使用到的资源。反过来,这能够在通过AWS Serverless Application Repository我们此前曾经介绍过)部署应用的时候,放弃客户对未限定作用域的 IAM 权限的确认。


他的样例模板供应了一个 DynamoDB 表,随后该表被 Step Functions 状态机通过服务集成引用到PutItem API操作,以便于存储工作流执行的信息,并且会被一个策略模板所引用,这样的话,所有的资源就能以单个应用的形式一起进行供应:


Resources:  SAMTable:    Type: AWS::Serverless::SimpleTable  SimpleStateMachine:    Type: AWS::Serverless::StateMachine    Properties:      Definition:        StartAt: FirstState        States:          FirstState:            Type: Pass            Next: Write to DynamoDB          Write to DynamoDB:            Type: Task            Resource: arn:aws:states:::dynamodb:putItem            Parameters:              TableName: !Ref SAMTable              Item:                id:                  S.$: $$.Execution.Id            ResultPath: $.DynamoDB            End: true      Policies:        - DynamoDBWritePolicy:             TableName: !Ref SAMTable
复制代码


注意,状态机可以像上面的样例那样,通过Definition属性在基于 SAM 的模板的 JSON 或 YAML 文件中内联定义,也可以通过DefinitionUri属性,由 Amazon S3 URI 或本地文件路径来进行定义,如下面的样例所示。DefinitionSubstitutions属性允许声明一个键-值对的 map,能够在状态机内用${dollar_sign_brace}符号替换匹配的变量定义:


StockTraderStateMachine:  Type: AWS::Serverless::StateMachine  Properties:    DefinitionUri: statemachine/stockTrader.asl.json    DefinitionSubstitutions:      StockCheckerFunctionArn: !GetAtt StockCheckerFunction.Arn      StockSellerFunctionArn: !GetAtt StockSellerFunction.Arn      StockBuyerFunctionArn: !GetAtt StockBuyerFunction.Arn      DDBPutItem: !Sub arn:${AWS::Partition}:states:::dynamodb:putItem      DDBTable: !Ref TransactionTable
复制代码


AWS 社区英雄Ben Kehoetweet上推荐了这种架构选择:


各位,认真听好了,这是一个 DSL 部署 API(CodeBuild、CodePipeline、SSM Automation docs……)应有的运行方式,你在自己的文件中定义内容,然后使用替换功能从模板注入引用。我对这个版本发布超级感兴趣!


AWS::Serverless::StateMachine提供的额外简化就是可以启动工作流执行的事件源的配置以及用于捕获工作执行历史的日志目的地的配置。两者的运行方式在概念上都类似于这些属性如何在其他资源类型中是如何实现的。


在相关的新闻中,AWS 团队最近添加了对通过Visual Studio Code“定义、可视化和创建”Step Functions 工作流的支持。针对 Visual Studio Code 的 AWS Toolkit 最近刚刚具备了通过启动配置调试SAM应用的能力。AWS Step Functions 本身最近具备了新的通过AWS CodeBuild进行服务集成的功能,AWS CodePipeline补充了一个新的操作类型以支持通过 Step Functions 实现复杂的发布流程。这些更新组合在一起,能够让开发人员自动化和定制化他们的软件开发工作流并支持细粒度的持续交付能力,但是这与微软的GitHub Actions有所差异。


相对于 AWS SAM,更喜欢 Serverless 框架的开发人员可以使用Serverless Step Functions插件。微软的 Azure 也提供了一个设计者优先的声明式开发体验,用来创建和管理Visual Studio Code中的Azure Logic Apps工作流定义。与之不同的是,Azure Durable Functions为有状态工作流提供了一个代码优先的声明式编排。Google Cloud 平台的工作流编排服务Cloud Composer构建在开源的Apache Airflow引擎之上,通过基于 Python 的配置即代码实现命令式的工作流定义。


AWS Serverless 应用模型文档提供了一个开发人员指南,包括AWS SAM规范的参考、SAM CLI命令参考SAM策略模板。它们通过GitHub仓库Slack频道提供支持。除了供应 AWS 服务的常规使用定价之外,AWS SAM 不收取任何额外费用。


原文链接:


AWS Serverless Application Model Supports Step Functions State Machines


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-08-17 13:05951

评论

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

互联网 | 逻辑上的黑话才是真正的花里胡哨

知了一笑

程序员 互联网 黑话

12 高可用的应用(1)

Java 程序员 后端

19年末从外包辞职,10000小时后,进字节跳动拿offer

Java 程序员 后端

RocketMQ 5.0 POP 消费模式探秘

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列 pOP

15个顶级Java多线程面试题及答案

Java 程序员 后端

20 数据存储服务器集群的伸缩性设计

Java 程序员 后端

2020年“有史以来”全网最全1309道BAT大厂java面试题(附答案分享)

Java 程序员 后端

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

Java 程序员 后端

13万字!腾讯高工手写JDK源码笔记 带你飙向实战

Java 程序员 后端

10 K8S之名称空间

穿过生命散发芬芳

k8s 11月日更

18张图揭秘高性能Linux服务器内存池技术是如何实现的

Java 程序员 后端

2020年Java程序员请先把这几项硬技能熟悉掌握,再想着跳槽拿高薪

Java 程序员 后端

10分钟搞定OAuth2

Java 程序员 后端

从欧拉捐赠中,读懂数字基建与数字中国

脑极体

布局电力行业,百度智能云与中国电科院签署战略合作协议

百度大脑

人工智能 百度

18级大数据专家,漫谈大数据平台安全风险与建设,值得学(下篇)

Java 程序员 后端

在WE大会看见出行未来:告别拥堵,15分钟飞到办公室

脑极体

研发人员除了编码还能干什么?

卢卡多多

研发效能 11月日更

13万字!腾讯高工手写JDK源码笔记 带你飙向实战(1)

Java 程序员 后端

南瓜电影 7 天内全面 Serverless 化实践

阿里巴巴云原生

阿里云 Serverless 云原生 实践 南瓜电影

2-2 SPU和SKU详解及MyBatisPlus自动生成

Java 程序员 后端

2019金九银十前端面经总结

Java 程序员 后端

2020年7月份GitHub上最热门的Java开源项目排行

Java 程序员 后端

在线多空行只保留一个工具

入门小站

工具

150个超实用的网站,整理成资源库页面分享给大家

Java 程序员 后端

18道kafka高频面试题(附答案)

Java 程序员 后端

1万字长文高速你千万级并发架构下如何提高数据库存储性能

Java 程序员 后端

2020年Java面试题汇总手册(持续更新版)

Java 程序员 后端

linux之git高级命令

入门小站

Linux

-So-easy!多图详解CLH锁的原理与实现,轻松把握AQS

Java 程序员 后端

150 道面试题:集合 +JVM+ 设计模式 +spring

Java 程序员 后端

  • 扫码添加小助手
    领取最新资料包
AWS Serverless应用模型添加对Step Functions状态机的支持_服务革新_Steffen Opel_InfoQ精选文章