AWSでアカウント登録～インスタンスにSSH接続まで

# AWS環境構築

## リージョン設定

AWSマネジメントコンソールにログインしたら右上のリージョンを選択する。
デフォルトでは米国東部（バージニア北部）となっている？

アジアパシフィック（東京）を選択する。


```
アジアパシフィック (東京)  ap-northeast-1
```


## VPCの作成

左上の検索窓に「VPC」と入力し、VPCをクリックする。
オレンジのVPCを作成するをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/4d80c01e-dcd3-a253-7a6e-fa31818cee02.png)

* 作成するリソース
    ⦿VPCのみ
    〇VPCなど

* 名前タグ - オプション
    例）my-vpc

* IPv4 CIDR ブロック
    例）10.0.0.0/16

* IPv6 CIDR ブロック
    ⦿ IPv6 CIDR ブロックなし
    〇 IPAM 割り当ての IPv6 CIDR ブロック
    〇 Amazon 提供の IPv6 CIDR ブロック
    〇 IPv6 CIDR 所有 (ユーザー所有)

* テナンシー
    デフォルト

「VPCを作成」ボタンを押す。

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

VPCの左メニュから「インターネットゲートウェイ」を選択する。
オレンジの「インターネットゲートウェイの作成」を押す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/4a83b80c-97af-ae4e-d340-2db105cf65b2.png)

* 名前タグ
    例）my-igw

オレンジの「インターネットゲートウェイの作成」を押す。

## サブネットの作成

VPCの左メニュから「サブネット」を選択する。
オレンジの「サブネットを作成」を押す。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/5d7d311b-c217-4f7e-48a2-49e1379c9b7c.png)

* VPC ID
    選択すると下に詳細設定項目が出現する

* サブネット名
    例）my-subnet-public
    例）my-subnet-private
    語尾に公開するサブネットなのか、非公開なのかを記しておくと便利

* アベイラビリティーゾーン
    ※東京リージョンの中のさらに区分けされたゾーン
    どれでもいいが例として
```
アジアパシフィック (東京)  / ap-northeast-1a
```

* IPv4 CIDR ブロック
    例）10.0.1.0/24
    10.0.1.***のIPアドレスが自動で振られる
    [こちらのサイトが便利だったりする](https://www.ipvx.info/ipv4/cidr2extip/)

オレンジの「サブネットを作成」を押す。

## ルートテーブルの作成
VPCの左メニュから「ルートテーブル」を選択する。
オレンジの「ルートテーブルを作成」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/f2564225-0315-08c6-c075-464734068ed4.png)

* 名前 - オプション
    例）my-rtb-public
    例) my-rtb-private
    こちらも公開用なのか、非公開なのか分かれば便利

* VPC
    VPCを選択

「ルートテーブルを作成」を押す。

## ルートテーブルのルートを編集する
ルートテーブルの一覧画面から該当ルートテーブルを選択すると、画面下のほうに詳細な情報が出現する。
その中にルートというページがあるので移動し、右のほうにある「ルートを編集」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/d4d346eb-8afd-0110-166b-4b580080a9e2.png)

「ルートを追加」を押すと追加の編集画面が出現する。

* 送信先
    0.0.0.0/0
    全てのIPアドレスを対象

* ターゲット
    インターネットに公開したいので「インターネットゲートウェイ」を選択する
    先ほど作成したインターネットゲートウェイのIDを選択

「変更を保存」ボタンを押す

## ルートテーブルにサブネットを関連付ける
ルートの編集と同じく一覧の下のほうの詳細にサブネットの関連付けページがあるので移動し、「サブネットの関連付けを編集」を押す。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/6708d25e-9db2-2ea6-c03c-507fdce50a0f.png)
画像ではひとつしかないが設定してある数だけサブネットが一覧に表示される。

関連付けたいサブネットを選択して「関連付けを保存」を押す。

## セキュリティグループを作成する
左上の検索窓に「EC2」と入力する。
EC2を選択してEC2画面に移動する。

