【发布时间】: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块。