AWS Cloud9の開発環境を作ってみる
あ、1つ前が別のIDEの紹介ですね。まぁ気にしないで進めましょう。
AWS Cloud9って?
AWSで提供されているクラウドベースの統合開発環境(IDE)で、インターネット環境さえあればブラウザ上でコーディングからデバッグまで行うことができます。
PhpStotmやVisual Studio Codeなどのように使用するパソコンでダウンロード・インストールする必要がなく、当然WindowsやMacなどのOSによる環境依存もありません。
ということはインターネットにさえつながれば働く環境を選ばないということなので、リモートワークにもよさそうですね。
とは言いつつも必要なものが…
AWSについてのある程度の知識は必要です。
あと、AWS Cloud9自体は無料ですが、EC2インスタンス上に開発環境を構築する場合、無料枠期間を過ぎていたり無料枠対象外のインスタンスタイプを選択した場合などは別途料金が発生します。どの程度かかるかは後ほど。
前置きはここまでにして環境構築を進めましょう。
なお、AWSアカウントは既に作成済みのものとします。
IAMユーザーの作成
AWSアカウントで作業をするのはポリシーに反するので、IAMユーザーを作成します。
AWSマネジメントコンソールへのアクセスができるユーザーで、AWSCloud9AdministratorとAmazonEC2FullAccessのポリシーをアタッチしておきます。
今回はCloud9というユーザーを作成しました。
以降の作業はこのIAMユーザーで行います。
AWS Cloud9環境の作成
1. Create environmentをクリックします。

2. Name(開発環境の名前)とDescription(説明)を入力します。
今回はNameをMyWorkSpace、Descriptionは未入力としておきます。

3. EC2インスタンス上に開発環境を作成します。
とりあえず選択肢はデフォルトのままで大丈夫でしょう。
Cost-saving settingは、Cloud9を終了してからEC2インスタンスが休止されるまでの時間です。コスト削減のために設定しておきましょう。デフォルトは30分です。
ネットワーク環境は、アカウント作成時にデフォルトで用意されているものを使います。独自で構築したネットワーク環境を利用したい場合は事前に作っておきましょう。

4. Review画面で内容に問題がないことを確認してCreate environmentをクリックすると環境構築が始まります。数分後このような画面に切り替わったら完了です。

EBSボリュームの拡張
自動生成されたEC2にアタッチされているEBSボリューム10GBのうち既に8GBほど使われているため、空き容量がちょっと心許ないので拡張しておきます。
1. AWSのマネージメントコンソールからEC2へ行き、Elastic Block Store > ボリュームを開きます。
2. 対象のEBSボリュームを選択しボリュームの変更を行います。今回は30GBに変更します。
3. ターミナル(Cloud9の画面下部がターミナルです)でlsblkコマンドを打って確認します。
cloud9:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 480K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 10G 7.9G 2.2G 79% /
tmpfs 99M 0 99M 0% /run/user/1000
tmpfs 99M 0 99M 0% /run/user/0
cloud9:~/environment $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 30G 0 disk
└─xvda1 202:1 0 10G 0 part /
4. growpartコマンドでxvda1パーティションを拡張し、lsblkコマンドで確認します。
cloud9:~ $ sudo growpart /dev/xvda 1
CHANGED: partition=1 start=4096 old: size=20967391 end=20971487 new: size=62910431 end=62914527
cloud9:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 30G 0 disk
└─xvda1 202:1 0 30G 0 part /
5. この時点ではファイルシステムの拡張はできていないので、xfs_growfsコマンドでファイルシステムを拡張します。
cloud9:~ $ sudo xfs_growfs -d /
meta-data=/dev/xvda1 isize=512 agcount=6, agsize=524159 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0
data = bsize=4096 blocks=2620923, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2620923 to 7863803
cloud9:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 474M 0 474M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 480K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 30G 7.9G 23G 27% /
tmpfs 99M 0 99M 0% /run/user/1000
tmpfs 99M 0 99M 0% /run/user/0
これで拡張完了です。
gitもインストールされているので、GitHubやBitbucketなどからcloneするなどしてソースコードをドンドン放り込みましょう。
とりあえずここまでやっておけば、それなりに開発が進められるのではないでしょうか。
で、いくらかかるの?
はい、大事なところですね。
出社したら開発環境を開き(EC2インスタンス起動)、8時間作業をして開発環境を閉じる(EC2インスタンス休止)というルーティーンを1ヶ月で22日行い、EC2からインターネットへのトラフィックが2GB/日発生するとします。
EC2のインスタンスタイプがt2.micro(0.0152USD/時間)なので、
0.0152USD * 8時間 * 22日 = 2.6752USD
アタッチしているEBSが汎用SSD(gp2、0.12USD/GB 月)なので、
0.12USD * 30GB = 3.6USD
トラフィックは、最初の1GBまでが無料で、以降9.999 TBまでは0.114USD/GBなので、
0.114USD * 11GB = 1.254USD
(※いずれも2021年2月時点での料金表に基づきます)
合計すると約7.5USD/月、この辺が最低ラインになりそうです。
動作確認などのためにEC2のインスタンスタイプを上位に変更したりRDSでデータベースを用意したりするなら、もうちょっとかかりそうです。
割と多くの言語もサポート( https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/language-support.html )してるようですし、同一アカウントの他のIAMユーザーと環境を共有してペアプログラミングができたりもします。端末インストール型のIDEのようにインストールする台数分だけライセンスを購入したりすることもありません。
個人的には十分にありかなと思いました。
ファブリカコミュニケーションズで働いてみませんか?
あったらいいな、をカタチに。人々を幸せにする革新的なサービスを、私たちと一緒に創っていくメンバーを募集しています。
ファブリカコミュニケーションズの社員は「全員がクリエイター」。アイデアの発信に社歴や部署の垣根はありません。
“自分から発信できる人に、どんどんチャンスが与えられる“そんな環境で活躍してみませんか?ご興味のある方は、以下の採用ページをご覧ください。