【发布时间】:2020-06-21 14:19:18
【问题描述】:
我正在使用 API 网关 + lambda 函数集成和 Python 3.8。我需要从外部 webhook 接收帖子。 webhook 发送一个带有一些数据和 url 的 JSON 对象。我正在尝试使用 requests lib 从 url 获取 pdf 文件并写入 /tmp/ 目录。我已经将请求库从 zip 上传到 lambda 并且工作正常。我正在进一步计划将 pdf 上传到 S3。
问题:从 URL 请求的文件没有被写入 /tmp/ 目录。
- 没有错误消息。
- 不是很重的文件 (
import json
import requests
import os
def lambda_handler(event, context):
prods = event
body = json.loads(prods["body"])
url = body["url"]
print("Body:", body)
r = requests.get(url)
content = r.content
with open('/tmp/test.pdf', 'wb') as fd:
fd.write(content)
print(os.listdir("/tmp/"))
return {
'statusCode': 200,
'body': {
'file_path': '/tmp/test.pdf'
}
}
我已经尝试使用以下策略对文件进行分块:
url = 'http://www.example.com'
r = requests.get(url, stream=True)
with open('/tmp/test.pdf', 'wb') as fd:
for chunk in r.iter_content(chunk_size):
fd.write(chunk)
编辑:似乎是一个“超时”问题。在 CloudWatch 上看到了这个: 任务在 3.00 秒后超时
【问题讨论】:
标签: python python-3.x aws-lambda python-requests aws-api-gateway