如何返回超过6米Lambda函数的Python XML文件内容?



我向客户端提供了一个API Gateway的URL,这个API Gateway将触发一个Lambda函数。Lambda函数程序首先从AWS S3读取xml文件内容,然后将该xml内容返回给客户机。

问题是:如果xml文件大小小于6M,这个Lambda函数可以正常工作,它可以正确地将xml文件返回给客户端。

如果xml文件大于6M, Lambda函数将返回一个错误:

2022-06-30T08:59:24.975-04:00 [ERROR] [1656593964975] LAMBDA_RUNTIME Failed to post handler success response. Http response code: 413.
2022-06-30T08:59:24.975-04:00 Traceback (most recent call last):
2022-06-30T08:59:24.975-04:00 File "/var/runtime/bootstrap.py", line 60, in
2022-06-30T08:59:24.975-04:00 main()
2022-06-30T08:59:24.975-04:00 File "/var/runtime/bootstrap.py", line 57, in main
2022-06-30T08:59:24.975-04:00 awslambdaricmain.main([os.environ["LAMBDA_TASK_ROOT"], os.environ["_HANDLER"]])
2022-06-30T08:59:24.975-04:00 File "/var/runtime/awslambdaric/main.py", line 21, in main
2022-06-30T08:59:24.976-04:00 bootstrap.run(app_root, handler, lambda_runtime_api_addr)
2022-06-30T08:59:24.976-04:00 File "/var/runtime/awslambdaric/bootstrap.py", line 405, in run
2022-06-30T08:59:24.976-04:00 handle_event_request(
2022-06-30T08:59:24.976-04:00 File "/var/runtime/awslambdaric/bootstrap.py", line 176, in handle_event_request
2022-06-30T08:59:24.976-04:00 lambda_runtime_client.post_invocation_result(
2022-06-30T08:59:24.976-04:00 File "/var/runtime/awslambdaric/lambda_runtime_client.py", line 83, in post_invocation_result
2022-06-30T08:59:24.976-04:00 runtime_client.post_invocation_result(
2022-06-30T08:59:24.976-04:00 RuntimeError: Failed to post invocation response
2022-06-30T08:59:25.599-04:00 END RequestId: 42359cf6-5313-444d-8253-b81c2a1eea29
2022-06-30T08:59:25.599-04:00 REPORT RequestId: 42359cf6-5313-444d-8253-b81c2a1eea29 Duration: 2143.11 ms Billed Duration: 2144 ms Memory Size: 256 MB Max Memory Used: 108 MB Init Duration: 343.16 ms
2022-06-30T08:59:25.599-04:00 RequestId: 42359cf6-5313-444d-8253-b81c2a1eea29 Error: Runtime exited with error: exit status 1 Runtime.ExitError

有人有解决方案吗?谢谢。

您已经达到了Lambda的硬限制。解决方法是将下载链接发送到S3,以便客户端可以直接从那里下载。

你可以使用预先签名的url来确保这仍然是安全的。

最新更新