node.js - AWS SDK在容器覆盖命令上运行fargate抛出错误
问题描述
我正在使用 lambda 和 fargate AWS 服务开发应用程序。在 NodeJS 中开发基础应用程序并创建 docker 映像并推送到 AWS ECR 以创建 ECS 任务。
在这里,fargate 任务将使用 AWS SDK API runtask 使用 lambda 函数触发。这个 runtask API 有不同的参数被传递来运行 fargate 任务。其中一个参数是容器 Overriders: 命令。使用此命令,我正在尝试调用在任务容器中运行的节点应用程序。
Node 应用程序只能使用命令行调用(例如,node app.js bulk-process [..args..])。因此,当容器启动并执行此给定命令时,应用程序将抛出如下错误。
internal/modules/cjs/loader.js:626
throw err;
^
Error: Cannot find module '/usr/src/app/node app.js bulk-process --filename=filename --clientId=1 --file_row_count=121 --emails="#####@gmail.com" --cluster=cluster --tagValue=tagValue'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:623:15)
at Function.Module._load (internal/modules/cjs/loader.js:527:27)
at Function.Module.runMain (internal/modules/cjs/loader.js:837:10)
at internal/main/run_main_module.js:17:11 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Note:
a. node app.js bulk-process --filename=filename --clientId=1 --emails="####@gmail.com" --cluster=cluster --tagValue=tagValue is the command to invoke node application.
b. Also don't know why path '/usr/src/app' is prepended to the node command by container.
我相信错误是说给定路径中缺少节点模块(包)但是当在 EC2 服务器上单独运行 docker 映像以验证 Dockerfile 执行的命令时,所有应用程序文件和 npm 包都已正确安装,甚至应用程序正在执行在对 docker 图像执行 sh 时正确。
请帮忙,因为我现在被这个问题困扰了很长时间,而且我是 AWS ECS 和 docker 服务的新手。
解决方案
推荐阅读
- angular - 在 Angular @ViewChild 中将数据从子组件传递到父组件 预期 2 个参数
- javascript - 如何在 React Reusable Component 中实现条件渲染?
- javascript - 如何跳过应用到 ag-grid 组件的具体化 css 文件
- python-3.x - 是否可以在 pytorch 的 transform.compose 中添加自己的函数
- wpf - 隐藏复选框,直到鼠标悬停在 WPF 上
- javascript - 为什么我不能在 if 语句中保存 Flask 中的会话变量?
- prolog - 序言中的深度限制α-β
- reactjs - 类型检查动作创建者参数的动态值
- node.js - 如何将正文传递给表达路由器以进行 PUT 请求?
- ansible - 错误:无法使用脚本插件解析 /get_branches.py:库存脚本 (/get_branches.py) 出现执行错误: