繁体   English   中英

aws lambda 实际运行什么命令来执行 Python 的处理程序?

[英]What command is aws lambda actually running to execute the handler for Python?

我在文档中找不到这个

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

编辑

我发现这篇文章展示了如何让控制台 session 打开到 lambda,没有检查它是否仍然有效:Z5E056C500A1C4B6A7110B50D807BADE5-内部-exploring-awsblog/lambda-in/ternals-exploring-com

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

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

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

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

AWS 还推荐此 docker 项目用于使用本地 lambda 环境:

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

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)是处理程序的实际调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM