我是使用无服务器框架的新手,我想创建三个不同的环境dev、Qa、prod。如何在单个 serverless.yml 文件中创建?提供商是 AWS。
您可以传递
stage
CLI 选项,该选项可以插入到 serverless.yml
文件中任何需要的位置。例如,采用以下 CLI 命令:
serverless --stage dev deploy
可以使用
serverless.yml
在 ${opt:stage}
中访问此内容。我通常将其包含在 provider
下:
provider:
stage: ${opt:stage}
然后您可以使用
stage
获取 serverless.yml
中任意位置的 ${self:provider.stage}
选项的值。
部署 lambda 时,会使用
service
名称(由 service
中的 serverless.yml
键定义)、阶段和 lambda 名称的前缀自动构造其 ARN,如下所示:
arn:aws:lambda:us-east-1:010101010101:function:myservice-dev-mylambdaname
因此,您只需为所需的其他两个阶段/环境运行部署 CLI 命令,并且每个环境都会有一组单独的资源。
虽然@223seneca的答案是正确的,但推荐的选项是使用
${sls:stage}
代替。这是 ${opt:stage, self:provider.stage, "dev"}
的简写,如官方文档中所述 https://www.serverless.com/framework/docs/providers/aws/guide/variables/#referencing-serverless-core-variables
这允许您使用 provider
块始终具有特定 stage
的情况,并支持传入 stage
的正常使用。