【问题标题】:Using Fn::Join with a "Ref"使用带有“Ref”的 Fn::Join
【发布时间】:2019-09-19 18:36:57
【问题描述】:

我遇到了这个问题,我一直在努力寻找一种方法来简化我的工作,以避免使用巨大的 if 语句块。我想到我可以将 s "Ref" 与 "Fn::Join" 一起使用,但显然它不起作用,或者至少不是我在视觉上认为它会起作用的方式。

"Type": "AWS::WAFRegional::Rule",
"Properties":{
"Predicates": [{
"DataId":{
"Ref" : {"Fn::Join" : ["", [{"Ref" : "IpSets"}, "IPSet"]]},

所以我从视觉上看到这个工作是"Ref" : IpSets 是我们在将文件上传到 CloudFormation 时设置的参数。所以它将拉下该文本,并将其与 IpSet 结合以创建类似 DevIPSet 的内容。由于这是一个连接后的字符串,它会是 "Ref" : "DevIPSet" 然后这会拉出我已经放在一边的 IP 集。

这显然行不通,如果有我可以使用的技巧,我正在向社区伸出援手。我已经研究了 Mapping ,但也无法使用 dataID 来实现它。我找到的唯一真正的解决方案是使用Fn::If 并制作一个巨大的块,但这很丑。

【问题讨论】:

  • 我认为您应该发布一个更完整的示例,而不仅仅是一点点。也是您的巨型Fn::If 块外观的示例。
  • 所以这段代码位于 AWS::WAFRegional::Rule 的谓词中,是我编写但没有工作的代码的完整示例。 Fn::If 只是彼此内部的 8 个 if 语句。 "Fn::If" : [ "Prod", {"Ref" : "ProdIPSet", {"Fn::If" : .... Join 的引用是我想删除大量条件语句的方法,但显然它不起作用。
  • 请编辑您的问题以包含您遇到问题的代码。
  • 我认为您误解了我和问题。我已经发布了我编写但无法运行的代码,并且正在向社区寻求解决方案,或者如果不可能的话。
  • 这似乎是XY Problem。请解释您实际想要实现的目标 - 并包含您的完整代码。我想看看你的 giant Fn::If 块。

标签: amazon-cloudformation


【解决方案1】:

我认为你正在尝试做的事情是不可能的。因为存在标签属性重复

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多