J'ai installé l'ap2 ec2 en suivant le guide Amazon. J'ai configuré l'identifiant d'accès et le secret en tant que variable d'environnement.
Ici c'est mon profil:
exportation AWS_ACCESS_KEY = XXXXX
exportation AWS_SECRET_KEY = XXXXXX
export Java_HOME =/usr/lib/jvm/Java-7-openjdk-AMD64/jre
export EC2_HOME =/usr/local/ec2/ec2-api-tools-1.7.1.0
export PATH = $ PATH: $ EC2_HOME/bin
Tout semble configuré comme demandé, mais je ne peux pas me connecter à aws.
Voici la sortie de la commande ec2-describe-regions en mode prolixe:
Client.AuthFailure: AWS was not able to validate the provided access credentials
ubuntu@ip:~$ ec2dre -v
Setting User-Agent to [ec2-api-tools 1.7.1.0]
2014-07-14 19:10:34,898 [main] DEBUG org.Apache.http.wire - >> "POST / HTTP/1.1[\r][\n]"
2014-07-14 19:10:34,912 [main] DEBUG org.Apache.http.wire - >> "Host: ec2.amazonaws.com[\r][\n]"
2014-07-14 19:10:34,912 [main] DEBUG org.Apache.http.wire - >> "X-Amz-Date: 20140714T191033Z[\r][\n]"
2014-07-14 19:10:34,913 [main] DEBUG org.Apache.http.wire - >> "Authorization: AWS4-HMAC-SHA256 Credential=AKIAIT64V5MH2HHF5QZQ/20140714/us-east-1/ec2/aws4_request, SignedHeaders=Host;user-agent;x-amz-date, Signature=06920c7d37a24d8244feb630d87310238886294d3ae2ab40f68a362a799d9a62[\r][\n]"
2014-07-14 19:10:34,913 [main] DEBUG org.Apache.http.wire - >> "User-Agent: ec2-api-tools 1.7.1.0, aws-sdk-Java/unknown-version Linux/3.2.0-36-virtual OpenJDK_64-Bit_Server_VM/24.51-b03[\r][\n]"
2014-07-14 19:10:34,913 [main] DEBUG org.Apache.http.wire - >> "Content-Type: application/x-www-form-urlencoded; charset=utf-8[\r][\n]"
2014-07-14 19:10:34,913 [main] DEBUG org.Apache.http.wire - >> "Content-Length: 41[\r][\n]"
2014-07-14 19:10:34,913 [main] DEBUG org.Apache.http.wire - >> "Connection: Keep-Alive[\r][\n]"
2014-07-14 19:10:34,913 [main] DEBUG org.Apache.http.wire - >> "[\r][\n]"
2014-07-14 19:10:34,914 [main] DEBUG org.Apache.http.wire - >> "Action=DescribeRegions&Version=2014-06-15"
2014-07-14 19:10:34,984 [main] DEBUG org.Apache.http.wire - << "HTTP/1.1 401 Unauthorized[\r][\n]"
2014-07-14 19:10:35,002 [main] DEBUG org.Apache.http.wire - << "Transfer-Encoding: chunked[\r][\n]"
2014-07-14 19:10:35,003 [main] DEBUG org.Apache.http.wire - << "Date: Mon, 14 Jul 2014 19:18:34 GMT[\r][\n]"
2014-07-14 19:10:35,003 [main] DEBUG org.Apache.http.wire - << "Server: AmazonEC2[\r][\n]"
2014-07-14 19:10:35,010 [main] DEBUG org.Apache.http.wire - << "[\r][\n]"
2014-07-14 19:10:35,225 [main] DEBUG org.Apache.http.wire - << "fe[\r][\n]"
2014-07-14 19:10:35,225 [main] DEBUG org.Apache.http.wire - << "<?xml version="1.0" encoding="UTF-8"?>[\n]"
2014-07-14 19:10:35,225 [main] DEBUG org.Apache.http.wire - << "<Response><Errors><Error><Code>AuthFailure</Code><Message>AWS was not able to validate the provided access credentials</Message></Error></Errors><RequestID>cd2b128b-3d70-425b-a8a7-4856fd9a6b99</RequestID></Response>"
2014-07-14 19:10:35,278 [main] DEBUG org.Apache.http.wire - << "[\r][\n]"
2014-07-14 19:10:35,279 [main] DEBUG org.Apache.http.wire - << "0[\r][\n]"
2014-07-14 19:10:35,279 [main] DEBUG org.Apache.http.wire - << "[\r][\n]"
Client.AuthFailure: AWS was not able to validate the provided access credentials
Request ID: cd2b128b-3d70-425b-a8a7-4856fd9a6b99
Vérifiez que le serveur l’horloge est synchronisé .
Si l'horloge est retardée, cette erreur peut survenir:
AWS was not able to validate the provided access credentials
Je me suis heurté à ce problème lorsque mon horloge système a été réglée de manière erronée.
Dans mon cas, l'horloge tournait en avance de deux heures.
Il est également important de placer les commandes dans votre fichier .bashrc ou similaire (.bash_aliases):
export AWS_ACCESS_KEY="XXXXXXXXXXXXXXXXX"
export AWS_SECRET_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Quand il y en a eu source ~/.bashrc
L’importance de cette situation tient au fait que lorsqu’une commande ec2 est exécutée, de nouvelles instances de shell sont créées et ne reçoivent pas les variables d’environnement.
Exécutez aws s3 ls
pour vérifier si l'erreur est liée à la synchronisation temporelle. Vous devriez obtenir l'erreur comme:
Une erreur s'est produite (RequestTimeTooSkewed) lors de l'appel de l'opération ListBuckets: L'écart entre l'heure de la demande et l'heure actuelle est trop important.
Si tel est le cas, essayez de synchroniser votre date et heure comme suggéré.
Exemple de commandes de shell sous Linux pour le faire:
# Install the ntpdate client for setting system time from NTP servers.
Sudo apt-get --yes install ntpdate
Sudo ntpdate 0.Amazon.pool.ntp.org
Réessayez ensuite votre commande aws
.
Si le fuseau horaire n'est toujours pas correct, exécutez: Sudo dpkg-reconfigure tzdata
pour le configurer, ou par:
timedatectl list-timezones
timedatectl set-timezone 'Europe/London'
Voir aussi: Configure localtime. dpkg-reconfigure tzdata .
AWS CLI fonctionnait bien pour moi, mais tout à coup, l'erreur suivante a commencé à échouer
A client error (AuthFailure) occurred when calling the DescribeTags operation: AWS was not able to validate the provided access credentials
Essayé avec un nouvel ensemble de références, mais cela n'a pas aidé.
Cela n'a fonctionné qu'une fois que stop-start a été exécuté sur l'instance EC2 (le redémarrage a peut-être également fonctionné). Par conséquent, il semble y avoir un problème avec l'instance EC2 particulière à partir de laquelle la aws cli a été exécutée.
J'ai eu un problème similaire. L'horloge de mon serveur local était éteinte. Je l'ai corrigé avec la commande suivante.
Sudo date -s "$ (wget -qSO- --max-redirect = 0 google.com 2> & 1 | grep Date: | cut -d '' -f5-8) Z"
Ensuite, les travaux ont fonctionné.