Por que estou recebendo um 'não encontrar o esperado nó de conteúdo" ao implementar essa condição dentro de Cloudformation?

0

Pergunta

Quero recuperar diferentes resourceRecords, dependendo se a minha condição é true, de outra forma alterar a seqüência de caracteres se o nome é algo mais. Aqui é o meu exemplo:

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
              - "." 
        ]

Eu tenho que correr cfn-fiapos e eu estou vendo um erro sobre did not find expected node content pouco antes de o !Join comando, diretamente depois da minha !If instrução. Eu estou seguindo a condição de fórmula ->

!If [condition_name, value_if_true, value_if_false]

Obrigado

1

Melhor resposta

1

Em YAML, fluxo de estilo nós (i.e. […], {…}) não pode conter bloco de estilo nós (i.e. tudo o que é estruturado de acordo com recuo). Além disso, você tem várias estruturas que não fazem sentido, por exemplo,

- !Join
- ""

Aqui, o primeiro item é marcado com !Join mas nada, nada vai ser unidas. O mesmo vale para

- !GetAtt
- domainName

Reescrever o que parece fazer sentido, seria

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

Como você pode ver, eu larguei o interior {…} porque YAML suporta [a: b] como a notação abreviada para [{a: b}].

Se você deseja usar o fluxo de estilo nós, você precisa fazer todos os nós contidos fluxo de estilo:

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

Obrigado, no entanto, depois de seguir o seu exemplo que eu ainda estou tendo o mesmo problema. Além disso, você menciona que -GetAtt -domainName não vai fazer nada, no entanto, é obtaitning o valor do domainName e utilizando-a como o nome do registro de recurso. Você precisa especificar um delimitador com a instrução de Associação, de modo que é por isso que "" é imediatamente após ele.
i'i'i'i'i'i'i'i'i'i

@i i i i i i i i i i Você entendeu mal o meu ponto de vista. Para !GetAttr fazer algo que não deve ser aplicada para o nó que contém o nome do valor. No seu código, !GetAttr é aplicada a um nó vazio que é parte de uma seqüência, e o item seguinte da sequência é domainName – que não é visto pelo !GetAttr. Compare isso a minha sugestão de onde !GetAttr é aplicada a toda a seqüência contendo domainName etc. btw, o docs sugiro que você precise fazer !GetAttr domainName.regionalValue
flyx

Em outros idiomas

Esta página está em outros idiomas

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