如何使用Go SDK获取Google Artifact Registry中Docker镜像的清单
获取Google Artifact Registry中Docker镜像的清单文件
核心关联逻辑
*artifactregistrypb.DockerImage 对象的 name 字段是关联清单文件的关键标识,你可以基于它构建过滤条件,通过 ListFiles 方法匹配到对应镜像的清单文件。
具体实现代码
在你的 do 函数中添加以下逻辑:
import ( // 需额外引入iterator包 "google.golang.org/api/iterator" "fmt" "log" ) // ... 原有代码 ... // 构建ListFiles请求,绑定目标镜像并筛选清单文件 req := &artifactregistrypb.ListFilesRequest{ Parent: repoPath, Filter: fmt.Sprintf("docker_image=\"%s\" AND name:*.manifest", dockerImg.GetName()), } // 遍历获取清单文件 it := client.ListFiles(ctx, req) for { file, err := it.Next() if err == iterator.Done { break } if err != nil { log.Fatal(err) } // 获取清单文件的下载URL manifestDownloadUrl := file.GetDownloadUrl() // 若需要读取清单内容,可直接通过该URL发起HTTP GET请求 // resp, err := http.Get(manifestDownloadUrl) // 后续处理响应内容... fmt.Printf("镜像清单下载地址:%s\n", manifestDownloadUrl) }
关键说明
- 过滤规则中,
docker_image=\"%s\"用于精准绑定到目标Docker镜像,name:*.manifest用于筛选出清单类型的文件 - 文件对象的
GetDownloadUrl()方法可以直接获取到类似AWS ECRGetDownloadUrlForLayer提供的下载地址,通过该URL即可获取完整的清单数据
内容的提问来源于stack exchange,提问作者Avishay28
相关产品推荐
相关产品推荐

