如何从AWS ECR仓库拉取标签以develop开头的最新Docker镜像
ECR 筛选拉取develop前缀最新镜像方案
可以实现,你只需要在现有命令基础上增加前缀过滤规则即可。
你当前的命令是直接取仓库内所有镜像的最新推送标签,没有做前缀筛选,调整后筛选develop开头标签的命令如下:
aws ecr describe-images --repository-name reponame --output text --region eu-west-1 --query 'sort_by(imageDetails,& imagePushedAt)[*].imageTags[*]' | tr '\t' '\n' | grep '^develop' | tail -1
改动说明:
- 新增的
grep '^develop'规则会过滤所有非develop前缀的标签,只保留符合要求的结果 - 末尾的
tail -1依然取排序后的最后一个结果,也就是最新推送的符合前缀要求的镜像标签
如果需要直接拉取对应镜像,可以参考完整执行脚本:
# 替换为你自己的AWS账号ID AWS_ACCOUNT_ID="123456789012" REGION="eu-west-1" REPO_NAME="reponame" # 获取最新的develop前缀标签 DEVELOP_LATEST_TAG=$(aws ecr describe-images --repository-name ${REPO_NAME} --output text --region ${REGION} --query 'sort_by(imageDetails,& imagePushedAt)[*].imageTags[*]' | tr '\t' '\n' | grep '^develop' | tail -1) # 校验标签是否存在 if [ -z "${DEVELOP_LATEST_TAG}" ]; then echo "未找到任何以develop开头的镜像标签" exit 1 fi # 登录ECR并拉取镜像 aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com docker pull ${AWS_ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${REPO_NAME}:${DEVELOP_LATEST_TAG}
注意事项:
- 若单个镜像绑定了多个标签,排序规则依然以镜像推送时间为准,不受标签数量影响
- 脚本中已增加空值校验,避免无符合条件标签时拉取报错
内容的提问来源于stack exchange,提问作者ashish bustler
相关产品推荐
相关产品推荐

