2016-07-29 11 views
1

Ich versuche, Objekte aus Gletschern wiederherzustellen aws-cli wie folgt verwendet:AWS S3 - aws-cli s3api nicht akzeptiert Parameter in einem Bash-Variable

aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-file.ext 

Dieses schönen funktioniert. Allerdings mag ich dies in einer Reihe von Dateien per Skript tun, aber wenn versuchen, so etwas wie:

$ export I="some-file.ext" 
$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key $I 

aws-cli gibt diesen Fehler zurück:

An error occurred (404) when calling the RestoreObject operation: Not Found

Egal welche $I enthält, wenn ich manualy nehmen geben sie den Wert und aws-cli es funktioniert:

$ echo $I 
some-other-file.ext 
$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-other-file.ext 

Wenn ich den Betrieb über den gleichen Schlüssel wiederholen gibt es eine Bestätigung:

$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-other-file.ext 

An error occurred (RestoreAlreadyInProgress) when calling the RestoreObject operation: Object restore is already in progress

Meine Version von aws-cli ist wie folgt:

$ aws --version 
aws-cli/1.10.50 Python/2.7.6 Linux/3.13.0-92-generic botocore/1.4.40 

Wie kann ich -key Parameter mit bash Variable übergeben? Andere Vorschläge? Xargs versagt auch wenn auch mit einem anderen Fehler:

$ {echo list of files one per line} | xargs -L 1 aws s3api restore-object --restore-request Days=7 --bucket mybucket --key 

An error occurred (404) when calling the RestoreObject operation: Not Found xargs: aws: exited with status 255; aborting

oder auch ohne -L 1 xargs die Liste der Dateien, die von , getrennt drucken und:

xargs: aws: exited with status 255; aborting

Auch this answer versuchen nicht als 404 wie oben.

Gibt es eine Idee, wie kann ich Dateipfade in einer "Skript-Mode" zu aws-CLI übergeben?

Antwort

1

Nun, nach ein paar Kaffee kam ich zurück und fand heraus, dass beim Erzeugen der Liste der Dateien, grep Befehl färbte die Ausgabe, so dass einige Farbcodes vor und nach dem Spiel eingefügt wurden.

Ich sah diese Farbcodes nicht wegen meiner Terminalkonfiguration. Bei der Überprüfung der Datei mit Hexdump (oder einem anderen Editor) war klar, dass die Farbcodes mit den Pfaden verwechselt wurden.

Lösung: grep --color=no in meiner Liste Generation Skript.

Mein schlechtes!