So funktioniert die AWS-Befehlszeilenschnittstelle in cygwin
Ich habe die AWS-Befehlszeilenschnittstelle auf meiner Windows 7-Box installiert und sie funktionierte sofort, wenn ich Befehle von einer DOS-Shell aus aufrief.
Aber DOS, die schlechteste Sprache, die jemals erfunden wurde, ist für jedes ernsthafte Skripting abscheulich. Daher möchte ich die AWS-CLI von Bash über Cygwin verwenden.
In meinem Fall ist die installierte AWS CLI die Windows-Version. Grundsätzlich sollte dies kein Problem sein, da Windows-Befehle über cygwin ausführbar sind. cygwin enthält Ihre Windows-Umgebungsvariablen, wie PATH, in seiner eigenen Umgebung.)
Als ich zum ersten Mal versucht habe, einen AWS CLI-Befehl von cygwin / bash auszuführen, ist leider ein Fehler aufgetreten:
$ aws s3 cp code.tgz s3://xyz/
upload failed: .\code.tgz to s3://xyz/code.tgz
Unable to locate credentials
Dieser Fehler liegt wahrscheinlich daran, dass die AWS-CLI im falschen Verzeichnis nach dem @ suchcredentials
Datei. Unter Windows erwartet es, dass sich diese Datei in @ befinde%UserProfile%.aws
und in Unix in~/.aws
.
Ein Hack Workaround ist, dass ich in meinem Home-Verzeichnis eine neue Datei mit dem Namen @ erstellt habconfig_credentials
enthält eine Vereinigung der Inhalte der Dateien dieses Verzeichnissesconfig
undcredentials
. Ich habe dann eine neue Windows-System-Umgebungsvariable mit dem Namen @ erstellAWS_CONFIG_FILE
dessen Wert der Pfad zu @ iconfig_credentials
. Erfolg: Die von cygwin ausgegebenen AWS CLI-Befehle funktionieren jetzt.
Ich frage mich, ob es eine bessere Lösung gibt?
Ich bin gespannt, warum AWS CLI ursprünglich nicht im richtigen Basisverzeichnis nach dem @ gesucht haconfig
undcredentials
Dateien. Ich frage mich auch, ob es einen Weg gibt, dies zu korrigieren (dies würde die Notwendigkeit für das @ beseitigenAWS_CONFIG_FILE
env var).