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-loginAction登录成功后返回的ECR仓库地址前缀
修改后生成的IMAGE_URI会变成类似123456789012.dkr.ecr.us-east-1.amazonaws.com/test:latest的合法格式,可正常完成镜像打标与推送。
内容的提问来源于stack exchange,提问作者Michael Xia
相关产品推荐
相关产品推荐

