Cloud9でAWS環境内で開発端末を作る

リモートワーク全盛期。家で作業をすることが増えた。ゼロトラストとも言われているが、やはり家にあるパソコンでAWSを操作するとなると、シークレットキーなど、秘匿情報がパソコンのローカルストレージに残ってしまう。とはいえ、シークレットを使わずに仕事をするのもちょっと無理がある。
そんなときに便利なのがCloud9。
AWS内に開発クライアント（IDE）を立ててくれるサービス。また、VSC風のエディタ機能もあって、結構便利。価格もそんなに高くない。踏み台サーバを作るよりも、これを作ったほうが便利なんじゃないかという気はする。

# やりたいこと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/168288aa-e073-3933-88fe-b387133667bc.png)

・わたし、あなたはお家の物理パソコンから、インターネットを経由してAWSのマネジメントコンソールにアクセスする。
・マネジメントコンソールからCloud9を選択し、自分の開発インスタンスにアクセスして開発作業を行う。
・開発インスタンスは開発効率を上げるために、インターネットに接続できる状態とする。
・NATゲートウェイを配置して、ルートテーブルでインターネット向け通信はすべてNATゲートウェイに向ける。
（なんてことない、ハンズオンなどにありがちな簡単なAWS環境。ここでは自分の経験をアウトプットするために書いてみる。）

## VPCを作る
名前を適当に決めて、作る。IPアドレス帯（IPv4/CIDR）はお好きな値で。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/e487d0a3-e25e-6fe2-c13e-949421f0b79e.png)
 
## インターネットゲートウェイを作る
VPCとインターネットをつなぐ、インターネットゲートウェイを作る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/35007e36-a24f-247b-8bee-46f8112aaad9.png)

## インターネットゲートウェイとVPCを紐づける
インターネットゲートウェイを作成すると、画面の上に親切に「VPCにアタッチ」と出るので、アタッチする。そういえば昔、アタック25という番組がありました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/f755d142-1b2d-7228-f026-fb2977a1d36a.png)

ここで先ほど作ったVPCにアタッチ25する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/4b81addb-8b8a-f39d-2976-7d7025b04109.png)

アタッチできるとちゃんと状態が「Attached」になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/de693f49-b9a5-1143-f8a1-72f4af506680.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/ce561c82-3c97-8dd3-34e6-7bcbc22546f3.png)
正解！

## サブネットを作る
先ほど作成したVPCを指定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/c6d5ad03-3668-5957-f16d-6a418c4059e9.png)

サブネットに適当な命名をする。
アベイラビリティーゾーンは今回は片系しか作らないので、aかcでお好きなものを選ぶ。
IPv4CIDRブロックは、VPCで作成したIP体系に紐づく値にする。
例えば、VPCのIPv4/CIDRを「172.16.0.0/16」にした場合、サブネットのIPv4/CIDRブロックは「172.16.x.x/16+n」となる。そんなに1つのサブネットにCloud9インスタンスを入れる必要があることってあまりないと思うので、/24ぐらいで切っておけばいいと思う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/e4ff180b-8648-5eae-922a-2f8962d8cef7.png)

これを2個作成する。1つはCloud9を配置するプライベートサブネット。2つ目はNATゲートウェイを配置するパブリックサブネット。
例えば、プライベートサブネットは172.16.1.0/24にして、パブリックサブネットは172.16.101.0/24とか、第3オクテットを変えるなどにして、良い感じに設定する。

## ルートテーブルを作る
適当な名前をつけて、VPCは先ほど作ったVPCを指定する。これも、プライベートサブネットのルートテーブル、パブリックサブネットのルートテーブルとして、2個作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/bbcb9256-c53f-4f6c-291b-e6510170710f.png)

## NATゲートウェイを作る
名前を適当につけ、サブネットは先ほど作った「パブリックサブネット」を指定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/0d1751d4-2dfc-7cb0-54b0-21cf56415f44.png)
接続タイプはパブリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/9c6fa847-b3c9-c666-b55f-2bd1d72596e9.png)

ここまで書いてNATゲートウェイを作成させる段取りをしているが、このNATゲートウェイは異常に高い。個人で使うにはちょっと財布にキツイ。なのでコスト削減を考えたりする場合、NATゲートウェイを作らず、[NATインスタンスを作る。](https://soypocket.com/it/amazonlinux2-nat-instance-iptables-setting/)

## ルートテーブルのルートを編集する
まずは先ほど作ったルートテーブルの、パブリックサブネット用ルートテーブルに対して、ルートを追加する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/c6f03ae0-54b8-173c-a211-c608625c0761.png)
送信先を0.0.0.0/0（デフォルトルート）を指定し、ターゲットは先ほどVPCにアタッチしたインターネットゲートウェイを指定する。そのまま変更を保存する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/db808f3b-1025-f27e-041c-6749b4306b2d.png)


次にプライベートサブネット用ルートテーブルに対して、ルートを追加する。
ここでは送信先は0.0.0.0/0（デフォルトルート）を指定し、ターゲットは「NATゲートウェイ（またはNATインスタンス）」を指定し、保存する。

## サブネットとルートテーブルを関連付けする
サブネット画面より、先ほど作成したパブリックサブネットを選択し、「ルートテーブルの関連付けを編集」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/7a104868-f428-3bb4-9c22-17b11395a281.png)

ルートテーブルIDに、パブリックサブネット用ルートテーブルを指定して保存する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/d63c4ef0-6435-c229-d263-635d42f70eda.png)


プライベートサブネットに対しても同様の操作で編集し、プライベートサブネット用ルートテーブルを指定して保存する。

少し横にそれるが、パブリックサブネットはIPアドレスの自動割当を有効にすることが多い。パブリックIPを自動で割り当ててくれるため。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/8551b75e-4524-582a-719d-28fbd988c150.png)


## Cloud 9を作る
ここでようやくCloud9を作る。CreateEnviromentを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/cb189802-9934-1a10-c988-03989b903752.png)


名前と説明をよしなに決める。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/a6e4763e-e106-58aa-22ea-5641561cfb69.png)


設定画面では、directaccessは選ばない。今回はマネジメントコンソール経由で入りたい要件なので、真ん中を選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/77676dee-de16-16e5-d1f3-c05380cc4b25.png)


インスタンスタイプやOS種別はお好きなものをよしなに選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/46942397-b654-0a64-83da-befc5b1c52f0.png)

NetworkSettingsは、先ほど作成したVPCを選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/328ff1ff-053b-e8b6-0c4a-b18fabe8ea11.png)

サブネットについても、先ほど作成した「プライベートサブネット」を選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/b2b4c949-8d13-dc9c-d0de-2c69d91c2b89.png)

Next stepを押して作成画面を進める。

そのままCreateEnviromentを押す。いま気が付いたが、IAMロールは勝手に作ってくれる模様。便利。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/299cc386-f6e8-1042-8f6a-b22b602cd35d.png)


こんな画面がでてフューミニッツ待てと言われるので、フューミニッツ待つ。ちなみに5分ぐらいかかったので、焦らず待つ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/5cb04df8-e1f3-018e-f8c4-85939cbdd13f.png)

しばらくするとWelcome画面となり、Cloud9を利用可能となる。画面下がbashのプロンプトとなっており、各種Linuxコマンドを入力可能。左辺側がディレクトリ構造になっており、GUIで直観的にファイル操作が可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/b421744b-78db-165c-1376-1d6173f7a75f.png)


右クリックしてファイル作成も可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/94b497bb-ba31-dd53-b3bc-a98d9eee1787.png)

ファイルの操作も可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/a7a2ff86-f589-73d0-3c4d-53491cf49477.png)

インターネットにつながる環境のため、各種インストールも可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/bf99cb84-c2e7-cfce-ce0c-0cac3b398e8b.png)


こんな感じで、良い感じの開発環境整理をしていきましょう。


## 余談
わたしより年下だけど、「姉御」と呼びたくなる感じの歌手デュアリパさん。ストリーミング再生で懐かしいメロディーが流れてきたと思ったら、彼女の歌だった。どこか懐かしく切ない感じと思ったら、どうやら昔の歌をリメイクしたものらしい。「あなたの彼女(your woman)にはなれません」という歌が、姉御によってリメイクされると、「またあなたに恋をさせられた」という、ちょっと頼もしい感じ、攻めの姿勢になるのが面白いですね。
[リメイク：Dua Lipa「Love Again」](https://youtu.be/PpIH9nvnu2o)
[オリジナル：White Town - Your Woman](https://youtu.be/lVL-zZnD3VU)