タイトルは釣りです
概要
以下のradikoの仕様変更(実際はflash廃止による措置)により、radikoの録音ができなくなったため借り上げのレンタルVPS上で対応を試みたところ、OSがubuntu12のためか最新のffmpegが入らないということでAWSに移行することにしました
radikoの録音ができなくなったための対応(2020/12)
やったこと、できたこと、注意書き
- AWSのECSにfargateのタスク定義を登録
- 指定時間に上で登録したfargateのタスク定義を起動してradikoを録音する
- 録音したm4aをS3の指定のバケットにアップロードする
※ 利用にはAWSの使用料金が発生するため、使い終わったら必ず設定を削除しましょう(S3にできたファイルも削除すること)
※ 録音ファイルは個人の利用範囲にとどめましょう
※ 自分はAWSを初めて触った初心者なので質問されても正確な答えはできないと思ってます
参考
-
Fargateでradikoを録音してS3に保存するCloudFormation | intothelambda
- 基本はこのページを参考に古いところを手直しした感じになってます
- uru2/radish: Live streaming radio recoder
-
gosshys/radish_on_aws: Run radsh on AWS
- 今回作成した私のgithubリポジトリ
前提
- ローカルマシンでDockerが使える
- AWSにアカウントがある
- S3にバケットがある
- AWS CLIがある
手順
以下の手順を実施
- 私のリポジトリをcloneする
- AWSのECRにDockerイメージを登録する
- AWSのCloudFormationを使って、ECS上にradikoの録音タスクと録音スケジュールを設定する
私のリポジトリをcloneする
cloneしてローカルにリポジトリを持ってくる
git clone https://github.com/gosshys/radish_on_aws.git
cloneしたリポジトリに移動
cd radish_on_aws
AWSのECRにDockerイメージを登録する
ECRにDockerImageのリポジトリを作成する
名前は、radish_on_aws
にしました。なんでもいいです。
aws ecr create-repository --repository-name radish_on_aws
出力結果
REPOSITORY 2020-12-23T23:42:50+09:00 MUTABLE 999999999999 arn:aws:ecr:ap-northeast-1:999999999999:repository/radish_on_aws radish_on_aws 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/radish_on_aws
IMAGESCANNINGCONFIGURATION False
このコマンド実行後に出てくる999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/radish_on_aws
は、次の手順で使うので覚えておく。忘れたらAWSのECRのコンソールで確認するか、思い出す(ちなみに999999999999の部分はユーザーID)
ECRにログインする
999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/radish_on_aws
の部分は、上の手順でリポジトリを作成したときに出てきたURI(radish_on_aws
を変えた人はそこも変わっているので注意)
aws --region ap-northeast-1 ecr get-login-password | docker login --username AWS --password-stdin 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/radish_on_aws
出力結果
Login Succeeded
Login Succeeded
とでてればOK
Dockerファイルをbuildする
buidしたときのイメージ名を上の手順でも使用したURIにする(999999999999
の部分は変える)
docker build . -t 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/radish_on_aws
DockerImageをECRのリポジトリにpushする
(999999999999
の部分は変える)
docker push 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/radish_on_aws
AWSのCloudFormationを使って、ECS上にradikoの録音タスクと録音スケジュールを設定する
CloudFormationの設定ファイルの編集
gitリポジトリのcf.yamlをviなどで編集
vi cf.yaml
編集ポイント
以下を自身の設定に変更してください
- 9行目:S3BucketName
- 12行目:ImageName
※あとは、176行目のcronの設定と195行目の放送局IDなどを余裕があれば編集する
CloudFormationに登録
aws cloudformation create-stack --stack-name radish-on-aws --template-body file://cf.yaml --capabilities CAPABILITY_NAMED_IAM
network設定、role、ECSクラスタの作成、fargateのタスク定義とスケジュール設定などが実行されます
※稼働確認などはAWSのコンソールから、ECSやCloudWatch、S3などを見て確認します
CloudFormationから削除
稼働確認が終わったら消す(cronが5分間隔でうごくのでほっとくと無駄な料金が発生します)
aws cloudformation delete-stack --stack-name radish-on-aws
※s3上のファイルも残ってしまうと無駄なので削除してください
その他
複数のスケジュールを登録するときは、TaskScheduleOneの部分をコピーして、TaskScheduleTwoなどとし、update-stackコマンドを叩きます
aws cloudformation update-stack --stack-name radish-on-aws --template-body file://cf.yaml --capabilities CAPABILITY_NAMED_IAM
s3からダウンロードしたファイルは、拡張子がmp3になることがあります(自分のmacの場合はそうでした)
拡張子をmp3からm4aに変えるとitunesで聴けます。