AWSのマネジメントコンソールで仮想サーバーEC2を作成してSession Managerでログインする

こんにちは。
本日は、AWSのマネジメントコンソールで仮想サーバーをプライベートサブネットに作成して、セッションマネージャーで仮想サーバーにログインする手順を記載します。


# 1. セッションマネージャーでログインできる仮想サーバーを作成するための準備
Systems Managerの機能の1つ、セッションマネージャーは、AWSのマネジメントコンソールから仮想サーバーにシェルアクセスできるサービスです。

セッションマネージャーを利用すると、仮想サーバーにパブリックIPアドレスを付与することなく、AWSのマネジメントコンソールから仮想サーバーにログインすることができます。

:::note info
セッションマネージャーでは、インターネットにアクセスできるローカルなLinux/Windows等の環境から、コンソールでAWS CLIを用いて、プライベートサブネットに配備した仮想サーバーログインすることも可能です。
:::

セッションマネージャーでログインできる仮想サーバーを作成するためには、以下の準備が必要です。

1. <b>Amazon Machine Image（AMI）</b>
2. <b>IAMロール</b>
3. <b>VPCとサブネット</b>
4. <b>セキュリティグループ</b>
5. <b>完全閉域のVPCとする場合のアクセス経路（VPCエンドポイント）</b>
6. <b>キーペア</b>


## 1-1. Amazon Machine Image（AMI）
仮想サーバーを立ち上げるためのAmazon Machine Image（AMI）では、Systems ManagerのSSM Agentがあらかじめ含まれるAMIが必要です。
この記事では、AWSで用意されているAmazon Linux 2 のAMIを利用します。

## 1-2. IAMロール
仮想サーバーでセッションマネージャーを使うためには、適切な権限を設定したIAMロールが必要です。
この記事では手順の確認用として、以下の記事を参照して、IAMロールを作成してください。

