首页 > 解决方案 > 如果尚未创建新的 SSM 参数,如何创建 AWS Cloud Formation 条件?

问题描述

任何人都在 Cloudformation 模板中使用了 SSM 参数存储参数“如果之前没有创建它,则创建或不执行任何操作”的条件,例如 Cloudformation 中的条件?

我已经尝试了很多方法,但没有运气。也搜索它,但没有真正的工作。

我在真正的 CF 模板之外尝试过的最简单的方法是这样,但不起作用。AWS Cloudformation 部分没有详细的文档。

Parameters:
  DAXClusterUrl:
      Description: DAX Cluster Url
      Type: 'AWS::SSM::Parameter::Name<String>'
      Default: "/testservice/dev/AWS_CLUSTER_ENDPOINT"

Conditions:
  CreateDAXClusterUrlParameter: !Not [!Equals ["", !Ref DAXClusterUrl]]

Resources:
  DAXClusterUrlParameter:
    Condition: CreateDAXClusterUrlParameter
    Type: 'AWS::SSM::Parameter'
    Properties:
      Name: "/testservice/dev/AWS_CLUSTER_ENDPOINT"
      Type: String
      Value: "TestURL"
      Description: '-'

标签: amazon-web-servicesparametersamazon-cloudformationssm

解决方案


我认为不可能做你在这里尝试的事情。Cloudformation 仅允许非常有限类型的编程和条件语句。

根据您要实现的目标,您可以使用一些解决方法。例如,如果您尝试这样做,因为您需要多次部署堆栈,您可以手动创建 SSM 参数或在不同的 CFN 堆栈中创建并将其作为参数传递。或者,如果您无论如何要在单独的 CFN 堆栈中创建 SSM 参数,则可以将其添加到outputs模板部分,然后使用该Fn::ImportValue方法创建跨堆栈引用。

编辑

在 OP 发表评论后,我进行了更多研究,虽然评论中的链接仅强制参数的值以某种方式出现,但动态引用可能会在此处提供解决方案。


推荐阅读