Jenkins流水线400错误:Docker镜像无法推送至AWS ECR的解决咨询
Jenkins流水线推送AWS ECR失败(400 Bad Request)解决建议
问题描述
Docker镜像已构建完成,但执行以下命令推送至AWS ECR时出错:
aws ecr get-login-password --region ap-south-1docker login --username AWS --password-stdin 010928217164.dkr.ecr.ap-south-1.amazonaws.com/java-application
错误信息:
Error saving credentials: error storing credentials - err: exit status 1, out:
pass not initialized: exit status 1: Error: password store is empty. Try "pass init"
解决建议
改用文件存储Docker凭证
Docker默认依赖pass工具存储凭证,但Jenkins代理环境未初始化该工具。可修改Docker配置切换为文件存储:
编辑Docker配置文件(路径通常为~/.docker/config.json或/etc/docker/config.json),添加或更新如下内容:{ "credsStore": "file" }修改后重启Docker服务(Linux节点执行
sudo systemctl restart docker)。流水线内临时指定凭证存储方式
无需修改全局配置,在docker login前设置临时环境变量,让Docker使用临时目录存储凭证:export DOCKER_CONFIG=$(mktemp -d) aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin 010928217164.dkr.ecr.ap-south-1.amazonaws.com/java-application排查AWS权限(额外验证)
400 Bad Request也可能和权限不足有关,确认Jenkins使用的IAM身份具备以下权限:ecr:GetAuthorizationTokenecr:InitiateLayerUploadecr:UploadLayerPartecr:CompleteLayerUploadecr:PutImage
内容的提问来源于stack exchange,提问作者Vishwanath.U
相关产品推荐
相关产品推荐

