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

AWS CodeBuild报错:CLIENT_ERROR 未找到匹配的工件路径

问题排查:AWS CodeBuild "no matching artifact paths found" 错误

核心问题分析

从构建日志可见,POST_BUILD阶段显示"成功",但实际上因为buildspec的YAML缩进语法错误,POST_BUILD中生成imagedefinitions.json的命令并未实际执行,导致CodeBuild在上传工件时找不到目标文件。

具体错误点修复

1. 修复YAML缩进错误

你的buildspec里,build和post_build节点被错误嵌套在pre_build节点下(缩进与pre_build内的commands对齐),但它们应该是phases下的同级节点,和pre_build处于同一层级。这种缩进错误会导致build和post_build阶段的命令完全不被执行。

2. 修复printf命令的引号转义问题

原命令中的"是HTML转义字符,bash无法识别,需替换为普通双引号,同时用单引号包裹printf的模板字符串避免转义冲突。

修正后的完整buildspec

version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
      - REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...          
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG    
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      - printf '[{"name":"%s","imageUri":"%s"}]' "$IMAGE_REPO_NAME" "$REPOSITORY_URI:$IMAGE_TAG" > imagedefinitions.json
artifacts:
  files: imagedefinitions.json

验证逻辑

修正后:

  • build和post_build阶段会被正确触发执行,POST_BUILD中的printf命令会在CodeBuild默认工作目录(源码根目录)生成imagedefinitions.json
  • UPLOAD_ARTIFACTS阶段可正常找到目标文件,不会再抛出路径匹配错误

内容的提问来源于stack exchange,提问作者Kunal Koli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:04:55