【问题标题】:Test an AWS lambda locally using custom container image使用自定义容器映像在本地测试 AWS lambda
【发布时间】:2021-05-04 23:28:06
【问题描述】:

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

FROM public.ecr.aws/lambda/python:3.8


COPY myfunction.py ./

CMD ["myfunction.py"]

这里是myfunction.py

import json
import sys

def lambda_handler(event, context):
    print("Hello AWS!")
    print("event = {}".format(event))
    return {
        'statusCode': 200,
    }

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

docker build --tag custom .

我现在如何调用我的 lambda,因为我没有公开任何 Web 端点并假设我正在成功启动我的自定义容器(尽管handler= 部分在我是否有适当配置处理程序)

▶ docker run -p 9000:8080 -it custom
INFO[0000] exec '/var/runtime/bootstrap' (cwd=/var/task, handler=) 

一个简单的卷曲当然会失败

▶ curl -XGET http://localhost:9000                                                                                                                                                                       
404 page not found

【问题讨论】:

    标签: amazon-web-services docker aws-lambda


    【解决方案1】:

    事实证明我必须调用这个非常不直观的 url

    curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
    

    但我仍然收到此错误

    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
    

    编辑:通过更改CMD from 解决

    CMD ["myfunction.py"]
    

    CMD ["myfunction.lambda_handler"]
    

    【讨论】:

    • 是的,这看起来有点古怪,那个日期在 JS sdk 上到处都是,我认为如果他们改变它,我认为在配置中删除它。为什么不只在本地使用无服务器(pip install 提供了将在映像中使用的 deps)?
    • 有关此过程的任何相关说明以及相应的调用
    • 看看这个,很快就会添加一个答案。 serverless.com/blog/container-support-for-lambda
    • 然后您可以使用无服务器离线插件(我认为)github.com/dherault/serverless-offline - 这将为您提供运行所需容器的本地功能注意:我回家后需要检查一下。
    • 刚搞清楚 sls 离线支持容器..,给我一点时间。
    猜你喜欢
    • 2021-09-06
    • 2021-05-24
    • 1970-01-01
    • 2021-08-28
    • 2021-08-01
    • 2017-10-07
    • 2018-11-08
    • 2021-05-27
    • 2020-08-08
    相关资源
    最近更新 更多