2017-06-07 10 views
2

私はユーザーがビデオをアップロードできるようにするレールアプリを持っています。現在、ローカルでうまく動作しています。ユーザーがビデオをアップロードしたときにS3バケットに追加されるように、AWSに移動したいと考えています。ユーザーがアップロードしたビデオをローカルからアマゾンへ移動するS3レールアプリ

は今のところ、私のビデオuploader.rbは次のようになります。

class VideoUploader < CarrierWave::Uploader::Base 

    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

end 

私はそれをS3にアップロードすることがありますので、ここで変更する必要がありますか?

FOGの宝石についても少し読んだことがあります。私が理解しているところからは、ビデオをローカルにアップロードしたり、クラウドにアップロードするのに役立ちます。ここで使う必要がありますか?申し訳ありませんが、私はこの質問に間違ったやり方をしています。

ありがとうございました。詳細が必要な場合はお知らせください。

答えて

0

fog-aws gemを使用します。あなたのGemfileinitializerを作成し、それをcarrierwave.rbのようなものに名前を付ける

gem 'fog-aws' 

を追加で

。その後、ここであなたの資格情報を配置します:

CarrierWave.configure do |config| 
    config.fog_provider = 'fog/aws'       # required 
    config.fog_credentials = { 
     provider:    'AWS',      # required 
     aws_access_key_id:  ENV['aws_access_key_id'],  # required 
     aws_secret_access_key: ENV['aws_secret_access_key'], # required 
    } 
    config.fog_directory = ENV['bucket']     # required 
end 

使用ENV変数を、あなたのAWSの情報を非表示にします。

storage :filestorage :fogに変更することもできます。

S3とCarrierwaveによるファイルアップロードの詳細については、documentationをご覧ください。

大きなビデオサイズ(想定)のため、アップロードプロセスをバックグラウンドジョブに移して、Webサーバーがタイムアウトしない可能性があります。

+0

ありがとうございました!私はそれを試してみます – Dinukaperera

+0

アップロードをバックグラウンドジョブにする方法を教えてください。 – Dinukaperera

+0

'sidekiq'を使うことができます。コントローラのアクションでは、バックグラウンドジョブにパラメータを渡すことができます。 – jdgray

1

Rubyコードを変更すると、ビデオをアップロードしたり、ビデオのストリーミングを行うことができます。

  • S3にアップロードされたストリーミングビデオ用のAWS CloudFrontをRTMP Distributionに設定します。
  • Signed URL(アクセス制御の検証)を作成し、Railsエンドポイントからの応答をブラウザに返すことで、特定の署名付きURLを使用すると、ブラウザで実行されているWebアプリケーションがファイルを直接S3にアップロードできます。

ファイルをアップロードした後、AWS CloudFront URLを使用して、ビデオをブラウザのビデオプレーヤーにストリーミングできます。

+0

ちょっとアシャン、私はRTMPを見て、それがどうなるかを教えてくれるでしょう。それは多くの読書のように見えます。また、AWS CloudFront URLをストリームに使用すると言うと、それは自分のビデオビューコードでそのURLを使用しているのですか、それとも他のことについて話していますか? – Dinukaperera

+0

S3にファイルをアップロードすると、ファイルがブラウザにダウンロードされている間に、ファイルのコンテンツを再生するための仲介サポートが必要です。そこにCloudFront RTMPの配布が必要です。次のドキュメントを参照してください。http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HowStreamingDistributionsWork.html – Ashan

関連する問題