python - 使用 AWS lambda 通过下载 URL 将视频上传到 S3

标签 python amazon-web-services amazon-s3 aws-lambda

我想使用 AWS lambda 函数将视频上传到 S3。该视频在我的本地计算机中不可用。我有“下载网址”。我不想将它下载到我的本地计算机并将其上传到 S3。我正在寻找一种使用 lambda 函数直接将此视频文件放入 S3 的解决方案。如果我使用缓冲区或流式传输,我会消耗大量内存。有没有更有效的解决方案?

我真的很感谢你的帮助。

最佳答案

我有同样的问题,并开发了以下不依赖于 /tmp 的快速解决方案磁盘限制。它使用下载流作为类似文件的对象。

特征:

  • 没有外部 python 模块,使用 AWS Lambda Python 3.6 内置 boto3 和 urllib3
  • 内置分 block 阅读,适合下载大文件
  • 通过 urllib3 池管理实现高效的连接和内存使用
  • 使用可配置的 upload_fileobj 内置多部分和线程上传
    import boto3
    import botocore.vendored.requests.packages.urllib3 as urllib3
    
    def lambda_handler(event, context):
    
        url='http://yourdownloadurl/file.tgz' # put your url here
        bucket = 'aws-s3-bucket' #your s3 bucket
        key = 'folder/filename' #your desired s3 path or filename
    
        s3=boto3.client('s3')
        http=urllib3.PoolManager()
        s3.upload_fileobj(http.request('GET', url,preload_content=False), bucket, key)
    
  • 关于python - 使用 AWS lambda 通过下载 URL 将视频上传到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44233777/

    相关文章:

    python - 压缩列表的 python 字典

    python - Python:合并io.BytesIO形式的音频文件

    python - 尝试绘图时 python 中的语法无效

    node.js - 尝试将存储在 aws S3 中的图像显示到 React 应用程序

    json - 无法获取 Amazon S3 文件的内容并使用 python 和 boto3 编辑该文件

    javascript - Cognito 托管用户界面

    amazon-s3 - GSUtil rsync 在 S3 存储桶上给出 400 不可​​重试异常

    python - 尝试使用 pip 安装看门狗时如何修复 ‘“ERROR: Command errored out with exit status 1:”

    amazon-web-services - 当 buildspec 没有错误时,图像未从 codebuild 发送到 ecr

    node.js - 在不下载整个文件的情况下读取和解析 S3 中的 CSV 文件