Perché vedo un 'non trovare previsto contenuto del nodo' quando l'attuazione di questa condizione all'interno Cloudformation?

0

Domanda

Voglio recuperare diversi resourceRecords, a seconda che la mia condizione è vera, altro che ha cambiato la stringa se il nome è qualcosa di diverso. Qui è il mio esempio:

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

Ho eseguito cfn-lint e sto vedendo un errore per quanto riguarda did not find expected node content poco prima della !Join comando, direttamente dopo il mio !If istruzione. Sto seguendo la formula condizione di ->

!If [condition_name, value_if_true, value_if_false]

Grazie

1

Migliore risposta

1

In YAML, il flusso in stile nodi (cioè […], {…}non possono contenere blocco stile nodi (ovvero tutto ciò che è strutturato con i rientri). Inoltre, si dispone di più strutture che non hanno senso, ad es.

- !Join
- ""

Qui, il primo elemento è contrassegnato con !Join ma vuoto, in modo che non sarà raggiunto. Lo stesso vale per

- !GetAtt
- domainName

Una riscrittura che sembra dare un senso sarebbe

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

Come si può vedere, mi è caduto l'interno {…} perché YAML supporta [a: b] come notazione abbreviata per [{a: b}].

Se si desidera utilizzare il flusso di stile di nodi, è necessario fare tutti i nodi contenuti flusso di stile:

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

Grazie, però, dopo aver seguito il tuo esempio vedo sempre lo stesso problema. Inoltre, si menziona che -GetAtt -domainName non fare nulla, però, è obtaitning il valore del nome di dominio e di utilizzarlo come nome del record di risorsa. È necessario specificare un delimitatore con l'istruzione Join ecco perché "" è subito dopo.
i'i'i'i'i'i'i'i'i'i

@i i i i i i i i i i Hai frainteso il mio punto. Per !GetAttr qualcosa che non deve essere applicata al nodo che contiene il nome del valore. Nel codice, !GetAttr è applicato ad un nodo vuoto che fa parte di una sequenza, e l'elemento successivo nella sequenza è domainName – che non si vede da !GetAttr. Confronto che, a mio suggerimento dove !GetAttr viene applicato all'intera sequenza contenente domainName ecc. btw, i documenti suggeriscono che potrebbe essere necessario fare !GetAttr domainName.regionalValue
flyx

In altre lingue

Questa pagina è in altre lingue

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