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 ?

Für meine persönlichen Daten, wie hast du die Verschlüsselung Ihrer bash-Datei? Als eine ganze Datei oder nur den text?

InformationsquelleAutor slayedbylucifer | 2014-03-12

Schreibe einen Kommentar