【问题标题】:What command is aws lambda actually running to execute the handler for Python?aws lambda 实际运行什么命令来执行 Python 的处理程序?
【发布时间】:2020-05-11 02:40:44
【问题描述】:

我在文档中找不到这个

AWS lambda 如何执行 Python 处理程序?正在执行的实际 python.exe 命令是什么?我想更好地理解这一点。幕后的 Lambda 肯定是在启动一个容器,并以某种方式将上传的包复制到一个卷或其他东西上。但是它实际上是在运行什么命令来执行它呢?

编辑

我发现这篇文章展示了如何让控制台会话对 lambda 开放,但尚未检查它是否仍然有效:https://epsagon.com/blog/lambda-internals-exploring-aws-lambda/

【问题讨论】:

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


    【解决方案1】:

    我没有确切的答案,因为我认为实施细节是秘密的,但要了解它如何工作,或者可能在 AWS 中实施,是以下项目:lambci / docker-lambda

    一个沙盒本地环境,几乎完全相同地复制实时 AWS Lambda 环境——包括安装的软件和库、文件结构和权限、环境变量、上下文对象和行为——甚至用户和正在运行的进程都是一样的。

    由于它是开源的,因此必须通过其源代码才能找到您所追求的确切内容。

    显然,这不是官方的 AWS docker 存储库,但它应该提供一些关于真正的 AWS lambda 环境如何在后端工作的很好的见解。

    这个 docker 项目也是 AWS 推荐的用于使用本地 lambda 环境:

    当你得到它的 python 3.8 运行时:https://lambci.s3.amazonaws.com/fs/python3.8.tgz 你可以在那里找到bootstrap.py 文件。文件中有如下函数(仅显示部分):

    123 def handle_event_request(lambda_runtime_client, request_handler, invoke_id, event_body, content_type,
    124                          client_context_json, cognito_identity_json, invoked_function_arn, epoch_deadline_time_in_ms,
    125                          log_sink):
    126     error_result = None
    127     try:
    128         lambda_context = create_lambda_context(client_context_json, cognito_identity_json, epoch_deadline_time_in_ms,
    129                                                invoke_id, invoked_function_arn)
    130         event = lambda_runtime_client.marshaller.unmarshal_request(event_body, content_type)
    131         response = request_handler(event, lambda_context)
    
    

    最后一行response = request_handler(event, lambda_context) 是您的处理程序的实际调用。

    【讨论】:

    • 这主要是我想知道的,但是 python.exe 是如何执行的?这在 docker 图像中可见吗?查看脚本执行时向 python.exe 传递的标志(如果有)
    • @red888 是的,它完全开源。但必须去挖掘它。很遗憾,我现在不能这样做。
    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多