2017-07-28 29 views
0

我想让我的django应用程序在aws中的生产中,我使用弹性beanstalk来部署它,因此ec2实例被创建并连接到一个rds数据库的mysql实例,我在亚马逊S3存储中使用一个存储桶来存储我的媒体文件。使用存储在aws s3存储上的文件 - 介质存储作为django视图中的一个进程的输入

当用户上传视频时,它存储在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

你的意思_批处理过程不接受url_? –

+0

批处理以视频文件名称作为输入,在开发模式下视频在文件系统上,所以我给了视频的路径作为输入,但现在在aws上的prod模式我不知道如何处理存储在s3上的视频 –

回答

1

你不应该硬编码该字符串。有几件事是错误的:

  1. “bucketname”不是您的存储桶的名称。你应该使用你的水桶名称,如果这一切工作。

  2. 您的媒体文件URl(settings.py)应指向保存文件的存储区url(如果配置良好)。所以,你可以使用:

    video_path = settings.MEDIA_URL + VIDEO_NAME

我假设你正在使用s3boto来处理你的存储器(这虽然不是一个先决条件,它只会让你的存储处理更聪明并强烈建议,如果你是从django应用推到S3)

相关问题