我想使用AWS lambda函數將視頻上傳到S3。該視頻在我的本地計算機中不可用。我有'下載網址'。我不想將它下載到我的本地計算機並上傳到S3。我正在尋找一個解決方案,使用lambda函數將這個視頻文件直接放入S3中。如果我使用緩衝區或流媒體,我將消耗大量內存。有沒有更好的解決方案?使用AWS lambda將視頻上傳到S3,下載URL爲
我真的很感謝你的幫助。
我想使用AWS lambda函數將視頻上傳到S3。該視頻在我的本地計算機中不可用。我有'下載網址'。我不想將它下載到我的本地計算機並上傳到S3。我正在尋找一個解決方案,使用lambda函數將這個視頻文件直接放入S3中。如果我使用緩衝區或流媒體,我將消耗大量內存。有沒有更好的解決方案?使用AWS lambda將視頻上傳到S3,下載URL爲
我真的很感謝你的幫助。
你當然可以寫一個AWS lambda函數會:
/tmp
下載完整文件最容易,而不是嘗試以「比特」的形式進行流式傳輸。但請注意,限制爲500MB的磁盤空間可用於存儲數據。如果您的下載量大於500MB,則需要進行一些創意編程才能下載部分文件,然後將其上傳爲多部分上傳文件。
至於如何下載它,請使用您喜歡的任何庫來下載網絡文件。
我有同樣的問題,並開發了以下不依賴於/tmp
磁盤限制的快速解決方案。它使用下載流作爲文件類對象。
特點:
使用可配置的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)
歡迎來到StackOverflow!你能否澄清你從哪裏複製文件? –
嗨,約翰,在我的項目中,我需要上傳視頻在API後面。這些視頻在雲中可用,並且我有下載URL。我需要使用Amazon lambda將其直接發送到S3,而無需在本地下載。 – Dasu
當你說「視頻在雲中可用」時,它們到底在哪裏可用?從S3,Google,Dropbox?或者只是從一些隨機的URL? –