2016-09-09 4 views
0

Ich habe eine Vorlage, mit der Benutzer einen S3-Bucket definieren können. In der gleichen Vorlage habe ich Optionen, um einen Lambda-Trigger, einen SQS-Trigger und einen SNS-Trigger hinzuzufügen.Anhalten der Ressourcenerstellung in der CloudFormation-Vorlage

Um den S3-Bucket mit optionalen Triggern erfolgreich erstellen zu können, muss ich die Richtlinien für die ausgewählten Trigger erstellen.

Das Problem, mit dem ich konfrontiert bin, ist, dass es manchmal funktioniert und manchmal nicht aufgrund von Race Condition. Wenn der Bucket vor den Richtlinien erstellt wird, schlägt die Stapelerstellung fehl.

Ich habe versucht, bedingte DependsOn-Eigenschaft auf S3 Bucket-Ressource hinzuzufügen, aber DependsOn akzeptiert nur Zeichenfolge. Diese

ist, wie mein DependsOn Attribut aussah:

"S3Bucket": { 
    "Type": "AWS::S3::Bucket", 
    "DependsOn": [{ 
     "Fn::If": ["DoCreateQueueTrigger", 
     "SQSMessagePermission", 
     ""] 
    }], 

} 

Das einzige, was ich denken kann, ist die Vorlage Ausführung pausieren, bevor es zu Bucket Schöpfung erreicht.

Gibt es eine Möglichkeit, dies zu tun?

+0

Ich habe keine Zeit, es zu überprüfen, also nicht 100% sicher, ob das funktioniert, aber Sie könnten versuchen, '{" Ref ":" AWS :: NoValue "}' statt '' '' für die else-Bedingung des "Fn :: If" '? –

+0

Ich habe das auch versucht. es funktioniert nicht. – Asdfg

+1

Hatte noch eine Idee - legen Sie die Richtlinien in einen verschachtelten Stapel und lassen Sie den Bucket vom verschachtelten Stapel abhängig. Der verschachtelte Stapel wird nur als abgeschlossen betrachtet, wenn alle Ressourcen abgeschlossen sind. Die erstellten Richtlinien können als verschachtelte Stapelausgabe ausgegeben werden, wenn Sie sie in anderen Ressourcen referenzieren müssen. –

Antwort

0

Sie können dies erreichen, indem er erklärt, zwei identische Namen, reziproke Bedingte Ressourcen: eine der optionalen Trigger erklärt, der andere ein ‚Null-Ressource‘, die einfach die DependsOn Erklärung akzeptiert, wenn die reale Ressource nicht tatsächlich erstellt:

Verwandte Themen