2017-12-05 9 views
0

Ich habe ein Windows-Batch-Skript, das lokal ausgeführt wird und auch auf dem EC2 ausgeführt wird, wenn ich es manuell ausführe. Wenn ich jedoch versuche, einen ec2 über die CLI zu starten, füge ich das Script im Parameter user-data ein und es läuft nicht.AWS EC2 Windows-UserData-Skript läuft nicht

Dies ist das Skript:

for /l %%x in (20171101,1,20171102) do (
start "S3Copy" C:\Progra~1\Amazon\AWSCLI\aws s3 cp 
s3://bucket1/%%x s3://bucket2/%%x --recursive 
) 

echo waiting 
:loop 
timeout 1 >nul 
tasklist /v |find "S3Copy" >nul && goto :loop 
echo all of them are finished 

shutdown.exe /s /t 00 

Wenn ich es in Userdata gebe ich umgeben mit:

[Script] [/ script] (spitze Klammern)

Aber so läuft es nicht.

Wie ich gesagt habe, kann ich mich in den gleichen Ec2 anmelden, der gestartet wurde, und ich kann das Skript manuell ausführen und funktioniert wie erwartet.

Ich werde sagen, wenn ich mich manuell anmelde ich einen bestimmten Benutzer, wenn ich von CLI starten, verwendet es eine bestimmte Schlüsseldatei, die einen anderen Benutzer verwenden könnte, aber die .aws-Konfiguration ist für alle Benutzer eingerichtet auf diesem AMI.

Was könnte hier fehlen?

Antwort

0

Verwenden Sie eine IAM-Rolle oder einen IAM-Benutzer? Sicherere eine Rolle zu verwenden, und es wird möglicherweise Ihr Problem lösen: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html

Auch bei diesem einen Blick nehmen - es gibt noch ein paar Nuancen für Windows zu Linux im Gegensatz: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-windows-user-data.html

+0

Vielen Dank für Ihre Hilfe. Ich habe mit Amazon darüber gesprochen und im Wesentlichen müssen sich alle Planeten ausrichten, damit dies in Fenstern funktioniert. Ich nehme einen anderen Weg. Immer noch oben Skript, aber mit einem Loader in der Ami, die das Skript von S3 und führt es. – EricBlair1984