我正在尝试将我的 Nest.js 应用程序推送到公共存储库中的 AWS ECR。我创建了一个 IAM 用户并向其附加了 AdminstratorAccess 策略,然后生成了一个私钥。当我在cmd中输入以下命令时:
aws ecr-public get-login-password --region us-east-1 | docker login --username
AWS --password-stdin public.ecr.aws/.....
我收到以下错误:
Error saving credentials: error storing credentials - err: exit status 1, out: `error storing credentials - err: exit status 1, out: `The stub received bad data.``
我安装了 AWS CLI。
我尝试删除
.aws
中的配置和凭据文件,并查看了多个QnA论坛,但问题仍然存在。
编辑:我找到了解决方案。所以显然在 Windows 10 中你必须在 C:\Users\hp.docker 中配置 congid.json 文件并删除:
"credStore":"desktop"
。现在我已经成功登录并将图像推送到公共存储库中。
试试这些......
验证 AWS CLI 配置:仔细检查您的 AWS CLI 是否已使用正确的凭证和区域正确配置。您可以使用 aws configure 命令来设置您的凭证和区域。
IAM 权限:确保您创建的 IAM 用户具有访问 ECR 所需的权限。即使您附加了 AdministratorAccess 策略,最好还是仔细检查一下是否存在影响 ECR 访问的显式拒绝策略。
检查 Docker 配置: 确保 Docker 已正确配置并运行。确保您的计算机上已安装并运行 Docker Desktop 或 Docker Engine。
更新 AWS CLI: 确保您使用的是最新版本的 AWS CLI。您可以使用 pip 包管理器更新它:pip install --upgrade awscli。
重试命令:有时,网络问题或临时故障可能会导致 docker 登录命令失败。几分钟后尝试再次运行该命令。调试:您可以通过将 AWS_DEBUG 环境变量设置为 1 来启用 AWS CLI 的调试输出。这可能会提供有关该问题的更多信息。
例如:在 Windows 上设置 AWS_DEBUG=1 或在基于 Unix 的系统上导出 AWS_DEBUG=1。 检查安全软件:如果您使用任何安全软件或防火墙,它们可能会干扰连接。暂时禁用它们或为 Docker 和 AWS CLI 添加例外可以帮助诊断问题。
咨询 AWS 支持: 如果上述步骤均无法解决问题,请考虑联系 AWS 支持以获得进一步帮助。他们可以根据您的帐户配置和环境提供具体指导。