amazon-web-services - 如何为 AWS 状态机创建阶段?
问题描述
我创建了一个带有 lambda 函数的简单 AWS 状态机。像下面
{
"Comment":"Validates data",
"StartAt": "ChooseDocumentType",
"States": {
"ChooseDocumentType": {
"Type": "Choice",
"Choices":[
{
"Variable":"$.documentType",
"StringEquals":"RETURN",
"Next":"ValidateReturn"
},
{
"Variable":"$.documentType",
"StringEquals":"ASSESSMENT",
"Next":"ValidateAssessment"
}
],
"Default":"DefaultState"
},
"ValidateReturn":{
"Type":"Task",
"Resource":"arn:aws:lambda:us-west-2:111111111:function:ValidateReturn",
"Next":"DefaultState"
},
"ValidateAssessment":{
"Type":"Task",
"Resource":"arn:aws:lambda:us-west-2:111111111:function:ValidateAssessment",
"Next":"DefaultState"
},
"DefaultState":{
"Type":"Pass",
"End":true
}
}
}
问题
1> 我如何为这个状态机创建阶段。(如生产、开发等)?
2>每个lambda函数都有alias
指向不同的版本。所以development
alias 总是指向$latest
version 并且production
alias 指向,比如说, version 2
。我如何将状态机的阶段与这些 lambda 别名动态关联?所以阶段中的状态机development
应该使用带有别名的lambda函数development
等等。
我正在使用 AWS 控制台来管理状态机和 lambda,但我没有看到任何为状态机创建阶段的操作
解决方案
回复:# 2,如果您主要关心的是控制调用哪个 Lambda 别名,有一种方法可以通过单步函数来实现。
您的阶跃函数状态定义将类似于:
{
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"InvocationType": "RequestResponse",
"FunctionName": "someFunction",
"Qualifier.$": "$.lambdaAlias",
"Payload": {}
},
}
因此,如果您执行 step 函数并指定阶段,如果有这样的事情,您将传递一个lambdaAlias
参数。(这个名字没有什么神奇之处,你可以从你想要的任何步进函数输入参数中提取它。)
对您的 Lambda 的请求有效负载将进入Parameters.Payload
.
https://docs.aws.amazon.com/step-functions/latest/dg/connect-lambda.html
推荐阅读
- sql - 为什么第一个 sql 查询比第二个运行得快很多?
- python - Django - 如何区分要删除的项目?
- r - Shiny 中反应式输入的多重嵌套
- python - 无法使用 LXML 通过标签在 XML 中查找元素
- javascript - 为什么这个使用散列搜索字符串的函数不起作用?
- laravel - 如何使用 Vue Js 自定义全日历?
- machine-learning - Dlib 的 MLP 实现有什么限制吗?
- c# - API Json 反序列化 C# 类
- ios - 在 iOS 13 中设置 UISearchField 的占位符文本颜色
- bootstrap-datetimepicker - Bootstrap 日期选择器 仅以字符格式显示月份和年份