【问题标题】:AWS CloudFormation conditionsAWS CloudFormation 条件
【发布时间】:2021-07-29 22:23:55
【问题描述】:

我的 CloudFormation 模板中有两个条件,用于根据环境选择要部署的资源。但是,稍后在模板 CloudFormation 中引用资源时,会引发“未解决的资源依赖关系”错误。知道有什么问题吗?

为了便于阅读,模板被缩短了。无条件工作正常。

Parameters:
  EnvironmentName:
    Type: String

Conditions:
  IsProduction: !Equals [!Ref EnvironmentName, production]
  IsNotProduction: !Not [!Equals [!Ref EnvironmentName, production]]

Resources:
  Lambda:
    Type: AWS::Serverless::Function
    Condition: IsNotProduction

  Lambda:
    Type: AWS::Serverless::Function
    Condition: IsProduction

  LogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: !Sub /aws/lambda/${Lambda}

【问题讨论】:

    标签: amazon-cloudformation


    【解决方案1】:

    所以由于模板被缩短了,要知道是什么导致了这个错误并不容易。

    但有一点是有问题的,那就是你的两个 Lambda 都被称为 "Lambda"。这行不通,您需要在资源部分中以不同的方式调用它们。

    【讨论】:

    • 日志组中对 lambda 的引用是模板中唯一一个我认为会导致错误的引用。我还假设我可以拥有 2 个具有相同逻辑 ID 的资源,因为它只会创建其中一个,但我怀疑我不能。不错的收获。
    • 根据我的经验,我发现对于实际上不同的属性使用!If 语句通常更容易,因此您可以使用单个逻辑 ID。它使模板的其他部分保持清洁,例如相同且不依赖于条件的引用。
    • 我的目标是禁用暂存的逐步部署并启用它们进行生产,但 AutoPublishAlias 属性不适用于条件。
    猜你喜欢
    • 2016-12-29
    • 2018-06-22
    • 2018-04-23
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 2021-05-01
    相关资源
    最近更新 更多