Comment faire pour obtenir l'AWS interface de ligne de commande pour travailler dans cygwin

J'ai installé l'interface de ligne de commande AWS sur mon Windows 7 boite, et cela a fonctionné immédiatement quand j'ai appelé des commandes à partir d'un shell DOS.

Mais le DOS, le pire de la langue jamais inventé, est hideuse pour tout sérieux de script. Donc, je voudrais utiliser AWS CLI de bash via cygwin.

Dans mon cas, l'installation de AWS CLI est la version Windows. En principe, cela ne devrait pas être un problème parce que les commandes de Windows sont exécutables à partir de cygwin. (cygwin comprend vos variables d'environnement de Windows, comme CHEMIN, dans son propre environnement.)

Malheureusement, lorsque j'ai d'abord essayé d'exécuter une AWS commande CLI à partir de cygwin/bash, j'ai une erreur:

$ aws s3 cp code.tgz s3://xyz/
upload failed: .\code.tgz to s3://xyz/code.tgz
Unable to locate credentials

Cette erreur est probablement à cause de la AWS CLI est à la recherche dans le mauvais répertoire pour le credentials fichier. Sur Windows, il s'attend à ce que le fichier soit dans %UserProfile%.aws et unix dans ~/.aws.

Un hack de travail est que dans mon répertoire home, j'ai créé un nouveau fichier nommé config_credentials qui contient une union du contenu de ce répertoire les fichiers config et credentials. J'ai ensuite fait un nouveau Système de Windows env var nommé AWS_CONFIG_FILE dont la valeur est le chemin d'accès à config_credentials. Succès: AWS commandes CLI émis à partir de cygwin maintenant travailler.

Je me demande si il y a une meilleure solution?

Je suis curieux de savoir pourquoi AWS CLI d'abord omis de recherche dans le bon répertoire pour l' config et credentials fichiers. Je me demande aussi si il existe un moyen de corriger cela (ce qui permettrait d'éliminer la nécessité pour les AWS_CONFIG_FILE env var).

Seriez-vous intéressé par PowerShell comme une alternative? AWS a fait un natif du PS de la CLI: aws.amazon.com/powershell
Seulement comme un dernier recours. Mon entreprise veut limiter le nombre de langues que nous utilisons (continuité de la maintenance est un sujet de préoccupation), et bash est utilisé à plusieurs endroits (en particulier sur les serveurs) alors que PowerShell n'a jamais été utilisé. Il y aurait à être vraiment convaincante de cas d'utilisation pour justifier une nouvelle langue.
Ah oui, ms-DOS, que le bien-connu de la langue.

OriginalL'auteur HaroldFinch | 2015-06-12