首页 > 解决方案 > 如何在环境声明中混合环境变量和输出变量

问题描述

所以我有一个 env.yml 文件,它可以让我在每个阶段都有不同的变量:

provider:
  name: aws
  environment: ${file(env.yml):${opt:stage}}
  

我还需要将一些输出变量共享给 Lambda,它们的声明如下:

  Outputs:
    UserPoolId:
      Value:
        Ref: QNABUserPool
      Export:
        Name: ${self:provider.stage}-UserPoolId

    UserPoolClientId:
      Value:
        Ref: QNABUserPoolClient
      Export:
        Name: ${self:provider.stage}-UserPoolClientId

我已经看到我可以通过将其添加到我的提供程序来做到这一点,但这与我的 env.yml

environment:
    COGNITO_USER_POOL_ID: ${cf:${self:service}-${self:provider.stage}.UserPoolId}
    COGNITO_USER_POOL_CLIENT_ID: ${cf:${self:service}-${self:provider.stage}.UserPoolClientId}

我尝试将这些放入 env.yml 但没有奏效:

尝试从 CloudFormation 请求未导出的变量。堆栈名称:“XXXX-alpha” 请求的变量:“UserPoolId”。

我尝试使用custom而不是environment部署它,但 Lambda 函数不再有权访问变量。

那么如何将这两者混合在一起呢?

太感谢了!

标签: serverless-framework

解决方案


推荐阅读