¿Por qué estoy viendo un 'no se espera encontrar el nodo de contenido para la aplicación de esta condición dentro de Cloudformation?

0

Pregunta

Quiero recuperar diferentes resourceRecords, dependiendo de si la condición es verdadera, de lo contrario el cambio de la cadena si el nombre es algo más. Aquí está mi ejemplo:

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

He corrido cfn-pelusa y estoy viendo un error con respecto a did not find expected node content justo antes de la !Join comando, directamente después de mi !If declaración. Estoy siguiendo la fórmula de la condición de ->

!If [condition_name, value_if_true, value_if_false]

Gracias

1

Mejor respuesta

1

En YAML, flujo de estilo nodos (es decir, […], {…}) no puede contener bloque de estilo nodos (es decir, todo lo que está estructurado con sangría). También, usted tiene varias estructuras que no tienen sentido, por ejemplo,

- !Join
- ""

Aquí, el primer elemento con la etiqueta de !Join pero vacías, así que nada va a ser unidas. Lo mismo va para

- !GetAtt
- domainName

Una reescritura que parece tener sentido sería

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

Como se puede ver, se me cayó el interior {…} porque YAML apoya [a: b] como notación abreviada para [{a: b}].

Si desea utilizar el flujo de estilo nodos, usted necesita para hacer que todos los nodos contenidos de flujo de estilo:

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

Gracias, sin embargo después de seguir su ejemplo, yo sigo viendo el mismo problema. También, se menciona que -GetAtt -domainName no va a hacer nada, sin embargo, es obtaitning el valor del nombre de dominio y uso como el nombre del registro de recursos. Se puede especificar un delimitador con la instrucción Join así que por eso "" es justo después de ella.
i'i'i'i'i'i'i'i'i'i

@i i i i i i i i i i Que mal entendido mi punto. Para !GetAttr para hacer algo que debe ser aplicada al nodo que contiene el nombre de valor. En el código, !GetAttr se aplica a un vacío de nodo que forma parte de una secuencia, y el siguiente elemento de la secuencia es domainName – que no es visto por !GetAttr. Comparar que a mi sugerencia de donde !GetAttr se aplica a toda la secuencia que contiene domainName etc. por cierto, los documentos sugieren que usted necesita hacer !GetAttr domainName.regionalValue
flyx

En otros idiomas

Esta página está en otros idiomas

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