Das*_*asu 1 amazon-s3 amazon-web-services node.js aws-lambda
我想使用AWS lambda函数将视频上传到S3。该视频在我的本地计算机上不可用。我有“下载URL”。我不想将其下载到本地计算机上并上传到S3中。我正在寻找一种使用lambda函数将视频文件直接放入S3的解决方案。如果使用缓冲区或流式传输,则会消耗大量内存。有更好的解决方案吗?
非常感谢您的帮助。
我有同样的问题,并开发了以下不依赖于/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)
Run Code Online (Sandbox Code Playgroud)您当然可以编写一个 AWS Lambda 函数来:
/tmp最简单的方法是下载完整的文件,而不是尝试以“位”形式对其进行流式传输。但请注意,可用于存储数据的磁盘空间限制为 500MB 。如果您的下载大小超过 500MB,您需要进行一些创造性的编程来下载其中的一部分,然后将其作为分段上传进行上传。
至于如何下载它,请使用您喜欢的任何库来下载网络文件。
| 归档时间: |
|
| 查看次数: |
2767 次 |
| 最近记录: |