【AWS】アプリ屋がはじめてAWSでインフラ構築してみた＠AP鯖構築編

# はじめに
インフラ屋さんが作ったAWSをSSH接続でいじることはよくありましたが、
自分でAWS環境を構築したことはなかったので、アプリ屋が躓いた点とかを記録するために書いてみました。

## AWS管理コンソールにログインする

AmazonのIDとパスワードで管理コンソールへログインします。
今回はほとんど使用制限がなかったのでほぼすべてのサービスが表示されています。
今回使ったサービスを赤枠で囲ってみました。結構頑張りましたがまだまだなようです。

>![aws-管理コンソール.png](https://qiita-image-store.s3.amazonaws.com/0/48625/8ab966f3-d7ec-87ba-6762-09fdc91ef440.png)

## EC2インスタンスのAPサーバーを作る
要するにクラウド上に仮想サーバーを作ります。
※基本的にインフラに興味が薄いアプリエンジニアなので、解説とかは他サイトにお任せしてテスト用のAPサーバーをちゃっちゃと作ります。

 * 管理コンソールの右上にあるリージョンから東京を選択します。
>![ams-ec2-0.リージョン選択.png](https://qiita-image-store.s3.amazonaws.com/0/48625/d2c9b75a-c07c-4faa-f003-5c19ca049b84.png)


 * 管理コンソールから EC2 を選択し、「インスタンスの作成」ボタンを押します。
>![ams-ec2-0.インスタンス作成.png](https://qiita-image-store.s3.amazonaws.com/0/48625/5488384a-de19-5025-372a-2252629210c7.png)


 * インスタンス作成画面ではガイドが表示されます。
  順番にインスタンスの設定を選択していくだけで作成できます。
>![ams-ec2-0.パンくずリスト.png](https://qiita-image-store.s3.amazonaws.com/0/48625/f2cfc760-e387-5668-3e03-f7722080daf4.png)


 * AMI(OS)を選択します。
 特にこだわりもなかったので Aamazon Linux 64bit を選択しました。
 マイAMIで自分のAMIを選択したり、会社で作成したAMIをみんなで共有とかもできます。
 多分、アプリエンジニアが躓きそうなところですが、AmazonLinux を選んでおけばなんとかなる気がします。
>![ams-ec2-1.ami選択.png](https://qiita-image-store.s3.amazonaws.com/0/48625/21f94375-79b8-72d7-7478-559421c722f2.png)


 * プランを選択します。
 テスト用なので無料利用枠の t2.micro を選択します。
 ここで「確認と作成」ボタンを押してしまうと「ステップ7」までジャンプしてしまいますので気を付けましょう。
>![aws-ec2-2.タイプ選択.png](https://qiita-image-store.s3.amazonaws.com/0/48625/c9ab3c94-1cb7-29d8-b769-9873539ab9ed.png)

 * 次にインスタンス詳細を設定します。
 特に何も気にしないで次へ進んで問題ないですが、本番環境であれば「誤った削除から保護します」にチェックをした方がインスタンスを削除するときに警告確認が出るので安全です。
 ネットワークで特定のサブネットへ所属するような制限がある場合は、ネットワークとサブネットあたりを変える必要があります。
>![aws-ec2-3.詳細設定.png](https://qiita-image-store.s3.amazonaws.com/0/48625/72f010b2-bf9c-848f-d80f-a1b485dfe8b0.png)

 * EC2へストレージを追加します。
 今回はテスト用のAPサーバーなので8GBにしていますが、
 JenkinsでWEBアプリのバックアップを取っていくとか、ログをS3へ保存しないでAPサーバーへ保存するとかだともう少し必要な気がします。
 今回は、RDS(DB)へ使用するデータを格納することと、DBのバックアップファイルはシェルでS3へ保存するため、EC2のストレージはあまり必要としませんでした。
>![aws-ec2-4.ストレージの追加.png](https://qiita-image-store.s3.amazonaws.com/0/48625/9be8aacf-c571-cc8b-7d1e-75ff2b34437f.png)

 * タグ付けをします。
 Nameの値に「テスト用APサーバー」とかわかりやすいタグを入力します。後から変更できます。
>![aws-ec2-5.タグ設定.png](https://qiita-image-store.s3.amazonaws.com/0/48625/27a66065-7ebb-9c28-70b9-0e30b580f519.png)

 * セキュリティグループを設定します。
 ここで、アプリエンジニアならば「なんぞこれ？！」となるような気がしますが、要はこのテスト用APサーバーにアクセスできるIPとポートを指定するという意味です。
 この画面では「全世界からSSH接続でアクセスできる」状態になっていますので、送信元を「マイIP」にして自分だけアクセスできるようにしておきます。
 セキュリティグループ名も「launch-wizard-1」だと後から変えられないのと、見た感じなんだかわからないので「test-stage-ap」とかにします。
>![aws-ec2-6.セキュリティグループ.png](https://qiita-image-store.s3.amazonaws.com/0/48625/31da5fb6-07fe-242d-a8c0-2353fd3a50fc.png)

 * 変更点がなければ「作成」ボタンを押します。
>![aws-ec2-7.確認.png](https://qiita-image-store.s3.amazonaws.com/0/48625/a6c01995-f47f-afc9-c0da-de2386c6c80a.png)

 * キーペアの設定をします。
 要するにテスト用APサーバーへSSH接続するための鍵なので、 xxx.pem をダウンロードしておきます。
>![aws-ec2-8.keypair.png](https://qiita-image-store.s3.amazonaws.com/0/48625/95144923-014f-67dc-6cb5-a36623a41d6b.png)

 * 「インスタンス作成」ボタンを押すとインスタンスが作成されます。
 「インスタンスの表示」ボタンを押してEC2管理画面を表示します。
>![aws-ec2-9.done.png](https://qiita-image-store.s3.amazonaws.com/0/48625/9ffbef0e-a167-875f-7868-c40c3bca16a0.png)

## EC2コンソールから作成した内容を確認する

 * インスタンスを作成すると枠を付けたメニューに作成したインスタンスが表示されます。
>![aws-ec2コンソール.png](https://qiita-image-store.s3.amazonaws.com/0/48625/bc59a222-3c42-7187-f3e5-1af2b1817419.png)

 * インスタンスで特に気にした方がよい箇所に赤枠を付けました。
 接続：SSH接続の説明が出てきます。
 アクション：インスタンスの再起動などができます。
 インスタンスID：セキュリティグループなどから指定する際にインスタンスIDを指定する箇所が多々あります。
 アベイラビリティーゾーン：東京リージョンの中にいくつかあるゾーンのどこに所属するかが記載されています。
 インスタンスの状態：起動しているかがわかります。runningなので起動しています。
 ステータスチェック：AWSのチェック結果が記載されています。
 パブリックDNS／パブリックIP：パブリックなので公開されたアドレスになります。
表示されている ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com で接続することが出来ます。 
（pingを飛ばしてもpingを許可していないので応答しません）
>![aws-ec2インスタンス.png](https://qiita-image-store.s3.amazonaws.com/0/48625/5666d8e4-5d11-f299-84fc-704f18411046.png)

 * ボリュームで確認しておいた方がよい箇所に枠を付けました。
>![aws-ec2ボリューム.png](https://qiita-image-store.s3.amazonaws.com/0/48625/e80ffc5d-2289-9a3b-ea10-253c63d17c52.png)

 * セキュリティグループはグループ名。
>![aws-ec2セキュリティグループ.png](https://qiita-image-store.s3.amazonaws.com/0/48625/5d5cf927-c897-358b-36ce-a4cbf81188df.png)

## PuttyからEC2へSSH接続する

 * ppkファイルを作成する
 Putty SSH key generation utility を起動し、xxx.pemファイルをロードしてppkファイルに変換します。
 （Putty SSH key generation utility のバージョンによっては変換できない場合があります）
※Poderosaだとそのままpemファイルで接続できます。
>![aws-ec2-puttygen.png](https://qiita-image-store.s3.amazonaws.com/0/48625/034699fb-f40d-604a-215b-da349cb6ff32.png)

 * ec2-userでSSH接続する
 最初からec2-userが存在しており、xxx.pemで接続できます。
※最初は22番ポートしか接続できないので、ポートを変えて接続する場合は気を付けましょう。
>![aws-ec2-puttysetting.png](https://qiita-image-store.s3.amazonaws.com/0/48625/c6d7db60-a209-83f4-0226-b5278a82d127.png)

接続した状態
>![aws-ec2-putty.png](https://qiita-image-store.s3.amazonaws.com/0/48625/7f69e790-7a0a-4c68-a451-87ce437adb82.png)

あとは、Apacheを入れたり yum update したり、80番ポート開けたりして、アプリサーバーを作れば完成です。

間違っている箇所などありましたらプルリクしていただけると助かります。