はじめに
最近ビッグバンド演奏をリモート録音、ミックスしたりしているのですが、困ったことが。たぶん自分の使い方が悪いのですが、DAW(Studio One)で録音した音にモニターヘッドホンで鳴らしていた他の楽器の音がのってしまっている...!
最悪録音し直さないとならないけどなんとか録音した音だけ抜き出せないかと調べていたらSpleeterというpythonのライブラリでそんなようなことができるらしいということを知り、(python全然できないけど)とりあえず試してみよう!と思いました。
そして、どうせpythonの開発環境作るなら前から気になっていたAWS Cloud9とかいうブラウザのIDE使ってみたい!無料で!と思い立ってのこの記事です。
調べてみるとAWS Cloud9そのものの利用料はかからないようでしたが、このバックで稼働するEC2インスタンスのお金がかかる、というものでした。
ただAWS Cloud9はリモートSSHサーバーを設定できるようで、この機能を使えばOracle Cloud Infrastructure(OCI)のAlways Freeインスタンスでセットアップ=無料で使えるのではないかと考え、セットアップしてみました。
個人的なメモかつ、セットアップ完了後に書いているのであくまで参考程度にしてください。また設定の仕方、使い方によっては課金される可能性もありますので、自己責任でお願いします。
前提
前提として以下のアカウント登録などのセットアップは完了しており、各コンソールを利用できる必要があります。
- AWSアカウント登録
- Oracle Cloud Infrastructureアカウント登録
OCIインスタンス事前準備
まずはCloud9で利用するインスタンスをセットアップします。
-
インスタンスの作成をクリックします。まず「イメージとシェイプ」は変更する必要があります。「編集」をクリックしてください。
-
「シェイプの変更」をクリックしてください。(ARM版インスタンスもOCIではAlways Freeリソースとして利用できますが、Cloud9側がARM対応していないようです。(参考:AWS Cloud9 SSH環境ホスト要件))
-
イメージはこのままでもいいですが、最新OSにしておきます。(AWS Cloud9はUbuntuでもセットアップできるようですが、使い慣れているRHEL系の最新バージョンにしています。)
-
「秘密キーの保存」から秘密鍵をダウンロードします。他は設定してもしなくてもよいです。画面下の「作成」をクリックし、インスタンスを作成します。
-
作成したインスタンスに[Always Free]と出ていたらAlways Freeインスタンスとして作成できていると思います。この画像の右にインスタンスに割あたっているPublicIPが表示されていると思いますので、これを使用してSSHします。
インスタンスのセットアップ
OSの初期設定と合わせてCloud9前提条件から必要な作業を実施します。
- インスタンスにSSHしてまずはrootユーザーで初期設定を行っておきます。
# インスタンスにログイン(macOSターミナル等SSHクライアントから接続してください)
chmod 400 <ダウンロードした秘密鍵>
ssh -i <ダウンロードした秘密鍵> opc@<OCIインスタンスのPublicIP>
# rootユーザーにスイッチ
sudo su -
# とりあえずアップデート
yum -y update
# 言語設定を日本語に
localectl list-locales #ja_JP.utf8がない
yum install glibc-langpack-ja #インストール
localectl set-locale ja_JP.utf8 #ja_JP.utf8にセット
source /etc/locale.conf #反映
locale # 確認
# timezoneをJSTに
timedatectl set-timezone Asia/Tokyo #セット
date #確認
# 次作業のためにopcユーザーへ
exit
- opcユーザーでcloud9の事前作業を行います。(opcユーザーのhomeディレクトリで実施)
# Pyhon3の確認
python -V #おそらくインストール済み
# Node.jsのインストール
sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
. ~/.bashrc
nvm install node
node --version #確認
# Cloud9起動ディレクトリの権限変更(opcユーザーhomeディレクトリ)
sudo chmod u=rwx,g=rx,o=rx ~
# Cloud9インストール
sudo curl -L https://raw.githubusercontent.com/c9/install/master/install.sh | bash
このターミナル接続はまだ使うのでこのままにしておいてください。
AWS Cloud9環境作成
-
ここで[Create and run in remote server]を選択し、接続先情報として先程作成したOCIインスタンスのユーザー名[User]、PublicIP[Host]を入力します。
-
先程ログインしたままになっているSSHセッション(切断されている場合は再度入り直してください)で公開鍵を登録します。
echo '<クリップボード貼り付け>' >> ~/.ssh/authorized_keys
終わりに
今回これをやってみようと思ったときに一番ハマったのがOCIのインスタンス作成でした。最初はOracle Cloud Deveroper Imageを選択してインスタンス作成したのですが、なぜかSSHログインできずに何度も作り直して再度接続を試して...(もちろんセキュリティリストの設定は0.0.0.0/0:22で開いているデフォルトの状態で、ちゃんとそのサブネットにインスタンスが配置されていたのでその部分では問題なかったです。)
インスタンス名に日本語があると接続できないという情報は見つけましたが入っておらず、インスタンス名変更したり、Image別のものにしたりいろいろしましたが、極力何も手をいれないデフォルトの状態で作成してみた結果、うまくいきました。単にSSH接続確認するのが早すぎたのか?うーん...
とりあえずできたので、AWS Cloud9の使い方とか調べながらpythonでSpleeter使ってみたいと思います!
参考URL
- Qiita記事:AWS Cloud9をSSH接続で使うまでの手順
- AWS公式ドキュメント:SSH 環境ホスト要件
- AWS公式ドキュメント:AWS Cloud9 インストーラを使用する