If you are trying to push a Docker image to AWS ECR (Elastic Container Registry) and you get a no basic auth credentials
error. Then you can easily fix it as follows!
Replicating the no basic auth credentials
error
You ran something like this:
docker tag <image> <account>.dkr.ecr.<region>.amazonaws.com/<app>
docker push <image> <account>.dkr.ecr.<region>.amazonaws.com/<app>
You saw something like this:
Using default tag: latest
The push refers to repository [<account>.dkr.ecr.<region>.amazonaws.com/<app>]
2e6d5f7bxxxx: Preparing
d8db3303xxxx: Preparing
32f366d6xxxx: Preparing
no basic auth credentials
How to fix the problem
no basic auth credentials
error
Run the following AWS CLI to see if you are able to login with the system available config.
$(aws ecr get-login --region <region>)
Remember to swap <region>
out with your region you are using in the docker tag
and docker push
commands. For example: eu-west-1
or us-east-1
.
At this point, you will probably get an error as follows:
An error occurred (UnrecognizedClientException) when calling the GetAuthorizationToken operation: The security token included in the request is invalid.
Run aws configure
and enter your AWS Access Key ID
and AWS Secret Access Key
.
Once done, run the above command again, and you should not get the GetAuthorizationToken
error anymore.
Instead, it will have run a docker login -u AWS <token> <path>
command for you.
If you get the following error: unknown shorthand flag: 'e' in -e
, then run the previous command again, without the $(
and )
. So only run <meta charset="utf-8">aws ecr get-login --region <region>
It will output a set of commands for you to copy in the terminal directly. Make sure to remove the -e none
near the end, and execute the command.
Once this is done, Docker will provide a Login Succeeded
prompt.
You can now run your <meta charset="utf-8">docker push <image> <account>.dkr.ecr.<region>.amazonaws.com/<app>
command once again.
This time everything will have worked!