はじめに
streampackのメンバーになって2ヶ月目のrisakoです。
今回の記事は、理解に苦しんだ仕組みの一つである「S3へのアーカイブ」をテーマにしました!
これから、S3で動画配信をしてみたいと思っている方のヒントになれば幸いです。
S3とは?
S3 はSimple Storage Service
の略称のことをいう。
クラウド型オブジェクトストレージサービスで、東京リージョン・スタンダードストレージの場合、1GBあたり0.025ドルで利用できる。
公式には99.999999999%の耐久性で、安さと高可用性を兼ね備えている。
イメージ
今回は、点線で囲まれている部分について説明します。
出典:https://cloudpack.media/43892
nginx.confの編集
flvファイルを作成できるようにnginx.conf内に追記する。
下記の設定をすることで、flvファイルを作成できるようになる。
application live { live on; record all; record_path /var/video_recordings_flv; record_unique on; }
今回の設定ではrecord all
オーディオ、ビデオ共に全てをレコードするrecord_path
flvファイルの場所を指定する。今回は、/var/video_recordings_flv
にflvファイルが保存されるように指定。record_unique on
常に新しい状態のファイルに更新される設定。デフォルトではoffになっている。
確認
OBSで配信した動画ファイルが指定した場所に作成できているか確認する。
#ls -l /var/video_recordings_flv/ total 6144 -rw-r--r-- 1 nobody nobody 6289402 Jul 17 19:09 test-1563416738.flv
作成できているので、このファイルをS3にアップロードする。
S3へのアップロード
AWS CLI でアップロードを行う。
事前準備として、#aws configure
でアクセスキー・シークレットキー・リージョン名・出力形式を入力する。この作業をしていないと、Unable to locate credentials. You can configure credentials by running "aws configure".
このようなエラーで怒られてしまうので注意。
確認
OBSで配信し、指定の場所に作成できているflvファイルをaws s3コマンドでアップロードしてみる。
作成されているflvファイルがtest-1563416738.flv
なので、まずは、これをアップロードしてみる。
#aws s3 cp test-1563416738.flv s3://<S3バケット名>/
【S3上でアップロードがされているか確認する】
incrontabを使ってアップロードする
作業 | コマンド |
---|---|
インストール | yum –enablerepo=epel install incron |
起動 | /etc/init.d/incrond start |
停止 | /etc/init.d/incrond stop |
スクリプト作成
スクリプトに書き込むための権限変更を行います。
#chmod 755 aws_test.sh #ls -l total 4 -rwxr-xr-x 1 root root 0 Jul 18 14:54 aws_test.sh
作成したスクリプト内を変更。
#!/bin/bash aws s3 sync /var/video_recordings_flv s3://<S3バケット名>/
反映させます。
#aws_test.sh
incrontab設定
#incrontab -e /var/video_recordings_flv IN_MOVED_TO,IN_CREATE,IN_CLOSE_WRITE,IN_NO_LOOP /root/bin/aws_test.sh #incrontab -d #incrontab -l /var/video_recordings_flv IN_CREATE,IN_CLOSE_WRITE,IN_MOVED_TO,IN_NO_LOOP /root/bin/aws_test.sh
OBSで配信・確認
#tail -f /var/log/cron Jul 18 17:17:23 ip-10-15-0-165 incrond[4135]: (root) CMD (/root/bin/aws_test.sh) #ls /var/video_recordings_flv/ test-1563358109.flv test-1563419519.flv test-1563433417.flv test-1563437843.flv
S3上での確認
/var/video_recording_flv/
の配下に作成されているflvファイル名と、S3上にアップロードされているファイル名が一致していることから、正しくアップロードできていることが確認できます。
最後に
S3へのアーカイブは手順さえ理解してしまえば、簡単にアーカイブできるということがわかりました。
これからS3を駆使してstreampackのメンバーとして頑張っていきます!
参考
「HLSライブストリーミングサーバーs3配信」
https://cloudpack.media/43892
「AWS CLIでS3を操作するコマンド一覧」
https://qiita.com/uhooi/items/48ef6ef2b34162988295