【AWS】Amazon VPC ~ VPC Reachability Analyzer ~

■ はじめに

https://dk521123.hatenablog.com/entry/2022/03/28/162514
https://dk521123.hatenablog.com/entry/2021/08/30/104237

のように、AWS環境下で、ConnectionTimeout Error などが起こった際に
通信の到達・未到達(未到達でもどこで繋がらないのか)を分析してくれる
AWSツールをしたので、メモ。

目次

【1】VPC Reachability Analyzer(リーチャビリティ アナライザー)
【2】使用上の注意
 1)無料じゃない
 2)EC2に関するアクセス確認ではRunningである必要がある
【3】AWSマネージメントコンソール上から実行
【4】AWS CLIから実行
 Step 1: Create a path
 Step 2: Analyze the path
 Step 3: Get the results of the path analysis

【1】VPC Reachability Analyzer(リーチャビリティ アナライザー)

* AWS の ネットワーク診断ツール

動画
https://www.youtube.com/watch?v=Ks59Fff-q3g

【2】使用上の注意

1)無料じゃない

* 少額ではあるが、お金がかかる。

https://aws.amazon.com/jp/vpc/pricing/

より抜粋
~~~~~~~~~~~~
Reachability Analyzer – 料金の例

2 つのインスタンス間の接続性を 10 回解析したとします。
分析ごとに料金が発生し、 処理する分析あたりの料金は 0.10 USD です。

接続 10 件 x 接続あたり 0.10 USD = 1 USD。

つまり、合計で 1 USD をお支払いいただきます。
~~~~~~~~~~~~

2)EC2に関するアクセス確認ではRunningである必要がある

* 論理的にチェックしている訳ではなく、物理的にチェックしているっぽい

【3】AWSマネージメントコンソール上から実行

https://aws.amazon.com/jp/premiumsupport/knowledge-center/vpc-connectivity-reachability-analyzer/

[1] AWS マネージメントコンソール上から 
 [VPC]-[Reachability Analyzer]-[Create and analyze path] を選択

[2] パス設定で、「Create and analyze path]ボタン押下
 * Source type:送信元タイプを選択
 => 例えば、 「Instances(EC2インスタンス)」を選択
 => 「Source: <対象EC2 instance ID>」を選択

 * Destination type:送信先タイプを選択(e.g. 「Internet Gateways」)
 => 例えば、 「VPC Endpoints」を選択
 => 「Destination: <対象VPC Endpoints>」を選択

 * Protocol:プロトコルを選択(e.g. 「TCP」「UDP」「SSH」)
 => 例えば、 「TCP」を選択

実演動画

* 以下の動画で実演している。
 => 短い動画なので、さっくり見れる

https://youtu.be/bTCIrGM5aqY?t=6

【4】AWS CLIから実行

* 以下の公式ドキュメントに詳しく載っている
 => ひょっとしたら、GUIより使いやすいかも、、、

https://aws.amazon.com/jp/premiumsupport/knowledge-center/vpc-connectivity-reachability-analyzer/
https://docs.aws.amazon.com/ja_jp/vpc/latest/reachability/getting-started-cli.html

Step 1: Create a path

# --sourceと--destinationで通信元・先を指定する
aws ec2 create-network-insights-path \
--source igw-0797cccdc9d73b0e5 \
--destination i-0495d385ad28331c7 \
--destination-port 22 \
--protocol TCP

出力例

{
    "NetworkInsightsPaths": {
        "NetworkInsightsPathId": "nip-0b26f224f1d131fa8",
・・・略・・・

Step 2: Analyze the path

# nip-0b26f224f1d131fa8 は、Step1の出力結果
aws ec2 start-network-insights-analysis \
--network-insights-path-id nip-0b26f224f1d131fa8

出力例

{
    "NetworkInsightsAnalysis": {
        "NetworkInsightsAnalysisId": "nia-02207aa13eb480c7a",
・・・略・・・

Step 3: Get the results of the path analysis

# nia-02207aa13eb480c7a は、Step2の出力結果
aws ec2 describe-network-insights-analyses \
--network-insights-analysis-ids nia-02207aa13eb480c7a

出力例:Not reachable

{
    "NetworkInsightsAnalyses": [
        {
            "NetworkInsightsAnalysisId": "nia-02207aa13eb480c7a",
・・・略・・・
            "Status": "succeeded", <= 注意:「Status : succeeded」で到達じゃない
            "NetworkPathFound": false, <= ★「NetworkPathFound: false」=「到達していない」
・・・略・・・

出力例:Reachable

{
    "NetworkInsightsAnalyses": [
        {
            "NetworkInsightsAnalysisId": "nia-076744f74a04c3c7f",
・・・略・・・
            "Status": "succeeded",
            "NetworkPathFound": true,<= ★「NetworkPathFound: true」=「到達した」
・・・略・・・

参考文献

https://www.sunnycloud.jp/column/20201216-01/
https://dev.classmethod.jp/articles/breaking-vpc-reachability-analyzer/
https://dev.classmethod.jp/articles/vpc-reachability-analyzer-reachable-from-a-source-resource/
公式ドキュメント
https://aws.amazon.com/jp/blogs/news/new-vpc-insights-analyzes-reachability-and-visibility-in-vpcs/

関連記事

Amazon VPC ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2019/12/08/105415
Amazon VPC ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/01/24/000000
Amazon VPC ~ 基本編 / セキュリティグループ ~
https://dk521123.hatenablog.com/entry/2022/04/01/000000
Amazon VPC ~ 基本編 / VPCエンドポイント ~
https://dk521123.hatenablog.com/entry/2022/03/20/000000
AWS Glue Job で DB timeout が発生する
https://dk521123.hatenablog.com/entry/2021/08/30/104237
AWS Glue Job で ConnectionTimeoutError が発生する
https://dk521123.hatenablog.com/entry/2022/03/28/162514
AWS認定 ~ アソシエイト/ソリューションアーキテクト ~
https://dk521123.hatenablog.com/entry/2022/03/01/000000