2016-12-15 9 views
0

Ich versuche, einen bedingten Block mit der Fn :: GetAtt eigene Funktion zu schaffen, sondern es wird mit folgenden Fehlern Fehler -AWS Cloudformation Zustand mit Fn :: GetAtt Fehlern

„Template Validierungsfehler: Template-Formatfehler: Nicht aufgelöste Abhängigkeiten. Im Block "Bedingungen" der Vorlage können keine Ressourcen referenziert werden. "

My condition - 
"SomeCondition":{ 
     "Fn::Equals":[ 
      { 
       "Fn::GetAtt":[ 
        "CustomResource", 
        "ID" 
       ] 
      }, 
      "SOME-UUID" 
     ] 
    } 

Kann jemand einen Workaround dafür vorschlagen? Ich wollte die Bedingung verwenden, um ein Skript in meinem Benutzerdatenabschnitt dynamisch auszuwählen.

+0

Was ist die Antwort von CustomResource aussehen? Es hat 'ID' drin? –

Antwort

1

Die Fehlermeldung „Kann nicht Ressourcen in den Bedingungen Block der Vorlage Referenz“ in der Condition Functions Dokumentation erläutert:

Note

You can only reference other conditions and values from the Parameters and Mappings sections of a template. For example, you can reference a value from an input parameter, but you cannot reference the logical ID of a resource in a condition.

Wie für eine Abhilfe für dynamisch ein Skript in Ihrem Benutzerdatenauswahlabschnitt, Sie könnte Ihre bedingte Logik von Cloudformation in Ihre Benutzerdaten Skript bewegt direkt, beispielsweise ein Bash conditional construct und die Fn::Sub intrinsic function mit:

UserData: 
    "Fn::Base64": 
    !Sub | 
     #!/bin/bash -xe 
     if [[ ${CustomResource.ID} == "SOME-UUID" ]]; then 
     # some commands 
     else 
     # other commands 
     fi 
Verwandte Themen