如何使用 Serverless 框架在单个 serverless.yml 文件中创建不同的阶段或环境?

问题描述 投票:0回答:2

我是使用无服务器框架的新手,我想创建三个不同的环境dev、Qa、prod。如何在单个 serverless.yml 文件中创建?提供商是 AWS。

serverless
2个回答
5
投票

您可以传递

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 命令,并且每个环境都会有一组单独的资源。


0
投票

虽然@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
的正常使用。

© www.soinside.com 2019 - 2024. All rights reserved.