AWSで開発環境構築 #1（踏み台サーバーを作成）

# 目的

この記事の目的は、AWSの機能を試してみることです。

AWSの無料枠は「無料トライアル」、「12 か月間無料」、「常に無料」の3種類があります。
このうち「12か月無料」を、それぞれのサービスを開始してから12か月だと思っていた僕。
この前メールが来て、アカウント作成から12か月だと知りました...
なので今回はそれを使ってみようじゃないかと、そういうことです。

長いので、キャッチアップしながら何回かにかけて書こうと思います!


# 今回やること

今回の目標は以下の7つ。
* VPCを作成する
* サブネットを作成する
* インターネットゲートウェイを作成する
* ルートテーブルを作成する
* EC2インスタンスを作成する
* セキュリティグループを設定する
* SSH接続する

ここまでやって、こんな感じの構成で環境構築します！
![ladder_server.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/c01c1b30-5388-60d5-fd8e-76f5b20a8d8c.png)


# 環境
* windows 10
* Amazon Linux 2


# いざ出陣

## VPCの作成

Amazon Virtual Private Cloud（VPC）は、AWS上に作成できるプライベート仮想ネットワーク空間です。VPCを使用することで、AWS (Amazon Web Services) 上のリソースを仮想的にプライベートネットワーク内に配置できます。

1. AWSコンソールにログインし、VPCを開きます。
1. VPCのダッシュボードで、「VPCを作成」をクリックします。
1. 以下の項目を設定します。

<dl>
  <dt>作成するリソース</dt>
  <dd>「VPC のみ」を選択</dd>
  <dt>名前タグ - オプション</dt>
  <dd>test-vpc-01</dd>
  <dt>IPv4 CIDR ブロック</dt>
  <dd>「IPv4 CIDR の手動入力」で「10.0.0.0/16」を入力</dd>
  <dt>IPv6 CIDR ブロック</dt>
  <dd>「IPv6 CIDR ブロックなし」を選択</dd>
  <dt>テナンシー</dt>
  <dd>「デフォルト」を選択</dd>
</dl>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/ff906fda-6c4d-49b3-1d1c-ba715a83817c.png)

### CIDR ブロックについて
CIDRブロック（サイダーブロックと読むらしい）は、VPC内で使用されるIPアドレスの範囲を決定するために使用されます。
たとえば上のようにVPCのCIDRブロックが 10.0.0.0/16 の場合、VPC内で使用できるIPアドレスの範囲は、10.0.0.0 〜 10.0.255.255 となります。このうち、10.0.0.0はネットワークアドレス、10.0.255.255はブロードキャストアドレスという特別なアドレスで、ネットワーク内のサーバーなどに割り当てることはできません。

## サブネットの作成

1. VPCダッシュボードの左のメニューから、「サブネット」を選択します。
1. 「サブネットを作成」をクリックします。
1. 以下の項目を設定します。

<dl>
  <dt>VPC</dt>
  <dd>上で作成した「test-vpc-01」を選択</dd>
  <dt>サブネット名</dt>
  <dd>test-subnet-pub01</dd>
  <dt>アベイラビリティーゾーン（AZ）</dt>
  <dd>「アジアパシフィック (東京) / ap-northeast-1a」を選択</dd>
  <dt>IPv4 CIDR ブロック</dt>
  <dd>10.0.0.0/24</dd>
</dl>

他は、デフォルトでサブネットを作成します。

## インターネットゲートウェイの作成

1. VPCダッシュボードの左のメニューから、「インターネットゲートウェイ」を選択します。
1. 「インターネットゲートウェイの作成」をクリックします。
1. 名前タグを「test-internetgateway01」にして、インターネットゲートウェイを作成します。
1. 一覧画面から作成したインターネットゲートウェイを選択し、右上の「アクション」から「VPCにアタッチ」を選択します。
1. VPCに上で作成した「test-vpc-01」を選択し、「インターネットゲートウェイのアタッチ」をクリックします。
1. インターネットゲートウェイ一覧画面で、状態が「Attached」になっていれば完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/6935055b-d267-13a2-2cd3-2b1abe82e1fb.png)

## ルートテーブルの作成

1. VPCダッシュボードの左のメニューから、「お使いの VPC」を選択します。
1. 上で作成した「test-vpc-01」を選択し、「詳細」から「メインルートテーブル」のリンクをクリックして開く。
1. 「ルート」から「ルートを編集」を開く。
1. 「ルートを追加」をクリックし、以下の項目を設定する。
<dl>
  <dt>送信先</dt>
  <dd>0.0.0.0/0</dd>
  <dt>ターゲット</dt>
  <dd>上で作成したインターネットゲートウェイをプルダウンから選択</dd>
</dl>

変更を保存すると、ルートテーブルに追加される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/1d683320-98f5-f847-5cc9-4c1effb7581e.png)

## EC2インスタンスの作成

1. AWSコンソールにログインし、EC2を選択します。
1. EC2のダッシュボードで、「インスタンスを起動」をクリックします。
1. 以下の項目を設定します。

