【问题标题】:AWS lambda URL request and write binary to /tmp/AWS lambda URL 请求并将二进制文件写入 /tmp/
【发布时间】: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


    【解决方案1】:

    编辑:似乎是一个“超时”问题。在 CloudWatch 上看到:任务在 3.00 秒后超时

    根据FAQ

    问:AWS Lambda 函数可以执行多长时间?

    AWS Lambda 函数可以配置为每次执行最多运行 15 分钟。您可以将超时设置为 1 秒到 15 分钟之间的任何值。

    所以访问你的Lambda的配置页面,并增加时间限制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多