簡體   English   中英

使用 AWS lambda 通過下載 URL 將視頻上傳到 S3

[英]Use AWS lambda to upload video into S3 with download URL

我想使用 AWS lambda 函數將視頻上傳到 S3。 該視頻在我的本地計算機中不可用。 我有“下載網址”。 我不想將它下載到我的本地計算機並上傳到 S3。 我正在尋找一種使用 lambda 函數直接將此視頻文件放入 S3 的解決方案。 如果我使用緩沖區或流媒體,我將消耗大量內存。 有沒有更好的有效解決方案?

我真的很感謝你的幫助。

我有同樣的問題並開發了以下不依賴於/tmp磁盤限制的快速解決方案。 它使用下載流作為類似文件的對象。

特點:

  • 沒有外部 python 模塊,使用 AWS Lambda Python 3.6 內置 boto3 和 urllib3
  • 內置分塊閱讀,適合下載大文件
  • 通過 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)

您當然可以編寫一個 AWS Lambda 函數來:

  • 從 URL 下載文件並將其存儲在/tmp
  • 使用 AWS S3 SDK 上傳到 Amazon S3

下載完整文件而不是嘗試以“位”流式傳輸它是最簡單的。 但是,請注意,可用於存儲數據的磁盤空間限制為 500MB 如果您的下載大於 500MB,您需要進行一些創造性的編程來下載它的一部分,然后將其作為分段上傳進行上傳。

至於如何下載,請使用您喜歡的任何庫來下載 Web 文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM