【问题标题】:CloudFormation Optional Map Property - DeadLetterQueueCloudFormation 可选映射属性 - DeadLetterQueue
【发布时间】:2021-05-07 15:41:53
【问题描述】:

只有在 Env=ppd 或 Env=prod 时,我才需要在“AWS::Serverless::Function”中创建 DeadLetterQueue 属性

Conditions:
  IsPpdOrPrdEnv: !Or [!Equals [!Ref "Env", ppd], !Equals [!Ref "Env", prod]]
<...>
Resources:
  <...>
  TestFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      FunctionName: !Sub '${Env}-Test-Function'
      DeadLetterQueue: 
        TargetArn: !If [IsPpdOrPrdEnv, !Ref TestSNSTopic, !Ref "AWS::NoValue"]
        Type: !If [IsPpdOrPrdEnv, SNS, !Ref "AWS::NoValue"]
  <...>

错误:

转换 AWS::Serverless-2016-10-31 失败,原因是:内部转换失败。

我也试过了:

     DeadLetterQueue: 
        !If
          - IsPpdOrPrdEnv
          - 
            TargetArn: !Ref TestSNSTopic
            Type: SNS
          - !Ref "AWS::NoValue"

错误:

转换 AWS::Serverless-2016-10-31 失败,原因是:无服务器应用程序规范文档无效。发现的错误数: 1. id 为 [TestFunction] 的资源无效。 'DeadLetterQueue' 需要指定 Type 和 TargetArn 属性。

有什么建议吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    这似乎是 SAM 的错误/限制。 github 中有一些未解决的问题(herehere)描述了您遇到的问题。

    由于这两个问题都是开放的,它们没有解决。提供的唯一解决方法是:

    我们最终需要添加一个(手动或脚本化的)预部署步骤,如果不需要 [DeadLetterQueue],它只会删除整个 [DeadLetterQueue] 配置部分。

    【讨论】:

    • @whtvrnickname 没问题。如果答案有帮助,我们将不胜感激。
    猜你喜欢
    • 2022-10-13
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多