【发布时间】:2018-12-13 22:41:34
【问题描述】:
在我的项目中,我使用 serverless-aws-alias 和 serverless 将我的代码和所有内容部署到 AWS。我有 lambda 函数,它们是 dev 和 prod 版本的别名。每次进行更改时,我都会先使用无服务器命令提示工具部署dev 版本,并确保一切正常,然后再使用相同的工具部署prod 版本。
这一切正常(或多或少),但是当我尝试在我的serverless.yml 文件中包含一个步进函数定义时,我遇到了一个限制。虽然 lambda 函数在 AWS 中可以有版本和别名,但 step 函数没有这样的功能。到目前为止,我已经对此进行了测试(这是失败的):
stepFunctions:
stateMachines:
MyStepFunction:
name: MyStepFunction-${opt:alias}
.
.
.
虽然这确实创建了一个像MyStepFunction-dev 这样的步进函数,但它的问题是,一旦我创建了prod 版本,它就会删除dev 版本(无服务器假设我正在重命名该步骤功能)。更糟糕的是,如果我创建dev 版本,它会删除prod 版本,这当然是不可接受的。
有谁知道我如何拥有两个步进函数,一个用于dev,一个用于prod,在我的serverless.yml 中使用一个单一定义来实现?
【问题讨论】:
-
这并不能回答您的实际问题,而且我不完全理解您在做什么的上下文,但如果它有用——您可以让一个单步函数运行不同的 Lambda别名。它似乎没有很好的记录,但在docs.aws.amazon.com/step-functions/latest/dg/… 中有描述。您配置
"Resource": "arn:aws:states:::lambda:invoke",然后在Parameters中传递Qualifier。例如,您可以给Qualifier一个来自阶跃函数输入有效负载的值。 HTH
标签: serverless-framework aws-step-functions