如何在ECR中重新标记图像? [英] How do I re-tag an image in ECR?

查看:14
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