2016-07-05 4 views
0

Ich habe ein Shell-Skript (userdata-Datei) und frage mich, gibt es einen CLI-Befehlsparameter, mit dem der Benutzer den Cloudformations-Stack mit der userdata-Datei starten kann?Weitergabe der Benutzerdaten an den AWS Cloudformations-Stack

+0

was ist der Unterschied zwischen Ihrer so genannten "Userdata-Datei" und der Vorlage selbst? –

+0

Können Sie Ihren Anwendungsfall etwas mehr erklären? – stevepkr84

+0

Userdata Skripte für sagen Cloudinit kann ziemlich lange Shell-Skripte sein. Sie inline in der Vorlage zu bearbeiten, kann ein echter Schmerz sein. Es ist schön, sie in ihrer eigenen Datei zu haben und sie beim Erstellen in die Vorlage zu injizieren. –

Antwort

1

Ihre Benutzerdaten müssen in der CloudFormation-Vorlage vorhanden sein, wenn Sie den Stapel erstellen. Sie können ein Skript schreiben, um Ihre Benutzerdaten aus der Datei einzulesen und vor dem Erstellen des Stapels in den CloudFormation-Stapel einzufügen. Beachten Sie, dass Sie möglicherweise Änderungen an den Benutzerdaten vornehmen müssen (siehe http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-userdata).

+0

Können Sie bitte ein Beispiel geben? Ich möchte nur die Syntax herausfinden. – tset

5

Innerhalb der Vorlage, eine Cloudformation Parameter für die Instanz Benutzerdaten verwenden:

{ 
    "Parameters": { 
    "UserData": { 
     "Type": "String" 
    } 
    }, 
    "Resources": { 
    "Instance": { 
     "Type" : "AWS::EC2::Instance", 
     "Properties" : { 
     "UserData" : { "Ref" : "UserData" }, 
     ... 
     } 
    }, 
    ... 
    } 
} 

Sie mit einer Unix-ähnlichen Befehlszeilenumgebung Unter der Annahme, Ihren Stack wie folgt erstellen:

aws cloudformation create-stack --stack-name myStack \ 
    --template-body file://myStack.json \ 
    --parameters ParameterKey=UserData,ParameterValue=$(base64 -w0 userdata.sh) 
+0

Hallo Ataylor, genau das habe ich gesucht. Was ist der Befehl für Windows? – tset

+0

Sie können den gleichen Befehl in Windows mit Cygwin oder Git Bash verwenden. Wenn Sie cmd.exe benutzen, müssen Sie nach einem Hilfsprogramm suchen, um das Skript zu base64 zu verschlüsseln, denke ich. PowerShell sollte das auch können, aber ich bin mir nicht sicher über die Details. – ataylor

+0

Wie kann ich den --template-body hinzufügen, wenn wir den Stack von der AWS-Konsole statt von einem Befehl erstellen? – FVod