使用用户名AWS执行docker login时提示无法找到凭证如何解决
报错原因
- 你对ECR的登录逻辑存在误解:
docker login时用户名固定填AWS是ECR的规则要求,不代表可以跳过凭证校验。你执行的aws ecr get-login-password本身属于AWS CLI命令,它需要先完成AWS身份校验,才能调用ECR接口生成临时登录密码,这个步骤要求当前环境必须已经配置有效AWS凭证,因此触发了"无法定位凭证"的报错。
解决方案
针对你使用的Bamboo构建代理场景,可根据实际环境选择对应方案:
- 若Bamboo代理运行在AWS EC2实例上:直接给EC2实例绑定具备ECR推拉权限的IAM角色即可,AWS CLI会自动读取实例元数据中的角色临时凭证,无需手动配置密钥。
- 若Bamboo代理运行在非AWS环境:
- 先在Bamboo项目/构建计划的变量配置页,添加具备ECR权限的IAM用户的
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY,注意设置为加密变量避免密钥泄露。 - 执行登录命令前先导出对应环境变量:
export AWS_ACCESS_KEY_ID=${bamboo.你配置的访问密钥变量名} export AWS_SECRET_ACCESS_KEY=${bamboo.你配置的秘密密钥变量名} export AWS_DEFAULT_REGION=<你的AWS区域>- 修正你原有命令的语法错误(变量赋值时等号两侧不能有空格)后执行即可:
password=$(aws ecr get-login-password --region <myregion>) docker login --username AWS --password $password <myid>.dkr.ecr.<myregion>.amazonaws.com - 先在Bamboo项目/构建计划的变量配置页,添加具备ECR权限的IAM用户的
内容的提问来源于stack exchange,提问作者raydenl
相关产品推荐
相关产品推荐

