You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Action推送Docker镜像至AWS ECR报错求助

解决Docker镜像推送AWS ECR时的无效引用格式错误

错误原因

你遇到的"/test:latest" is not a valid repository/tag错误,本质是ECR_REGISTRY变量未被正确赋值,导致生成的镜像地址缺少ECR仓库的前缀(比如123456789012.dkr.ecr.us-east-1.amazonaws.com),变成了无效格式。

aws-actions/amazon-ecr-login@v1这个Action不会自动将ECR registry地址注入到环境变量中,直接使用ECR_REGISTRY变量会导致它为空。

修复方案

给登录ECR的步骤添加ID标识,通过该步骤的输出值获取正确的ECR registry地址,替换脚本中的ECR_REGISTRY变量。

修改后的完整GitHub Action配置如下:

build-and-push-image:
    needs: deploy-infrastructure
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v3
      
      - name: Set up AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1

      - name: Login to Amazon ECR
        id: login-ecr  # 添加ID用于后续获取输出值
        uses: aws-actions/amazon-ecr-login@v1

      - name: Build, tag, and push image to Amazon ECR
        run: |
          ECR_REPOSITORY=test
          IMAGE_TAG=latest
          IMAGE_NAME=app
          # 使用步骤输出的合法registry地址
          IMAGE_URI="${{ steps.login-ecr.outputs.registry }}/${ECR_REPOSITORY}:${IMAGE_TAG}"
          docker build -t $IMAGE_NAME .
          docker tag $IMAGE_NAME:$IMAGE_TAG $IMAGE_URI
          docker push $IMAGE_URI

关键修改点

  • 给Login to Amazon ECR步骤添加id: login-ecr标识
  • 在构建脚本中,用${{ steps.login-ecr.outputs.registry }}替代原来的ECR_REGISTRY,这个输出值是amazon-ecr-login Action登录成功后返回的ECR仓库地址前缀

修改后生成的IMAGE_URI会变成类似123456789012.dkr.ecr.us-east-1.amazonaws.com/test:latest的合法格式,可正常完成镜像打标与推送。

内容的提问来源于stack exchange,提问作者Michael Xia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 18:06:18