EatSmartシステム部ブログ

ウェブサイトの開発や運営に関する情報です。

さくらインターネットのオブジェクトストレージを利用した動画配信

イートスマートが運営する料理教室情報サイト「クスパ」では、昨年からレッスン動画のサービスを開始しました。

cookingschool.jp パン・お菓子・料理の動画レッスン|料理教室検索サイト「クスパ」

サービスの成長に伴い、当初用意したストレージの残量がわずかになり、対策を取る必要に迫られました。 イートスマートではさくらインターネットのサービスを利用しているので、容量の追加が容易で安価なオブジェクトストレージを利用することにしました。

cloud.sakura.ad.jp

オブジェクトストレージを利用するための準備

まず、videoというバケットを作成し、アクセスキーIDとシークレットアクセスキーを準備します。

次に、aws-cliを動かすための準備を行います。 今回は、videoへアップロードするためのプロファイルを作成して利用することにしました。

aws configure --profile user-video

動画ファイルの保存方法の変更

いままでは、動画配信に利用しているサーバのローカルディスクに保存していました。 これを、オブジェクトストレージへアップロードするように変更します。

既存の動画ファイルを変換する処理の最後に、オブジェクトストレージへアップロードする処理を追加しました。 aws-cliを利用し、エンドポイントにオブジェクトストレージのものを指定します。 アップロードする対象のディレクトリを${DIR}変数で指定し、ffmpegを利用して変換した成果物の ts ファイルと m3u8 ファイルを s3 sync コマンドを利用してアップロードします。

aws --endpoint-url=https://s3.isk01.sakurastorage.jp s3 sync /var/video/${DIR} s3://video/${DIR} --include "*.ts" --include "*.m3u8"  --profile user-video

動画ファイルの配信方法の変更

配信にはnginxを利用しています。 オブジェクトストレージから動画を配信するには以下の記事を参考にしました。

さくらのオブジェクトストレージを独自のドメイン経由且つプライベートなオブジェクトを取得する方法 - Qiita

既存のnginxへluaを組み込むのではなく、新たに用意したnginxをオブジェクトストレージとの間でプロキシとして構築することにしました。 既存のnginxの設定を変更し、参照先をローカルディスクではなくプロキシへ変更します。

#root   /var/video;
proxy_pass http://${HOST_IP_ADDRESS}:8080;

以上で、オブジェクトストレージを利用した動画配信を実現することが出来ました。 AWS S3と互換があり、APIから操作することができるため容易に利用することが出来ました。