我没有确切的答案,因为我认为实施细节是秘密的,但要了解它如何工作,或者可能在 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) 是您的处理程序的实际调用。