AWS CloudWatch Synthetics监控API:依赖加载失败求助
解决CloudWatch Synthetics Canary依赖加载失败的问题
1. 修正Zip包目录结构
CloudWatch Synthetics对Canary的Zip包结构有严格要求,你当前的nodejs/node_modules/myCanaryFolder/myCanaryFile.js嵌套结构不符合规范,正确结构需满足:
- Canary脚本文件(如
myCanaryFile.js)直接放在Zip根目录 - 依赖包全部放在根目录下的
node_modules文件夹内
正确结构示例:
myCanary.zip ├── myCanaryFile.js └── node_modules/ ├── axios/ ├── lodash/ ...(所有依赖包)
2. 打包操作注意事项
- 进入包含脚本和
node_modules的目录,直接选中这两个元素打包,不要将上层目录(如nodejs)包含进去 - 若使用
package.json,需将其也放在Zip根目录(非强制,但能帮助Synthetics确认依赖配置) - 避免将脚本放在自定义子文件夹(如
myCanaryFolder)内,除非脚本中所有路径引用都做了对应调整
3. 确保依赖安装正确
- 安装依赖时使用
npm install,不要加--save-dev,Synthetics运行环境仅需要生产依赖 - 若依赖包含原生模块,需针对Linux x86_64架构安装(Synthetics基于Amazon Linux 2 x86_64实例),执行命令:
npm install --platform=linux --arch=x64 - 检查
node_modules目录,确保所有依赖包完整无缺失
4. 脚本路径引用检查
- 引用第三方依赖时直接使用模块名,如
const axios = require('axios'),不要使用相对路径 - 若引用自定义本地模块,需确保模块文件放在Zip根目录,或脚本中使用正确的相对路径指向模块位置
5. 本地验证Zip包有效性
- 解压打包后的Zip文件,确认结构符合要求
- 在本地用Node.js执行脚本,检查是否能正常加载依赖,排除脚本本身的逻辑问题
内容的提问来源于stack exchange,提问作者Kirti Anand
相关产品推荐
相关产品推荐

