Cloud9のワークスペースをEC2に作って爆速開発環境構築
Cloud9のワークスペースをEC2に作って爆速開発環境構築
Cloud9がAmazonに買収されて早数ヶ月。もう少しするとEC2専用のサービスが登場しそうですね。 現状のままでも、Cloud9とEC2を連携して、かなりシームレスな開発ワークフローが構築できますので、参考までにご紹介します。
前提条件
EC2インスタンス
SSHで接続できるインスタンスを用意します。今回はJetwareアプライアンス「Optimized LAMP Stack PHP 5.6」(Amazon Linuxベース)で起動したLAMP環境のインスタンスを使います。Jetwareアプライアンスを使ったインスタンスの作成方法に関しては、以下の記事をご参照ください。
・JETWAREでラクラクLAMP環境構築(AWS&ローカルPC)
cloud9のアカウント
Cloud9のアカウントが必要です。そして、これが肝かつこの話の全てなのですが、Individual以上のプランの購入($19/month)が必要です。 そうです。快適な環境を得るには、相応の対価を払う必要があるということです。。。
ですが、チームで使う場合は、1つのアカウントだけ購入していればOKです。Cloud9にはコラボレート機能があるので、メンバーアカウントを招待することで、他のメンバーも恩恵に預かれます。 そう考えると結構お得だと思います。AWS案件のサーバ運用費として$19/monthを追加計上してもらうよう、ぜひ決裁者に上申してみてください。
ここからはIndividualアカウントにアップグレードした前提で、話を進めます。
EC2インスタンスに公開鍵を追加
Cloud9からSSH接続を許可するため、公開鍵を追加します。 まずは、Cloud9のメニューから「Account Settings」を選択し、設定画面に遷移します。
メニュー「SSH Keys」の中にある公開鍵をコピーして、EC2インスタンス側のユーザの~/.ssh/authorized_keysファイルに追加(なければ新規作成)します。Terminalで接続して、お好みのエディタを利用してください。ここではviを使って編集します。
$ vi ~/.ssh/authorized_keys
viで開いたら、「o」キーを押してAppendモードにしてから「⌘+v」で貼り付けます。貼り付けが完了したら「ZZ(大文字)」で保存終了。
これで、Cloud9から接続する準備ができました。
必要パッケージのインストール
今回利用したAMI「Optimized LAMP Stack PHP 5.6」(Amazon Linuxベース)だと、node.js(0.6.16以降)やglibc-staticなどのパッケージを追加インストールする必要がありましたので、yumでインストールしておきます。
$ sudo yum install epel-release $ sudo yum install nodejs npm --enablerepo=epel
$ sudo yum install glibc-static
これらのパッケージがインストールされていない場合は、このあとの手順で、/usr/bin/nodeが見つからない、cursesが見つからない等のエラーがでて、ワークスペースの作成が失敗しますので、ご注意ください。
ワークスペース作成
Cloud9にログインして、ダッシュボードからワークスペースを作成します。「Creat a new workspace」をクリック。
画面中段のタブから「Remote SSH workspace」を選択し、必要事項を入力します。
- Workpace name: 英数小文字で指定
- Description: 説明文を指定(日本語OK)
- Username: EC2側のユーザ名を指定
- Hostname: EC2インスタンスの接続先ホストまたはIPアドレスを指定
- Initial path: ワークスペースのPATHを指定(任意)
- Port: SSHのポートを22以外に変更している場合は指定
- Node.js binary path: /usr/bin/node(空欄でOK)
「Create Workspace」をクリックしたら、SSHで接続〜ワークスペース作成まで全て自動でやってくれます。エラーが出た場合はログを追って対処してください。待つこと数十秒でリモートワークスペースが出来上がります。
開発環境完成
ものの数分です。あっという間にできました。 EC2上のファイルを直接編集できます。SCPやS3経由でという手間もありませんので、便利に使えると思います。
余談ですが、Project Setting > Run > Preview で 「When Saving Reload Preview:」を「Always」にしておくと、⌘+Enterを押さなくても、保存(⌘+s)と同時にプレビューがリロードされます。便利ですね。
Freeプランのアカウントとのコラボレート
チーム開発で使う場合は、ワークスペースから「Share」で、メンバーを招待すれば、コラボレーションできます(招待アカウントはFreeプランでOKです)。
インストール作業に無駄なコストを費やさず、コーディングに全力を尽くしてください。以上です。
参考にした手順
リモートワークスペースの作成手順は以下の公式ドキュメントを参考にしました。 Setting Up an SSH Workspace