如何在ECR中重新标记图像? [英] How do I re-tag an image in ECR?
本文介绍了如何在ECR中重新标记图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试遵循Retagging an Image with the AWS CLI,我开始怀疑本指南已过时。我已将多个Docker映像推送到ECR存储库中-让我们称其为myappserver. 因此,我可以运行这样的命令来查看ECR存储库中所有图像的列表:
aws ecr describe-images --repository-name myappserver
我从该命令获得的输出如下所示:
{
"imageDetails": [
{
"registryId": "123456789012",
"repositoryName": "myappserver",
"imageDigest": "sha256:1234...",
"imageSizeInBytes": 33805114,
"imagePushedAt": 1525881170.0
},
{
"registryId": "123456789012",
"repositoryName": "myappserver",
"imageDigest": "sha256:1234...",
"imageTags": [
"latest"
],
"imageSizeInBytes": 333805137,
"imagePushedAt": 1525892193.0
},
...
]
}
因为不是我所有的图像都有标记,所以我希望通过ImageDigest来标识它们(而不是像指南那样使用ImageTag),这应该没问题。然而,指南提供的命令似乎不再起作用。上面写着:
使用Batch-Get-Image命令获取要重新标记的映像的映像清单,并将其写入环境变量。在本例中,存储库amazonlinux中带有标记Latest的图像的清单被写入环境变量MANIFEST。MANIFEST=$(AWS ECR批处理-获取-图像--存储库-名称amazonlinux--图像-ID图像标签=最新--查询图像[].图像清单--输出文本)
因此,我很自然地尝试运行以下命令:
aws ecr batch-get-image --repository-name myappserver --image-ids imageDigest=sha256:1234... --query images[].imageManifest --output text
但我在终端得到的响应是:
zsh: no matches found: images[].imageManifest
非常有趣的是,如果我省略了最后两个参数(--query images[].imageManifest
和--output text
),那么该命令就会成功并返回一些JSON。因此,我尝试手动将该JSON复制/粘贴到一个环境变量中--特别是复制标记为";ImageManifest的部分。然后,使用该环境变量(为了与指南使用的术语保持一致,我已将其命名为MANIFEST
),我尝试运行以下命令:
aws ecr put-image --repository-name myappserver --image-tag new-tag --image-manifest "$MANIFEST"
但是,这会导致以下错误消息:
An error occurred (InvalidParameterException) when calling the PutImage operation: Invalid parameter at 'ImageManifest' failed to satisfy constraint: 'Invalid JSON syntax'
据我所知,我复制到put-image
命令中的JSON输出是有效的,尽管有那个错误。我也不明白为什么我不能使用提供的参数运行batch-get-image
命令。我如何才能使这些命令起作用,并将标签添加到我的图像中?
推荐答案
您收到一个外壳错误(zsh
),表示通配符表达式images[].imageManifest
与本地磁盘上的任何文件都不匹配。
尝试使用引号:
--query 'images[].imageManifest'
而不是这个:
--query images[].imageManifest
这篇关于如何在ECR中重新标记图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文