Cloud9の開発環境にLightsailを使ってみた #reinvent
はじめに
中山(順)です
先週のre:Inventで発表されたCloud9ですが、皆さんもう使ってみましたか?
先の速報記事では、開発環境としてEC2を使った場合の環境作成手順をご紹介しました。
【速報】AWS Cloud9がリリースされました! #reinvent
この時、私は思いました。
「EC2やVPCを意識するの、ちょっとめんどうだなー」と(笑)
(EC2インスタンスの作成自体は自動でやってくれますが、配置先のVPC、Subnetについては新たに構成するか既存のリソースを選択する必要があります)
AWS Cloud9では開発環境として任意のリモートサーバーを使うことが可能です。
開発環境が少しでもマネージドになったらいいなーと思い、リモートサーバーの利用手順を確認するついでとして開発環境にLightsailを使ってみたのでその手順をご紹介します。
構成
先週の速報でご紹介した構成はこちらです。
こちらの手順ではEC2のインスタンスが自動で作成されます。
今回はEC2の部分をLightsailに置き換えてみました。
もちろん、自身で作成したEC2インスタンスやオンプレミスのサーバーを利用することも可能です。
動作要件
開発環境として利用するためには、以下の条件を満たす必要があります。
- 公開サーバーであること
- AWS Cloud9からSSHでアクセスできること
- バージョンが2.7のPythonがインストールされていること
- バージョンが0.6.16以降のNode.jsがインストールされていること
やってみた
事前準備
Lightsailインスタンスの作成
この記事の本筋ではないので詳細は割愛します。
以下のドキュメントなどを確認して作成してください。
Get started with Linux/Unix-based instances in Amazon Lightsail
今回はイメージとして「Amazon Linux(2017.09.0)」を選択しました。
SSH接続
SSHでログインして、Node.jsをインストールします。
ターミナルのアイコンをクリックしてターミナルを開きます。
詳細は以下のドキュメントを参照してください。
Connect to your Linux/Unix-based Lightsail instance
Pythonのインストール(確認)
まず、Pythonがインストールされているか確認します。
今回はインストールされていました。
python --version
Python 2.7.12
Node.jsのインストール
nodeがインストールされているか確認します。
node --version
インストールはお好きな方法で行いましょう。
今回はパッケージマネージャーで行います。
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs
インストールできたことを確認して完了です。
node --version
v8.9.1
環境作成
それでは環境を作成していきましょう。
まずは、環境のタイプとしてリモートサーバーを指定します。
併せて、ユーザー名をホスト名を指定します。
最後に公開鍵を配置します。
"Copy key to clipboard"をクリックして表示された公開鍵を~/.ssh/authorized_keys
に追記してください。
プレビューを確認して次に進みます。
次にCloud9に関連するコンポーネントのインストールウィザードに進みます。
今回はこのタイミングですべてインストールしてみます。
インストールするコンポーネントの一覧を確認して次へ進みます。
インストールの画面に進みます。
キーボード入力が必要な場合があるようですので、適宜入力してインストールを進めましょう。
インストールが完了したら次に進み、結果を確認してインストール完了です。
無事、インストールできました!
動作確認
今回はPHPのサンプルコードで試してみます。
ツールのインストール
今回利用したLightsailのblueprintおよびCloud9の初期設定ではPHPがインストールされていないため、手動でインストールする必要があります。
sudo yum -y install php56
コーディング
公式ドキュメントのサンプルコードをそのまま使用したいと思います。
ファイルの作成は以下のように行います。
公式ドキュメントからサンプルコードを拝借します。
<?php print('Hello, World!'); print("\nThe sum of 2 and 3 is 5."); $sum = (int)$argv[1] + (int)$argv[2]; print("\nThe sum of $argv[1] and $argv[2] is $sum."); ?>
ファイル名を指定して保存します。
ファイルが保存されたことを確認します。
テスト
実行してみましょう。
無事実行できました!
まとめ
このように、Lightsailでも問題なくCloud9を利用することができました。
Launch scriptを利用すれば、もう少し手順を簡略化できるのではないかと思います。
EC2の場合はCloud9の環境作成ウィザードを通して作成されるため、デフォルトVPCを使えば構築自体はEC2のほうが簡素です。
また、EC2の場合には"Cost-saving setting"という接続が無い時にはEC2インスタンスを自動で停止してくれる設定があるので、普通に使っていればEC2のほうがコストは安くなるのではないかと思います。
逆に、Lightsailはコストの試算が容易です。
要件に合わせて、適切な環境を選びましょう。