使用自定义容器映像在本地测试 AWS lambda

pka*_*mol 11 amazon-web-services docker aws-lambda

我正在尝试测试使用自定义容器映像运行/调用的新添加功能lambda,因此我从AWS python:3.8基础映像构建一个非常简单的映像,如下所示:

\n
FROM public.ecr.aws/lambda/python:3.8\n\n\nCOPY myfunction.py ./\n\nCMD ["myfunction.py"]\n\n
Run Code Online (Sandbox Code Playgroud)\n

这是myfunction.py

\n
FROM public.ecr.aws/lambda/python:3.8\n\n\nCOPY myfunction.py ./\n\nCMD ["myfunction.py"]\n\n
Run Code Online (Sandbox Code Playgroud)\n

我的问题如下:构建完成后:

\n
docker build --tag custom .\n
Run Code Online (Sandbox Code Playgroud)\n

考虑到我没有公开任何 Web 端点并假设我正在成功地启动自定义容器,我现在如何调用我的 lambda(尽管就handler=我是否正确配置了处理程序而言,这部分有点令人不安)

\n
\xe2\x96\xb6 docker run -p 9000:8080 -it custom\nINFO[0000] exec \'/var/runtime/bootstrap\' (cwd=/var/task, handler=) \n
Run Code Online (Sandbox Code Playgroud)\n

简单的卷曲当然会失败

\n
\xe2\x96\xb6 curl -XGET http://localhost:9000                                                                                                                                                                       \n404 page not found\n
Run Code Online (Sandbox Code Playgroud)\n

pka*_*mol 7

事实证明我必须调用这个极其不直观的网址

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
Run Code Online (Sandbox Code Playgroud)

但是我仍然收到此错误

WARN[0149] Cannot list external agents                   error="open /opt/extensions: no such file or directory"
START RequestId: f681b2ca-5e35-499d-a262-dd7bc53912f0 Version: $LATEST
Traceback (most recent call last):andler 'py' missing on module 'myfunction'
END RequestId: f681b2ca-5e35-499d-a262-dd7bc53912f0
REPORT RequestId: f681b2ca-5e35-499d-a262-dd7bc53912f0  Init Duration: 1.08 ms  Duration: 248.05 ms     Billed Duration: 300 ms    Memory Size: 3008 MB    Max Memory Used: 3008 MB
Run Code Online (Sandbox Code Playgroud)

编辑:通过更改CMD来解决

CMD ["myfunction.py"]
Run Code Online (Sandbox Code Playgroud)

CMD ["myfunction.lambda_handler"]
Run Code Online (Sandbox Code Playgroud)