【问题标题】:How can I reference a stack output value in serverless?如何在无服务器中引用堆栈输出值?
【发布时间】:2020-11-30 17:19:37
【问题描述】:

我正在使用 serverless deploy 为我的应用程序创建一个 cloudformation 堆栈。该堆栈包括一个 lambda layer,我可以在 cloudformation Ouptputs 选项卡中找到它。它有一行,键为CommonLambdaLayerQualifiedArn,值为其ARN,descriptionExport name 为空。

在另一个堆栈中,我使用以下语法来引用前一个堆栈中的 lambda 层。它工作正常,但我不明白为什么它在不导出前一个堆栈中的 lambda 层的情况下工作。 Cloudformation 支持通过导出值完成的跨堆栈引用。但是在上面的堆栈中,lambda 层的Export name 是空的。如果没有跨堆栈引用,它如何工作?导入引用的方式不同吗?

...
layers:
      - ${cf:${opt:lambdaLayerStackName}.CommonLambdaLayerQualifiedArn}
...

【问题讨论】:

  • 两个堆栈都重复使用存储桶吗?也许serverless-layers 正在根据堆栈名称和它的cloudformation 模板解决依赖关系
  • 不,他们使用不同的 s3 存储桶。

标签: amazon-web-services amazon-cloudformation serverless-framework


【解决方案1】:

您使用的语法不是从另一个堆栈导入变量。根据doc,简直就是

引用 CloudFormation 堆栈输出值作为要在服务中使用的变量源

这与使用 AWS CLI 从 cloudformation 检索输出值相同。

【讨论】:

  • referenceserverless 的功能还是 cloudformation 的一部分?
  • 我确实尝试过,但我发现referenceimporting 之间有些不同。当我使用import 时,它在堆栈之间存在依赖关系,这意味着它阻止我删除其他堆栈依赖它的堆栈。使用reference,即使有其他依赖项,我也可以删除堆栈。所以我想知道它们真的一样吗?
猜你喜欢
  • 2020-03-03
  • 1970-01-01
  • 2017-07-11
  • 2020-10-31
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
相关资源
最近更新 更多