aws ec2-run-instances: base64-codierte Benutzer-Daten-blob wird ignoriert
Meine base64-codierte Benutzer-Daten werden ignoriert, während der Ausführung aws ec2 run-instances
Befehl.
Hier ist meine user-Daten:
$ cat user-data.sh
#!/bin/bash
cat >> /var/tmp/user-data-testing <<EOF
this is test line added at $(date)
EOF
hier ist base64, blob oben genannten Skript:
IyEvYmluL2Jhc2gKY2F0ID4+IC92YXIvdG1wL3VzZXItZGF0YS10ZXN0aW5nIDw8RU9GCnRoaXMgaXMgdGVzdCBsaW5lIGFkZGVkIGF0ICQoZGF0ZSkKRU9GCg==
Nun, Meine nachstehenden Befehl liest die Benutzer-Daten fein:
aws ec2 run-instances --image-id ami-8635a9b6 --instance-type t1.micro --placement AvailabilityZone=us-west-2a --security-groups quicklaunch-1 --key-name devops --user-data file://user-data.sh
Sehe ich, dass die Datei /var/tmp/user-data-testing
erstellt.
Jedoch, wenn ich versuche zu pass -, user-Daten als base64-kodierte blob als unten, dann wird es ignoriert:
aws ec2 run-instances --image-id ami-8635a9b6 --instance-type t1.micro --placement AvailabilityZone=us-west-2a --security-groups quicklaunch-1 --key-name devops --user-data IyEvYmluL2Jhc2gKY2F0ID4+IC92YXIvdG1wL3VzZXItZGF0YS10ZXN0aW5nIDw8RU9GCnRoaXMgaXMgdGVzdCBsaW5lIGFkZGVkIGF0ICQoZGF0ZSkKRU9GCg==
Nun, ich sehe nicht die Datei /var/tmp/user-data-testing
erstellt.
Weiß ich auch, dass mein base64, blob ist gesund, wie ich Sie entschlüsseln kann fein:
$ base64 --decode <<< IyEvYmluL2Jhc2gKY2F0ID4+IC92YXIvdG1wL3VzZXItZGF0YS10ZXN0aW5nIDw8RU9GCnRoaXMgaXMgdGVzdCBsaW5lIGFkZGVkIGF0ICQoZGF0ZSkKRU9GCg==
#!/bin/bash
cat >> /var/tmp/user-data-testing <<EOF
this is test line added at $(date)
EOF
Aber ich sehe diese Instanz Metadaten hat meine Benutzerdaten in base64-format:
$ curl -L http://169.254.169.254/latest/user-data/
IyEvYmluL2Jhc2gKY2F0ID4+IC92YXIvdG1wL3VzZXItZGF0YS10ZXN0aW5nIDw8RU9GCnRoaXMgaXMgdGVzdCBsaW5lIGFkZGVkIGF0ICQoZGF0ZSkKRU9GCg==
So, was mache ich falsch bei der Verwendung von base64-user-Daten-blob?
Mein Beispiel meta-Daten bewusst ist, die es aber so wie es scheint, wird nicht wirklich ausgeführt wird (oder decodiert und ausgeführt), die zum Zeitpunkt der Instanz starten.
UPDATE:
Wenn ich an der selben base64, blob über die AWS-Konsole beim starten der Instanz, Es funktioniert. Also scheint etwas falsch in der Art, ich benutze es zusammen mit AWS-CLI
.
UPDATE:
Ich habe gerade versucht das gleiche base64, blob mit meiner ruby-code als unten und es auch funktioniert:
ec2 = Aws::EC2.new
resp = ec2.run_instances(
min_count: 1,
max_count: 1,
image_id: 'ami-8635a9b6',
instance_type: 't1.micro',
placement: {
availability_zone: 'us-west-2a'
},
security_groups: ['quicklaunch-1'],
key_name: 'devops',
user_data: 'IyEvYmluL2Jhc2gKY2F0ID4+IC92YXIvdG1wL3VzZXItZGF0YS10ZXN0aW5nIDw8RU9GCnRoaXMgaXMgdGVzdCBsaW5lIGFkZGVkIGF0ICQoZGF0ZSkKRU9GCg=='
)
So, dann WTF ist falsch, meine Implementierung von AWS-CLI
?
InformationsquelleAutor slayedbylucifer | 2014-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es scheint, awscli funktioniert die base64-Codierung für Sie, so sollten Sie pass-nicht-codierten text-zu-Benutzer-Daten.
Offenbar die Dokumentation ist nicht sehr klar. Überprüfen Sie diese link.
Diese syntax sollte dann sein:
oder
user-data
muss einbase64
kodierte blob.Diese Antwort sollte als richtigen gekennzeichnet werden. Das Thema wurde berichtet, dass Amazon nur ein paar Wochen, bevor die Frage gestellt wurde, aber die Suche nach Sachen auf Ihre Foren ist ein Schmerz.
InformationsquelleAutor Luis
Hatte das gleiche Problem, sehr frustrierend, auf die Spur das problem, schließlich habe es funktioniert.
nicht base64 Kodieren der Tat Skript in der Datei.
Platzierung scheint zu sein, wichtig war für mich nur, wenn
--user-data-file://Pfad
am Ende
Diesem format gearbeitet, offensichtlich ändern die paar Daten zu dir,
InformationsquelleAutor Mike
Laut der docs http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html, die base64 ist nur für API-Aufrufe und nicht die CLI
InformationsquelleAutor user5708525