amazon-web-services - not - configure aws cli credentials
`El token de autorizaciĆ³n ha caducado ''emite AWS-CLI en MacOS Sierra (13)
En mi caso, el problema fue múltiples credenciales en ~ / .aws / credentails, así que usé --profile
aws ecr get-login --no-include-email --region us-east-2 --profile xxxx
Esto funcionó para mí.
Estoy tratando de enviar una imagen acoplable al repositorio de AWS ECR usando el aws-cli.
- Acabo de ejecutar el comando
get-login
- Ejecutar la salida (que devuelve el
login succeeded
) - luego intento empujar una imagen de docker y luego recibo el mensaje:
denied: Your Authorization Token has expired. Please run ''aws ecr get-login'' to fetch a new one.
No sé qué está mal, estoy presionando hacia el repositorio correcto, el tiempo en mi Mac es correcto. Esto funcionaba antes, pero desde que reinstalé mi mac y actualicé a macOS Sierra, ya no funciona, así que probablemente esté relacionado con eso.
Mi salida de aws --version
:
aws-cli/1.11.34 Python/2.7.10 Darwin/16.3.0 botocore/1.4.91
La salida completa de los comandos que ejecuto:
$ aws ecr get-login --region eu-west-1
docker login -u AWS -p AQECAHh....b6Wk -e none https://1234567890.dkr.ecr.eu-west-1.amazonaws.com
$ docker login -u AWS -p AQECAHh....b6Wk -e none https://1234567890.dkr.ecr.eu-west-1.amazonaws.com
Flag --email has been deprecated, will be removed in 1.13.
Login Succeeded
$ docker push 1234567890.dkr.ecr.eu-west-1.amazonaws.com/service-web:latest
The push refers to a repository [1234567890.dkr.ecr.eu-west-1.amazonaws.com/service-web]
c1f87971dfa9: Preparing
2eb644aea3de: Preparing
9c8843ffe48e: Preparing
39bb58d049d4: Preparing
f053bc969599: Preparing
7169084246b8: Waiting
bb134a1936fd: Waiting
184e76848a1c: Waiting
75c8fcf65748: Waiting
eb9b9ee1ea58: Waiting
f4bf35723edd: Waiting
ddffe1a64b3c: Waiting
fd1a1154db16: Waiting
b542e946067a: Waiting
d49ed2a5e1ed: Waiting
bb39b980367a: Waiting
25b8358d062f: Waiting
997eee521fc7: Waiting
50b5447183a8: Waiting
4339b5cb0e1d: Waiting
3dbd4a53b21b: Waiting
2bec16216500: Waiting
b9fd8e264df6: Waiting
b6ca02dfe5e6: Waiting
denied: Your Authorization Token has expired. Please run ''aws ecr get-login'' to fetch a new one.
Es posible que solo esté ejecutando el comando y no pegando el comando que se hizo eco de ese comando nuevamente en el terminal. Fácil error de cometer. Una vez que corres:
aws ecr get-login --no-include-email --region us-east-1
Se imprimirá otro comando para ejecutar, necesitará copiar ese comando y ejecutarlo en su terminal para autenticarse completamente.
O un atajo genial es simplemente canalizar el comando echo''d nuevamente dentro de la cáscara con:
aws ecr get-login --no-include-email --region us-east-1 | sh
Estaba usando la versión estable de la ventana acoplable para Mac Version 1.12
Acabo de actualizar a la versión beta Version 1.13.0-rc4-beta34.1 (14853)
y ahora todo funciona como estaba previsto.
Entonces, si hay personas con el mismo problema, asegúrese de usar la ventana acoplable para la versión 1.13 o superior de Mac. Si aún no se ha lanzado la versión 1.13, cambie a la versión beta.
Esto sucedió cuando intentaba empujar / extraer de un registro en otra cuenta de AWS. Necesitaba ejecutar get-login
con la --registry-ids
, pasando el ID del registro en el que quería iniciar sesión.
He tenido suerte usando eval. Por ejemplo,
$ aws ecr get-login --region us-east-1 --no-include-email --profile username_env
No funciono
$ eval $(aws ecr get-login --region us-east-1 --no-include-email --profile username_env)
Funcionó
Las últimas versiones de Docker utilizan una nueva función de almacenamiento de credenciales que tiene un error por el cual al docker login
con una URL que especifica un protocolo, se producirán errores de caducidad del token. Este problema se solucionará en Docker 1.13.
Por el momento, la solución es ejecutar sus comandos de inicio de sesión sin especificar el protocolo.
Entonces, en el comando blob devuelto por aws ecr get-login
:
docker login -u AWS -p AQECAHh....b6Wk -e none https://1234567890.dkr.ecr.eu-west-1.amazonaws.com
Debe ser reemplazado con esto:
docker login -u AWS -p AQECAHh....b6Wk -e none 1234567890.dkr.ecr.eu-west-1.amazonaws.com
La omisión de https://
debería hacer que la ventana acoplable funcione por el momento.
Necesita actualizar su token de autorización cada 12 horas, intente:
$(aws ecr get-login --no-include-email --region us-east-1)
- cambia la región de acuerdo a su configuración
Ninguna de las soluciones anteriores funcionó para mi, pero encontré que cuando configuré la región en el comando de inicio de sesión de ECR funcionó.
aws ecr get-login --region us-west-2
Sé que la publicación está relacionada con MacOS Sierra, pero para aquellos que tienen el problema en Windows, realicé lo siguiente:
1) aws ecr get-login, este comando generará una cadena larga
docker login -u AWS -p eyJwYXlsb2FkIjoiUXBnQ2FTV1B6Q1JqZGlH ...... (Se omite toda la línea para una mejor comprensión) -e ninguno https://xxxxxxx.dkr.ecr.us-east-1.amazonaws.com .
2) Copie y pegue la línea anterior (tal vez -e ninguno no funcione, así que elimínela también) . La salida mostrará una advertencia seguida de un éxito: ¡ADVERTENCIA! El uso de --password a través de la CLI es inseguro. Use --password-stdin Inicio de sesión exitoso
Si necesita utilizar una forma segura, use --password-stdin
3) Ahora puede empujar de forma segura la imagen -docker push xxxxxxx.dkr.ecr.us-east-1.amazonaws.com/ecfs-test
0429f33dd264: Pushed
48accfb13167: Pushed
f3bb6dd29c05: Pushed
e58ae65fa4eb: Pushed
3c6037fae296: Pushed
3efd1f7c01f6: Pushed
73b4683e66e8: Pushed
ee60293db08f: Pushed
9dc188d975fd: Pushed
58bcc73dcf40: Pushed
latest: digest: sha256:4354d137733c98a1bc8609d2d2f8e97316373904e size: 2404
Quizás esta solución funcione también en Mac.
Solo tuve el mismo problema en Linux Mint 18.1 (Ubuntu 16.04) con AWS ECR y el último Docker 17.06.1-ce utilizado a través del último cliente Python Docker 2.5.1. El inicio de sesión funcionó, el empuje falló
La eliminación de ~/.docker/config.json
ayudó. Sólo contenía, probablemente obsoleto, token de autorización.
No creo que tenga algo que ver con el sistema operativo subyacente. En mi caso funcionó anteriormente y el único cambio que puedo recordar fue la actualización del docker.io 1.12
de Ubuntu repo al docker-ce 17.06
Docker repo.
También recibí el mismo error, a continuación se muestra la solución que probé y está funcionando: 1. Ejecute el comando: aws ecr get-login --no-include-email --región ap-southeast-1 (cambie la región según tu repositorio) 2. obtendrás una salida como: docker login -u AWS -p xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx == https://youraccountid.dkr.ecr.ap-southeast-1.amazonaws.com
Elimine "https: //" y luego ejecute el comando como inicio de sesión de docker -u AWS -p xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx == youraccountid.dkr.ecr.ap-southeast-1.amazonaws.com
Y funcionará y podrás empujar la imagen.
También recibe el mensaje "Su token de autorización ha caducado" si tiene más de una credencial en ~ / .aws / credentials (ruta según su sistema operativo) y se olvida de agregar la marca --p.
Utilice este comando para obtener inicio de sesión:
aws ecr get-login --region eu-west-1 --p <yourprofilename>
Una advertencia: aws ecr get-login
no parece conectarse a los servidores de AWS y parece funcionar incluso si tiene malas claves secretas / de acceso de AWS o incluso si olvidó ingresar sus claves secretas / de acceso de AWS como variables ambientales.
Aún así, felizmente le dará una contraseña larga sin proporcionar un error. El mensaje que recibe de AWS es un error de caducidad en lugar de una "autorización incorrecta" más correcta y útil.
Nota: Utilizando aws-cli versión 1.11.112.