Cloud9の開発環境にLightsailを使ってみた #reinvent

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

中山(順)です

先週の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のサンプルコードで試してみます。

PHP Sample for AWS Cloud9

ツールのインストール

今回利用した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はコストの試算が容易です。

要件に合わせて、適切な環境を選びましょう。