:::note info
参考記事
[AWSのマネジメントコンソールでSession Managerで仮想サーバーにログインするためのIAMロールを作成する](https://qiita.com/h_horiguchi/items/813d5944e270aa0e2069) 
:::

## 1-3. VPCとサブネット
仮想サーバーを作成する環境として、VPCとサブネットが必要です。

VPCは以下があります。

1. <b>インターネットとの通信が可能なInternet Gatewayを配備するVPC
2. <b>Internet Gatewayを配備しないVPC

この記事では手順の確認用として、以下の記事を参照して、後述の条件でVPCとサブネット等を作成してください。

:::note info
参考記事
[AWSのマネジメントコンソールでVPCを簡単に作成する](https://qiita.com/h_horiguchi/items/e585acd5aa5cb6f2797b) 
:::

VPCは、それぞれ以下の条件で作成してください。
違いは、<b>パブリックサブネット</b>と<b>NAT Gateway</b>を作成するかしないかの違いだけです。



#### ▼VPC作成の条件
<table>
 <tr>
  <td colspan=2>項目</td>
  <td><b>Internet Gatewayあり</td>
  <td><b>Internet Gateway無し</td>
 </tr>
 <tr>
  <td colspan=2>作成するリソース</td>
  <td>VPCなど</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2>名前タグの自動生成</td>
  <td>チェックする</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2>名前タグ</td>
  <td>PoC-20240105<br>※変更する場合は、<br>　他記事も合わせて変更</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2>IPv4 CIDR ブロック</td>
  <td>10.0.0.0/16<br>※変更しても<br>　手順確認は可</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2>IPv6 CIDR ブロック</td>
  <td>IPv6 CIDR ブロックなし</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2>テナンシー</td>
  <td>デフォルト</td>
  <td>同左</td>
 <tr>
  <td colspan=2>アベイラビリティ<br>ゾーン (AZ) の数</td>
  <td>1</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2>AZのカスタマイズ</td>
  <td>しない</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2><b>パブリックサブネットの数</td>
  <td><b>1</td>
  <td><b>0</td>
 </tr>
 <tr>
  <td colspan=2>プライベートサブネットの数</td>
  <td>1</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2>サブネットCIDRブロックを<br>カスタマイズ</td>
  <td>しない</td>
  <td>同左</td>
 </tr>
 <tr>
  <td colspan=2><b>NAT ゲートウェイ ($)</td>
  <td><b>AZごとに1</td>
  <td><b>なし</td>
 </tr>
 <tr>
  <td colspan=2>VPC エンドポイント</td>
  <td>S3ゲートウェイ</td>
  <td>同左</td>
 </tr>
 <tr>
  <td rowspan=2>DNS <br>オプション</td>
  <td>DNSホスト名を有効化</td>
  <td rowspan=2>チェックする</td>
  <td rowspan=2>同左</td>
 </tr>
 <tr>
  <td>DNS解決を有効化</td>
 </tr>
</table>

:::note warn
Internet Gatewayを配備しないVPCを作成した場合は、<br>1-5で、セッションマネージャー用のVPCエンドポイントを作成してください。
:::

## 1-4. セキュリティグループ
仮想サーバーに設定するセキュリティグループで、0.0.0.0/0に対するhttpsのアウトバウンドの許可ルールを含むセキュリティグループが必要です。

この記事では手順の確認用として、以下の記事を参照して、セキュリティグループを作成してください。

:::note info
参考記事
 [AWSのマネジメントコンソールでセキュリティグループを作成する](https://qiita.com/h_horiguchi/items/6dcf633448dbc5f37b7b) 
:::

## 1-5. 完全閉域のVPCとする場合のアクセス経路

Internet Gatewayを配備しない、完全閉域のVPCを作成した場合は、仮想サーバーから、セッションマネージャーのエンドポイントへのアクセス経路が必要です。

この記事では手順の確認用として、以下の記事を参照して、アクセス経路となるVPCエンドポイントを作成してください。

:::note info
参考記事
[AWSのマネジメントコンソールでSystems ManagerのSession Manager用のVPCエンドポイントを作成する](https://qiita.com/h_horiguchi/items/a74701acf9c872c688cc) 
:::

## 1-6. キーペア
セッションマネージャーで仮想サーバーにログインする場合は、SSHで仮想サーバーにログインするためのキーペアは使用しませんが、キーペアは基本的には作成して仮想サーバーに設定しておくことをおすすめします。

この記事では手順の確認用として、以下の記事を参照してーペアをを作成してください。

:::note info
参考記事
[AWSのマネジメントコンソールでキーペアを作成する](https://qiita.com/h_horiguchi/items/a37509dbb779fb50793c)
:::


# 2. インスタンス（仮想サーバー）の作成と確認

以下のリンクにアクセスします。

* 東京リージョンで仮想サーバーを作成する
[https://ap-northeast-1.console.aws.amazon.com/ec2/home?region=ap-northeast-1#LaunchInstances:](https://ap-northeast-1.console.aws.amazon.com/ec2/home?region=ap-northeast-1#LaunchInstances: "インスタンスを起動")


<br>

## 2-1. 仮想サーバーを作成

以下の内容を入力/設定していってください。

### ▼名前とタグ

「<b>名前</b>」を入力します。

![EC2-20240109-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/3e0b83fd-7377-5e23-440d-09a83e439cc5.png)

### ▼Application and OS Images (Amazon Machine Image) 

「<b>クイックスタート</b>」タブの「<b>Amazon Linux</b>」を選択します。

![EC2-20240109-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/1a4b2e90-5cc2-0632-fe47-0ed8ab0209cb.png)

### ▼インスタンスタイプ

デフォルトで選択されている「<b>t2.micro</b>」をそのまま使います。

![EC2-20240109-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/83b80dfe-8c58-4697-05d6-e3d893a6acf1.png)

### ▼キーペア (ログイン)  

準備の 1-6 で作成した「<b>PoC-20240105</b>」キーペアを選択します。

![EC2-20240109-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/10fd1722-67de-134f-94d6-e28c0c63a4e7.png)

### ▼ネットワーク設定

ネットワーク設定は、まず「<b>編集</b>」ボタンを押下し、編集できるようにします。

![EC2-20240109-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/7587910c-8a76-71ef-5144-f0afc986d24c.png)

「<b>VPC</b>」と「<b>サブネット</b>」は、準備の 1-3 で作成した「<b>PoC-20240105-vpc</b>」のVPCと、そのVPC内のプライベートサブネットを選択します。

「<b>ファイアウォール（セキュリティグループ）</b>」は、「<b>既存のセキュリティグループを選択する</b>」をクリックし、準備の 1-3 で作成した「<b>Common</b>」セキュリティグループを選択します。


![EC2-20240109-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/a8a57d27-eaaa-7528-d54b-a7842aef2e91.png)

### ▼ストレージを設定

ここはそのままとします。

![EC2-20240109-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/8304aadf-e1eb-b602-914a-78df391fcce6.png)

### ▼高度な詳細

「<b>高度な詳細</b>」では、「<b>IAMインスタンスプロフィール</b>」の項目に、準備の 1-2 で作成した「<b>EC2RoleforSSM</b>」を選択します。

その他の項目はデフォルトのままとします。

![EC2-20240109-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/8f93e9ff-057a-771a-987f-8005ebe72c9f.png)


### ▼インスタンスを起動

ここまで設定したら、「<b>インスタンスを起動</b>」ボタンを押下します。

![EC2-20240109-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/e12bd906-247e-a24f-468f-49a7ec23d498.png)

画面が遷移します。

「<b>インスタンスの起動を正常に開始しました</b>」と表示されたら、赤枠のリンクをクリックして、インスタンスの作成状況を確認していきます。

![EC2-20240109-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/e1938f93-eded-ae31-0486-719534b42930.png)

<br>


## 2-2. インスタンスの作成状況を確認

インスタンスの一覧画面で、作成状況を確認します。
インスタンスの状態が「<b>実行中</b>」で、ステータスチェックが「<b>2/2のチェックに合格しました</b>」になりましたら正常に作成完了です。

### ▼インスタンスの状態が「<b>保留中</b>」

![EC2-20240109-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/625eb0c5-e250-d01c-a939-f706bb5da20f.png)

### ▼インスタンスの状態が「<b>実行中</b>」で、<br>　ステータスチェックが「初期化しています」

![EC2-20240109-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/f8ea3bc4-0241-5b46-7c01-b86d73cb0ddb.png)

### ▼インスタンスの状態が「<b>実行中</b>」で、<br>　ステータスチェックが「2/2のチェックに合格しました」<br>➡作成完了！

![EC2-20240109-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/adba79b4-ad82-698b-26c2-97b1eb014876.png)

<br>

## 2-3. インスタンスにセッションマネージャーでログイン

インスタンス（仮想サーバー）の作成が完了しましたら、セッションマネージャーでログインします。

作成したインスタンスをチェックボックスで選択して、「<b>接続</b>」ボタンを押下します。

![EC2-20240109-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/4d4c19a7-ef80-71bd-0593-cf62f463772f.png)

<br>

「<b>インスタンスに接続</b>」画面で、「<b>セッションマネージャー</b>」タブを選択し、「<b>接続</b>」ボタンを押下します。

![EC2-20240109-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/d873956f-73c7-f375-a318-e9c003c1a185.png)


<br>

そうすると、ブラウザ上でシェル画面が表示されます。

シェルのプロンプトで、コマンドが入力できます。

![EC2-20240109-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/0d4963fc-1011-8188-a4e0-94a75b9b2a1b.png)

<br>

シェルで「<b>exit</b>」を入力するか、画面右上の「<b>終了</b>」ボタンを押下することで、セッションマネージャーを終了してインスタンスからログアウトすることができます。

![EC2-20240109-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/70e3373b-4183-3937-6db3-f06e22e50c7a.png)

<br>

仮想サーバーの作成とセッションマネージャーでのログインは以上で終わりです。
どなたかのお役に立てれば幸いです。


それでは、Happy AWS Life!!