amazon-web-services - Docker ImagePush 因“没有基本身份验证凭据”而失败
问题描述
我正在尝试使用 docker go-sdk 将图像推送到 AWS ECR。
这是我用来推送图像的代码。
其中标签 =“.dkr.ecr.us-east-1.amazonaws.com/api:mytag”
func Push(c context.Context, tag string, credentials string) error {
cli, err := client.NewClient(apiSocket, apiVersion, nil, apiHeaders)
if err != nil {
return err
}
fmt.Println(credentials)
resp, err := cli.ImagePush(c, tag, types.ImagePushOptions{
RegistryAuth: credentials,
})
if err != nil {
panic(err)
}
io.Copy(os.Stdout, resp)
resp.Close()
return nil
}
但我不断收到这样的回复:
{"status":"The push refers to repository [<id>.dkr.ecr.us-east-1.amazonaws.com/api]"}
{"status":"Preparing","progressDetail":{},"id":"23432919a50a"}
{"status":"Preparing","progressDetail":{},"id":"9387ad10e44c"}
{"status":"Preparing","progressDetail":{},"id":"e2a4679276bf"}
{"status":"Preparing","progressDetail":{},"id":"31c5c8035e63"}
{"status":"Preparing","progressDetail":{},"id":"a73789d39a06"}
{"status":"Preparing","progressDetail":{},"id":"f36942254806"}
{"status":"Preparing","progressDetail":{},"id":"4a2596f9aa79"}
{"status":"Preparing","progressDetail":{},"id":"5cf3066ccdbc"}
{"status":"Preparing","progressDetail":{},"id":"76a1661c28fc"}
{"status":"Preparing","progressDetail":{},"id":"beefb6beb20f"}
{"status":"Preparing","progressDetail":{},"id":"df64d3292fd6"}
{"status":"Waiting","progressDetail":{},"id":"beefb6beb20f"}
{"status":"Waiting","progressDetail":{},"id":"df64d3292fd6"}
{"errorDetail":{"message":"no basic auth credentials"},"error":"no basic auth credentials"}
有任何想法吗?
笔记:
- 我已验证我传入的凭据字符串是 base64 编码的 user:pass 用于 ECR 注册表。
- 我已验证我获得的 ECR 凭证与我尝试推送图像的 AWS 区域相同。
解决方案
我在 GitHub 评论中发现RegistryAuth
实际上需要是带有用户名和密码字段的 base64 JSON 字符串。啊。这在 Docker 存储库中没有记录。
RegistryAuth = "{ \"username\": \"myusername\", \"password\": \"mypassword\", \"email\": \"myemail\" }
它现在对我有用。
推荐阅读
- .net - 带有 Angular 应用程序的 .NET Core 无法在 Visual Studio 2019 中打开
- bash - 获取包含任何 .py 文件的目录的名称
- google-sheets - 为什么连字符会搞砸我的重复查找条件格式?
- c# - 是否可以从依赖项中打开winform表单?
- google-apps-script - Google Apps 脚本发送附件
- javascript - 恢复失败的赛普拉斯测试
- javascript - 创建使用 nodejs 或 express [前端和后端] 过期的下载链接的代码
- flutter - Intellisense 不适用于 android studio 中的颤振插件项目
- textures - Mfcc 特征提取
- r - 如何根据 R 中另一个数据框中的值过滤数据框