EC2、インターネットゲートウェイ、VPCエンドポイントに接続できない時の調査方法

# はじめに
　AWSを触り始めると、よく「EC2に接続できません。なぜですか？」「EC2からインターネットに接続できない。接続できるはずなのに。。」等、相談されることがあります。認定試験でも出てきそうな問題ですね。
　どこが悪いか確認するために各サービスの接続ポイントを１つ１つ調べることになりますが、時間がかかりますね。。。手っ取り早く問題は「ここ！」を知りたいですよね。
　そんな時に便利なのが、[VPC Reachability Analyzer](https://docs.aws.amazon.com/ja_jp/vpc/latest/reachability/what-is-reachability-analyzer.html)です。
　例えば、AというEC2と、BというEC2が接続できるか分析してくれます。接続できない場合は、どこが問題になっていて接続できないのか教えてくれます。

# VPC Reachability Analyzer
　以下のドキュメントに説明が記載されていますが、VPC内の2つのエンドポイント間、または複数のVPC間で、通信の到達性を確認でき、VPC Reachability Analyzerを使うことで問題を解決することができます。

https://docs.aws.amazon.com/ja_jp/vpc/latest/reachability/what-is-reachability-analyzer.html

# 実際にやってみる
　実際にどんな感じなのかやってみます。

## 構成

　以下のような構成があり、EC2(access-test-2)からEC2(access-test-1)が接続できない状態とします。

![vpc-ra.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/fb4672a3-6d72-278e-061b-99320687cd39.png)

## VPC Reachability Analyzerを開く
　VPCを開き、左のメニューから「Reachability Analyzer」をクリックします。
　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/b93c1d4a-c4f9-196f-1e17-281d6141ebfa.png)

## パスの作成と分析を設定する
　右上の「パスの作成と分析」をクリックし、作成画面を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/cca6ce69-74b1-4559-c911-9b2fb62e7ff0.png)

　名前タグを設定し、送信元タイプ、送信先タイプ、送信先ポート、プロトコルを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/2243fe46-7e03-6718-104b-348f5de9b766.png)

　送信元、送信先タイプは以下を選択できます。今回はEC2ですので、Instancesを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/041ed636-da3f-fb7b-4fca-f5817267e3ae.png)

入力すると、以下のような形です。送信元（access-test-2のインスタンスID）、送信先（access-test-1のインスタンスID）を選択しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/104302db-25da-0280-dfdd-aa1b4d410fed.png)

## パスの作成と分析を実行する
　作成画面の下段にある「パスの作成と分析」をクリックし、実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/e7c3b090-7978-2bd1-8931-c6b832fc1dae.png)

↓↓実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/4ca4c8fd-08e7-2794-ac8a-1a51fcbbcf86.png)

分析は数秒〜数十秒で完了します。（複雑だと長いかも）
「到達不可能」と表示されていますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/8aa54269-c9f5-4ebe-f669-d3cedebf27f7.png)

## 分析内容を確認する
　分析IDをクリックし、分析結果を表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/9cdcc93f-b1a4-7d15-3225-e6795175dfaa.png)

　↓↓概要は以下のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/fbebe8f2-d554-4522-a062-468ccfba38ca.png)

　↓↓さらに下を確認すると、分析結果が表示され、何が問題かわかります。「Details」をクリックして開くとさらに詳細な内容が確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/53a64d3d-d6f1-6789-0b4e-014f1f8a42f7.png)

　↓↓Details

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/3365774b-75f2-e4e2-2822-470f95f3a051.png)

上記より、セキュリティグループで弾かれていることがわかります。

## 修正後に再確認する

　分析結果より、再度セキュリティグループを見直し、修正しましたので再度確認してみたいと思います。
　「Reachability Analyzer」を開き、パスIDをクリックし、分析結果を開きます。（「アクション」-「詳細を表示」でも同じ画面が表示されます。）

　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/ad3b0571-e566-8922-8ef9-de3fa80bd619.png)

　「パスの分析」をクリックし、分析を実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/27a55231-d002-2772-4ad4-4c311bfe29ba.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/dcea5a59-1257-0515-8aef-a42d014a3b70.png)

※中間コンポーネントは、NAT Gateway等を利用した構成での確認の際にARNを入力し利用します。今回は使いませんので、空欄です。

## 再実行時の結果を確認する
　再実行後、分析タブに分析結果が表示されます。今回は、「到達可能」となり、接続できることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/f7f792ec-4744-c172-8810-7ebfedd5a683.png)

下段には、ルートが表示されますので、どのような経路で接続できたかもわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129814/ee8cd079-6fec-9536-4582-a09aac04def1.png)


# まとめ
　今回は、EC2からEC2への接続で確認しましたが、送信元/先の選択肢にもあった各エンドポイント間での接続を確認することが可能です。1人で順に各接続ポイントを見てもなかなか見つけられず、時間が経つことはよくあるかと思います。そんな時、VPC Reachability Analyzerを使うとあっさり問題点がわかりますので、ぜひ活用していただければと思います。

だいたい単純なミスで、「そこかよっ！」ってなる時が多いのですよね、こういうの。（笑）
1人でハマって問題を見つけられない時の便利ツールですね。