's3aws: NoCredentialProviders: no valid providers in chain. Deprecated' error when attempting to pushing images to local registry

I’m currently configuring an local Docker registry using registry:2 in Docker Compose, but when I attempting to push an image to the local registry, I’m seeing the following errors on the logs:

registry_1  | time="2022-01-14T05:09:23.354810007Z" level=error msg="response completed with error" err.code=unknown err.detail="s3aws: NoCredentialProviders: no valid providers in chain. Deprecated.
registry_1  |   For verbose messaging see aws.Config.CredentialsChainVerboseErrors" err.message="unknown error" go.version=go1.11.2 http.request.host="localhost:5000" http.request.id=e8a97e1e-f350-44ee-9e76-e9c9b7efa0e1 http.request.method=HEAD http.request.remoteaddr="172.18.0.1:40400" http.request.uri="/v2/docker-library/registry/blobs/sha256:e2ead8259a04d39492c25c9548078200c5ec429f628dcf7b7535137954cc2df0" http.request.useragent="docker/20.10.12 go/go1.16.12 git-commit/459d0df kernel/5.13.0-1010-gcp os/linux arch/amd64 UpstreamClient(Docker-Client/20.10.12 \(linux\))" http.response.contenttype="application/json; charset=utf-8" http.response.duration=30.004240705s http.response.status=500 http.response.written=104 vars.digest="sha256:e2ead8259a04d39492c25c9548078200c5ec429f628dcf7b7535137954cc2df0" vars.name="docker-library/registry" 

I configured the S3 backend configuration correctly, but did I miss something?

The full log and my compose file can be found at Log dump for running an local registry using Storj DCS S3 gateway as storage backend + config ($2235244) · Snippets · Snippets · GitLab, just in case you need to debug it by yourself.

AWS clients use a default chain to find credentials if you don’t explicitly configure them with the S3 client, e.g. looking for environment variables AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and falling back to looking in ~/.aws/credentials.

The error you’ve noted seems to indicate no credentials were provided to the S3 client, and it wasn’t able to find any suitable environment variables or credential files to automatically configure itself from the environment. You may wish to check the environment variables you’ve set are definitely showing up in the container (using docker inspect), and that the client is using them.

2 Likes