2017-07-28 9 views
0

awsで私のdjangoアプリケーションを作成しようとしていますが、エキスパートbeanstalkを使ってデプロイしてec2インスタンスを作成し、 rdsデータベースのmysqlインスタンスと私はそれを私のメディアファイルを格納するためにamazon s3ストレージ内のバケットを使用します。aws s3ストレージに保存されたファイルを使用 - djangoビューのプロセスの入力としてのメディアストレージ

ユーザーが動画をアップロードすると、s3に「https://bucketname.s3.amazonaws.com/media/videos/videoname.mp4」という名前で保存されます。 django developpementモードでは、私は出力としてビデオを与えるバッチスクリプトへの入力としてビデオファイル名を使用していました。

者協会モードでの私の見解は以下の通りです:AWSでの生産モードで

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') 

(問題)、私が試した:

v = 'https://bucketname.s3.amazonaws.com/media/videos/' + str(var) 

が、バッチプロセスは、URLを受け入れません処理のための入力。

説明したように私のビューで処理するには、s3バケットのビデオファイルをどうすれば使用できますか?前もって感謝します。

+0

バッチプロセスはurl_を受け入れませんか? –

+0

バッチプロセスは入力としてビデオファイル名を取得し、devモードではビデオはファイルシステム上にあったので、ビデオのパスを入力として取得しましたが、awsのプロードモードではどのように処理できますかs3に保存されたビデオ –

答えて

1

この文字列をハードコードしないでください。いくつかの問題があります:

  1. "bucketname"はバケットの名前ではありません。これがすべて機能する場合は、バケツの名前を使用する必要があります。

  2. あなたのメディアファイルURl(settings.py)は、ファイルが保存されているバケットURLを指している必要があります(うまく構成されている場合)。だから、を利用することができます:

    video_path = settings.MEDIA_URL + VIDEO_NAME

私は(それはしかし前提条件ではないですが、それだけで賢く取り扱いストレージを行い、あなたのストレージを処理するためにs3botoを使用していると仮定していますdjangoアプリケーションからs3にプッシュしている場合は強くお勧めします)

関連する問題