【发布时间】:2022-02-15 23:22:55
【问题描述】:
我有一个打包为 Docker 容器的 lambda 函数。该应用程序非常简单,结构如下:
├── Dockerfile
├── app.js
├── package-lock.json
└── package.json
package.json 是:
{
"name": "docker-lambda-test",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
app.js 是:
module.exports.handler = async (event, context) => {
return "test";
};
Dockerfile 是:
FROM public.ecr.aws/lambda/nodejs:14
COPY app.js package*.json ${LAMBDA_TASK_ROOT}
RUN npm install
CMD [ "app.handler" ]
构建镜像并使用 AWS RIE 执行后,调用失败并出现错误:
docker run -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 \
--entrypoint /aws-lambda/aws-lambda-rie lambda-docker-demo:latest
ced1fcef9cdf2e275d1680b889ac1e08afb63d80d6d04f4280ae2f9f836631c3
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
{"errorType":"TypeError","errorMessage":"Cannot read property 'includes' of undefined","trace":["TypeError: Cannot read property 'includes' of undefined"," at _throwIfInvalidHandler (/var/runtime/UserFunction.js:210:25)"," at Object.module.exports.load (/var/runtime/UserFunction.js:237:3)"," at Object.<anonymous> (/var/runtime/index.js:43:30)"," at Module._compile (internal/modules/cjs/loader.js:1085:14)"," at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)"," at Module.load (internal/modules/cjs/loader.js:950:32)"," at Function.Module._load (internal/modules/cjs/loader.js:790:12)"," at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)"," at internal/main/run_main_module.js:17:47"]}
我怎样才能让这个简单的 Lambda 函数打包为 Docker 映像来工作?
【问题讨论】:
-
您检查过this 文档吗?
-
是的 - 但我面临同样的错误
标签: node.js amazon-web-services docker aws-lambda