【问题标题】:AWS ECR image listAWS ECR 映像列表
【发布时间】:2017-04-14 10:35:17
【问题描述】:

我有一个 ECR 存储库设置,它现在包含两个带有顺序标签 1 和 2 的图像。我计划从这次自动推送 docker 图像,我的要求是下次我推送图像时,它的标签应该是3,所以我必须以某种方式确定下一个数字应该是 3,因为最新版本是 2。我不想在本地保留这个版本。所以我需要来自 ECR 本身的这些信息。有什么想法吗?以下命令将列出存储库中的所有图像

aws ecr list-images 

【问题讨论】:

    标签: amazon-web-services docker amazon-ec2


    【解决方案1】:

    感谢@Matt 指出 jq。安装 jq 后,以下命令将给出最新版本

    aws ecr list-images --repository-name REPOSITORY_NAME | jq '.imageIds | map (.imageTag)|sort|.[]' | sort -r | head -1
    

    【讨论】:

      【解决方案2】:

      ECR ListImages API 端点将列出存储库中的所有图像 shasum 和任何相关标签。您也可以将filter 降至TAGGED

      有一个Java SDK (但我不处理Java,所以不会有太大帮助)。

      Node.js Javascript 非常简单,对返回的对象/数组/对象进行了一些lodash 链处理。

      const _ = require('lodash')
      const Promise = require('bluebird')
      const AWS = require('aws-sdk')
      
      let config = {
        region: 'us-west-1',
        repo = 'myrepo'
      }
      
      const ecr = new AWS.ECR({region: config.region})
      Promise.promisifyAll(ecr)
      
      ecr.listImagesAsync({ repositoryName: config.repo, filter: { tagStatus: 'TAGGED'} })
      .then( data => {
        let img = _(data.imageIds).sortBy('imageTag').last()
        console.log(img.imageTag)
      })
      

      您可以使用

      在当前目录中安装脚本的依赖项
      npm init -y && npm install aws-sdk lodash bluebird --save
      

      如果您想在 shell 中处理 aws ecr list-images 输出,请尝试 jq

      【讨论】:

        猜你喜欢
        • 2020-06-10
        • 2020-07-03
        • 2022-06-23
        • 2017-12-04
        • 2019-07-18
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        相关资源
        最近更新 更多