<dl>
  <dt>Name and tags</dt>
  <dd>test-ladder-server</dd>
  <dt>アプリケーションおよび OS イメージ</dt>
  <dd>「Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type」を選択（無料枠対象）</dd>
  <dt>インスタンスタイプ</dt>
  <dd>「t2.micro」にします（無料枠対象）</dd>
  <dd>　※ tはインスタンスタイプ、2はバージョン、microはインスタンスサイズです</dd>
  <dt>VPC - 必須</dt>
  <dd>上で作成した「test-vpc-01」を選択</dd>
  <dt>サブネット</dt>
  <dd>上で作成した「test-subnet-pub01」を選択</dd>
  <dt>パブリック IP の自動割り当て</dt>
  <dd>「有効化」を選択</dd>
  <dt>ファイアウォール (セキュリティグループ) </dt>
  <dd>「既存のセキュリティグループを選択する」 → 「default」を選択</dd>
  <dd>　※ あとで設定します</dd>
</dl>

### キーペア (ログイン)
「新しいキーペアの作成」をクリックし、キーペア名だけ入力してキーペアを作成します。pemファイルを保存する画面ができるので、好きなとこに保存してください。キーペア名は今回は「testkey01」にします。

他は、デフォルトでインスタンスを起動します。

## セキュリティグループの作成
1. EC2ダッシュボードの左のメニューから、「セキュリティグループ」を選択します。
1. 「セキュリティグループの作成」をクリックする。
1. 以下の項目を設定します。
<dl>
  <dt>セキュリティグループ名</dt>
  <dd>test-sg01</dd>
  <dt>説明</dt>
  <dd>任意に設定</dd>
  <dt>VPC</dt>
  <dd>上で作成した「test-vpc-01」を選択</dd>
  <dt>インバウンドルール</dt>
  <dd>タイプに「SSH」、ソースに「Anywhere-IPv4」を選択</dd>
  <dt>アウトバウンドルール</dt>
  <dd>タイプに「SSH」、ソースに「Anywhere-IPv4」を選択</dd>
</dl>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/bb795655-275d-3a15-d405-3e95790b11e1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/da6cc8b8-e595-6d5d-712c-343203b21fd9.png)

## Public DNS割り当ての有効化

1. VPCのダッシュボードで、「VPC」をクリックします。
1. VPCの一覧画面から作成したVPCを選択し、右上の「アクション」から「VPCの設定を編集」を選択します。
1. 「DNS 設定」で「DNS 解決を有効化」と「DNS ホスト名を有効化」にチェックを付けます。
1. 「保存」をクリックします。
1. サブネットの一覧に移動します。
1. 作成したサブネットを選択し、「アクション」 → 「サブネットの設定を編集」
1. 「パブリック IPv4 アドレスの自動割り当てを有効化」にチェックを付けます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/4715a92d-b894-7c0e-8dfb-7e5179195439.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/ed02c8fb-54dd-1bd5-ebff-a4652f7c996c.png)


## pemファイルの権限編集

1. エクスプローラーでtestkey01.pemのプロパティを開く。
1. 「セキュリティ」 → 「編集」を開く。
1.  すべてのオブジェクトを削除し、「追加」を押す。
1.  「詳細設定」から「検索」を押すと、検索結果に自分が表示されるので選択する。
1.  「アクセス許可」から「フルコントロール」の許可にチェックを入れる
1.  適応を押して戻る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/0c5f6029-0dea-3425-33ab-651f369b9d3b.png)






## EC2インスタンスへの接続

1. コマンドプロンプトを開き、pemファイルが置いてあるディレクトリまで移動します。
1. 以下のコマンドを入力
```cmd:コマンドプロンプト
ssh -i testkey01.pem ec2-user@${パブリック IPv4 DNS}
```

パブリック IPv4 DNSは、EC2の詳細から確認できます。

何か聞かれたら「yes」で進んで以下のように表示されたら踏み台へのアクセスは完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/f115bb64-897c-50b7-6c5d-7ed98cbc625d.png)

## Elastic IP addressの割り当て
IPアドレスがサーバーの再起動時に変更されないよう、Elastic IP addressの割り当てを行います。

1. VPCのダッシュボードで、「Elastic IP」をクリック。
1. 「Elastic IP アドレスを割り当てる」をクリック。
1. ネットワークボーダーグループをVPCと同じものに指定。
1. 「割り当て」をクリック
1. 「アクション」→ 「Elastic IP アドレスの関連付け」 を開く
1. 「インスタンス」でプルダウンから関連付けたいインスタンスを選択し、関連付ける。
1. EC2インスタンスの詳細に、画像のように「Elastic IPアドレス」が表示されていれば完了。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/e016671f-1d99-d3ef-3246-4d634b850b67.png)

コマンドプロンプトを見ると、IPアドレスを変更したことで追い出されているので再度ログインすればOKです！
```cmd:コマンドプロンプト
ssh -i testkey01.pem ec2-user@${Elastic IPアドレス}
```

# 余談
なんかAWSコンソールのUIが変わってて、調べても結構時間かかりました...
次は踏み台から入るインスタンスを作ります。

やりたいこと多くて時間が足りないね。


#### 続き
追記（2023/04/26）

https://qiita.com/kanerin1004/items/c91721c52a779df84d72