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

AWS CodeBuild产物缺失文件问题排查求助

AWS CodeBuild构建后Artifact缺失指定asset文件问题排查与解决

问题描述

在单体仓库(MonoRepo)中使用AWS CodeBuild构建CDK应用至dist目录,构建阶段执行ls ./path/to/dist命令时,能确认asset.1ebc9d3ac2033816c4abb63e4afd69d350b4aba8704cc9236b82ea520b74f4b0文件存在,但最终生成的Artifact中该文件缺失。

Buildspec配置

{
  "version": "0.2",
  "phases": {
    "install": {
      "runtime-versions": {
        "nodejs": "latest"
      },
      "commands": [
        "n lts",
        "npm i -g npm@latest",
        "npm ci"
      ]
    },
    "build": {
      "commands": [
        "npm run build-front-end",
        "ls ./path/to/dist"
      ]
    }
  },
  "artifacts": {
    "files": [
      "path/to/dist/**/*"
    ]
  },
  "cache": {
    "paths": [
      "/root/.npm/**/*"
    ]
  }
}

构建阶段ls输出

DataStore.assets.json
DataStore.template.json
FrontEnd.assets.json
FrontEnd.template.json
Pipeline.assets.json
Pipeline.template.json
asset.1ebc9d3ac2033816c4abb63e4afd69d350b4aba8704cc9236b82ea520b74f4b0
asset.3fb6287214999ddeafa7cd0e3e58bc5144c8678bb720f3b5e45e8fd32f333eb3.zip
asset.5bc602ecde93c947efe5899ae355f999986a1acbe610b1c0b9c468d738857555
asset.6f15086578588c0f5f1cd712f8bb5688927f8e58e010630bfb53ec48a992dcc0
asset.7b1448c18435e2a9fd6dd739b24710af12127e39ce6a360d0e54584c57aec679
asset.9eb41a5505d37607ac419321497a4f8c21cf0ee1f9b4a6b29aa04301aea5c7fd
asset.b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6
asset.faa3f939bd2f560adff4a880c2543a9c501ca978205ba00428f1a6ec00bad206
cdk.out
manifest.json
tree.json

最终Artifact内容

DataStore.assets.json
DataStore.template.json
FrontEnd.assets.json
FrontEnd.template.json
Pipeline.assets.json
Pipeline.template.json
asset.3fb6287214999ddeafa7cd0e3e58bc5144c8678bb720f3b5e45e8fd32f333eb3.zip
asset.5bc602ecde93c947efe5899ae355f999986a1acbe610b1c0b9c468d738857555
asset.6f15086578588c0f5f1cd712f8bb5688927f8e58e010630bfb53ec48a992dcc0
asset.7b1448c18435e2a9fd6dd739b24710af12127e39ce6a360d0e54584c57aec679
asset.9eb41a5505d37607ac419321497a4f8c21cf0ee1f9b4a6b29aa04301aea5c7fd
asset.b7f33614a69548d6bafe224d751a7ef238cde19097415e553fe8b63a4c8fd8a6
asset.faa3f939bd2f560adff4a880c2543a9c501ca978205ba00428f1a6ec00bad206
cdk.out
manifest.json
tree.json

排查方向与解决方案

1. 检查文件是否为符号链接

缺失的asset文件无后缀,大概率是符号链接。AWS CodeBuild默认不会打包符号链接,需配置跟随符号链接:

  • 先在build阶段添加命令验证文件类型:
    ls -l ./path/to/dist/asset.1ebc9d3ac2033816c4abb63e4afd69d350b4aba8704cc9236b82ea520b74f4b0
    
    若输出开头为l,说明是符号链接。
  • 修改buildspec的artifacts配置:
    "artifacts": {
      "files": [
        "path/to/dist/**/*"
      ],
      "symlinks": "follow"
    }
    

2. 确认文件在打包前未被修改

ls执行后到Artifact打包前,可能有进程删除或移动了该文件。在build阶段末尾添加检查命令:

sleep 5
ls -l ./path/to/dist/asset.1ebc9d3ac2033816c4abb63e4afd69d350b4aba8704cc9236b82ea520b74f4b0

同时查看CodeBuild日志中build阶段结束到artifacts打包阶段的内容,排查是否有异常操作。

3. 显式指定缺失文件

尝试在artifacts的files列表中显式添加该文件,验证通配符是否匹配问题:

"artifacts": {
  "files": [
    "path/to/dist/**/*",
    "path/to/dist/asset.1ebc9d3ac2033816c4abb63e4afd69d350b4aba8704cc9236b82ea520b74f4b0"
  ]
}

4. 禁用缓存重试

缓存可能导致文件状态异常,临时禁用缓存重新构建:

"cache": {
  "paths": []
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:54:54