AWS CloudFormation 条件

问题描述

我的 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}

解决方法

因此,由于模板被缩短了,因此很难判断导致此错误的原因。

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