Uno de los deployments que estoy automatizando con aws-cli funcionaba perfectamente cuando utilizaba recursos RDS, por ejemplo:
$ aws rds describe-db-snapshots --db-instance-identifier production { "DBSnapshots": [] }
lo que significa que estaban correctamente configuradas las credenciales y los permisos dentro de IAM.
Pero al ejecutar comandos sobre EC2 obtenía un error, en algo tan sencillo como listar las instancias
$ aws ec2 describe-instances An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials
y es un poco desconcertante, porque algunos comandos/servicios funcionan y otros no.
Una prueba que hice fue dar de alta las variables
export AWS_ACCESS_KEY_ID="AKIAIW......A" export AWS_SECRET_ACCESS_KEY="GOvDvOPvjBW0n.........."
pero el error continúaba.
El problema es que la máquina local necesita tener una hora correctamente configurada:
$ date Sat Sep 15 16:12:01 UTC 2018 $ sudo apt install -y ntp $ date Sat Sep 15 16:23:57 UTC 2018
Esos 9 minutos de retraso que tenía mi máquina local evitaba el uso de EC2.
Hay muchas formas de ajustar la hora, el servicio NTP no es la única solución y puede no ser la mejor. Tal vez un simple
$ sudo date 091516232018
hubiera sido una solución más adecuada; pero la idea es la misma, poner el host local en hora