左のメニュからセキュリティグループを選択し、「セキュリティグループを作成」を押す
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/852ba4ef-044e-0516-17dd-e8aecb3b5be4.png)
* セキュリティグループ名
    例）my-sgrp

* 説明
    説明を入力

* VPC
　VPCを選択

インバウンドルールの「ルールを追加」を選択。
とりあえず自宅からのSSH接続したいので設定する。
* タイプ
    SSH
* ソース
    マイIP（自宅からのIPアドレスを入力）
    例）12.34.56.78/32
* 説明
    説明を入力

アウトバウンドはそのままで「セキュリティグループを作成」を押す。

## キーペアの作成
SSH接続用の秘密鍵を作成する。
EC2画面の左メニュからキーペアを選択。「キーペアを作成」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/b0247fc0-97d4-6d52-1afc-dea8884b4767.png)
* 名前
    例）my-key

* キーペアのタイプ
    ⦿ RSA
    〇 ED25519

* プライベートキーファイル形式
    ⦿ .pem
    〇 .ppk
    puttyを使用している方はppkを選択

「キーペアを作成」を押す。
## EC2インスタンスを起動する
EC2画面の左メニュからインスタンスを選択する。
「インスタンスを起動」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/14cb833d-9066-bca6-03fe-8cb73b1dcd89.png)
* 名前
    例）my-instance

* アプリケーションおよび OS イメージ (Amazon マシンイメージ)
    Amazon Linux 2023 AMI（無料利用枠の対象）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/00e09483-cc7a-be4c-349c-98cdd9056ab6.png)
* インスタンスタイプ
    t2.micro（無料利用枠の対象）

* キーペア（ログイン）
    作成した秘密鍵を選択
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/19896a5b-77c0-c960-50dd-e0425c1a0a21.png)
* VPC - 必須 
　作成済みのVPC

* サブネット
    作成済みのサブネット

* パブリックIPの自動割り当て
    無効化
    後でパブリックIPアドレスを取得して紐付けるため無効にしておく

* ファイアーウォール（セキュリティーグループ）
    〇セキュリティーグループを作成する
    ⦿既存のセキュリティーグループを選択する
    作成したセキュリティーグループを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/d85b26a8-2a19-f6f8-821e-db928cd0decc.png)
* ストレージ設定
　8GiB gp3
    30GiBまでは無料枠になる

「インスタンスを起動」を押す。

## Elastic IPの作成
EC2画面の左のメニュからElastic IPを選択し、「Elastic IPアドレスを割り当てる」を押す。

そのまま「割り当て」を押す。
## Elastic IPの関連付け
EC2画面の左のメニュからElastic IPを選択し、関連付けたいIPアドレスを選択し、右上の「アクション」から「Elastic IPアドレスの関連付け」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598309/b9dd20e6-f6ab-db46-1201-1cb0693275f5.png)
* リソースタイプ
    ⦿ インスタンス
    〇 ネットワークインターフェイス

* インスタンス
    関連付けたいインスタンス

* プライベートIPアドレス
    選択できるものを選択

「関連付ける」を選択。

## SSHで接続する

端末からターミナルを開く。
~/.ssh/にダウンロードしているキーペアを移動させる。
同ディレクトリにconfigファイルを作成し以下を記述
```
Host my-instance
    Hostname 【 設定したElastic IPアドレス 】
    Port 22
    User ec2-user
    ServerAliveInterval 180
    ServerAliveCountMax 120
    IdentityFile ~/.ssh/【 設定したキーペア 】.pem
```
接続する
```
ssh my-instance
```
以下のようなことを聞かれたら「yes」と入力する。
```
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:asdfghjklqwertyuiopzxcvbnm.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
```
はじめて接続するサーバーです、本当にいいですか？という問いかけと思ってもらってOK。
接続したら同ディレクトリにknown_hostsファイルが作成され、次回以降聞かれなくなる。

接続に成功したら以下のような画面になる。
```
root@DELL:~/.ssh# ssh my-instance
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
Last login: Sat Sep  2 15:17:22 2023 from xxx.xxx.xxx.xxx
```
鳥が飛んでいる・・・。