我正在尝试在aws中制作我的django应用程序,我使用弹性beanstalk来部署它,以便创建ec2实例并连接到rds数据库mysql实例,并使用amazon s3存储中的存储桶来存储我的媒体文件就可以了。
当用户上传视频时,它会在s3中存储为:“https://bucketname.s3.amazonaws.com/media/videos/videoname.mp4”。 在django developpement模式中,我使用视频文件名作为批处理脚本的输入,该脚本将视频作为输出。
我在发展模式中的观点如下:
def get(request):
# get video
var = Video.objects.order_by('id').last()
v = '/home/myproject/media/videos/' + str(var)
# call process
subprocess.call("./step1.sh %s" % (str(v)), shell=True)
return render(request, 'endexecut.html')
在aws(问题)的生产模式中,我试过:
v = 'https://bucketname.s3.amazonaws.com/media/videos/' + str(var)
但批处理过程不接受url作为处理的输入。
如何在我的视图中使用s3存储桶中的视频文件进行处理?提前谢谢。
答案 0 :(得分:1)
你不应该对该字符串进行硬编码。这有几个问题:
" bucketname"不是你的桶的名称。如果可以的话,你应该使用你的桶的名称。
您的媒体文件URl(在settings.py
中)应该指向保存文件的存储区网址(如果配置得当)。所以你可以利用:
video_path = settings.MEDIA_URL + video_name
我假设您正在使用s3boto来处理您的存储(虽然这不是先决条件,但它只会使您的存储处理变得更加智能,如果您从django应用程序推送到s3,则强烈推荐它)