为什么我看到'没有找到预期的节点内容'在实施该条件的内Cloudformation?

0

的问题

我要检索不同的resourceRecords,取决于是否我的病情是真的,别改变串如果名字是别的东西。 这里是我的实例:

myDNSresource:
    Type: AWS::Route53::RecordSet
    Condition: devEnv
    Properties:
      HostedZoneName: {"Fn::ImportValue": !Sub "${stackName}-${AWS::Region}-dnsZone"}
      Name: !Join [".", [!Ref hostname, {"Fn::ImportValue": !Sub "${stackname}-${AWS::Region}-dnsZone"}]]
      Type: CNAME
      TTL: 130
      ResourceRecords:
        - !If [conditionIsTrue, !Join [".", [{"Fn::ImportValue": !Sub "${accountStackName}-${AWS::Region}-dnsZone"}]],
            - !Join
            - ""
            - - !GetAtt
              - domainName
              - regionalValue
              - "." 
        ]

我已经运行cfn-皮棉我看到一个有关的错误 did not find expected node content 只是之前 !Join 命令的直接后我的 !If 发言。 我下面的条件式的->

!If [condition_name, value_if_true, value_if_false]

感谢

1

最好的答案

1

在其、流动式的节点(即 […], {…})不能包含块式的节点(即一切都结构与indentation)。 还有,你有多个机构没有意义,例如

- !Join
- ""

在这里,第一项是标记 !Join 但是空的,所以没有什么会加入。 同去

- !GetAtt
- domainName

改写它似乎有意义的将是

- !If
  - conditionIsTrue
  - !Join [".", ["Fn::ImportValue": !Sub "${accountStackName}-${AWS::Region}-dnsZone"]]
  - !Join
    - ""
    - !GetAtt
      - domainName
      - regionalValue
      - "." 

正如你可以看到,我放弃了内 {…} 因为其支持 [a: b] 作为速记符号 [{a: b}].

如果你想使用流动式的节点,你需要让包含的所有节点上的流动风格:

- !If [
    conditionIsTrue, 
    !Join [
      ".",
      ["Fn::ImportValue": !Sub "${accountStackName}-${AWS::Region}-dnsZone"]
    ],
    !Join ["", !GetAtt [domainName, regionalValue, "."]]
  ]
2021-11-22 18:44:14

谢谢你,但是之后你的例子中,我仍然看到了同样的问题。 还有,你说-GetAtt-domainName什么都不会做但是这是obtaitning值的域名,并使用它的名称的资源的记录。 需要指定一个符的加入声明所以这就是为什么""直接后。
i'i'i'i'i'i'i'i'i'i

@i'i'i'i'i'i'i'i'i'i你误解我的观点。 对于 !GetAttr 做一些它必须适用于本节,包含价值的名称。 在你的代码, !GetAttr 被应用于空节点的一部分的顺序,并对下一个项目的顺序 domainName –这是看不到的 !GetAttr. 与此相比,我建议在那里 !GetAttr 适用于整个含有顺序的 domainName 等等。 顺便说一句, 该文件 建议可能需要做的 !GetAttr domainName.regionalValue
flyx

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................