如何通过URI使用AWS CLI检查AWS ECR镜像是否存在?求脚本方案
用AWS CLI通过URI检查ECR镜像是否存在的脚本方案
ECR镜像URI的格式为<账号ID>.dkr.ecr.<区域>.amazonaws.com/<仓库名>:<镜像标签>,我们可以通过解析URI提取关键信息,再配合AWS CLI的describe-images命令来检查镜像是否存在。
以下是一个bash脚本示例:
#!/bin/bash # 传入要检查的镜像URI IMAGE_URI="$1" # 解析URI的各个部分 # 提取账号ID和区域部分 ACCOUNT_REGION=$(echo "$IMAGE_URI" | cut -d'.' -f1,3) ACCOUNT_ID=$(echo "$ACCOUNT_REGION" | cut -d'.' -f1) REGION=$(echo "$ACCOUNT_REGION" | cut -d'.' -f2) # 提取仓库名和镜像标签 REPO_TAG=$(echo "$IMAGE_URI" | cut -d'/' -f2) REPO_NAME=$(echo "$REPO_TAG" | cut -d':' -f1) IMAGE_TAG=$(echo "$REPO_TAG" | cut -d':' -f2) # 使用AWS CLI检查镜像是否存在 aws ecr describe-images \ --region "$REGION" \ --repository-name "$REPO_NAME" \ --image-ids imageTag="$IMAGE_TAG" \ --query 'imageDetails[0].imageTags' \ --output text > /dev/null 2>&1 # 根据命令返回值判断结果 if [ $? -eq 0 ]; then echo "镜像 $IMAGE_URI 存在于ECR中" else echo "镜像 $IMAGE_URI 不存在于ECR中" fi
使用说明
- 将上述脚本保存为
check_ecr_image.sh,并赋予执行权限:chmod +x check_ecr_image.sh - 运行脚本时传入镜像URI作为参数:
./check_ecr_image.sh xxxxxxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/ai-api:2022-08-25T23-10-58-main
脚本逻辑说明
- 从传入的URI中拆分出AWS账号ID、区域、ECR仓库名和镜像标签
- 调用
aws ecr describe-images命令,使用提取出的参数查询镜像 - 通过命令的退出码判断查询是否成功:退出码为0表示镜像存在,非0则表示不存在(包括仓库不存在、标签不存在等情况)
内容的提问来源于stack exchange,提问作者Jiaqi Zhang
相关产品推荐
相关产品推荐

