NAT Gateway と VPC endpoint で プライベートサブネットにあるインスタンス に セッションマネージャー接続する方法(コスト比較もあるよ)

こんにちは、協栄情報のきおかです。

 

今回は、NATゲートウェイとVPCエンドポイントそれぞれを用いて、プライベートサブネットにあるインスタンスにセッションマネージャーで接続する方法をご紹介します。

 

それぞれコストが異なりますので、構築方法とコストの比較も併せてご覧ください。

 

 

 

背景

サーバーの置き場所のベストプラクティスは、インターネットゲートウェイに繋がっていないサブネットです(プライベートサブネット)です。

プライベートサブネットに置いたうえで、接続方法は様々あると思います。今回はプライベートサブネットにセッションマネージャーで接続する手段として、NATゲートウェイとVPCエンドポイントを用います。

 

今回は、それぞれのコスト比較したうえで、最後に踏み台サーバーを利用する場合とコスト比較します。
 

 

 

構成図の補足

今回の主題は、「プライベートサブネットにあるインスタンスに」「セッションマネージャーで接続する」ことであり、つまり「プライベートサブネットにあるインスタンスが」「Systems Manager APIに接続できる」ことが要件となります。

なので、構成図はプライベートサブネットにあるインスタンスがSystems Manager APIに到達するまでを図示しています。

 

以上ご了承ください。

 

 

 

セッションマネージャーの利用準備

セッションマネージャーを利用するのに最低限必要な設定項目を以下に記載しています。もしセッションマネージャーで接続できない場合は、こちらのAWS公式ドキュメントを参考にしてください。

設定項目 設定値 補足
IAMポリシー AmazonSSMManagedInstanceCore IAMロールに含めて、接続したいEC2インスタンスにアタッチしてください。
セキュリティグループ HTTPSのアウトバウント通信を許可 インバウンド通信は不要です。
EC2 SSM Agentをインストール デフォルトでインストールされるAMIもあるので適宜確認してください。インストールされているかの確認はこちらを参考にしてください。

 

 

 

NATゲートウェイを使う場合

構成図

EC2インスタンスはアウトバウンド通信をNATゲートウェイを通じて行います。

NATゲートウェイ構成図

 

 

構築方法

EC2インスタンスの作成

以下を満たせばなんでも大丈夫です。

  • プライベートサブネットに置く
  • HTTPSアウトバウンド通信を許可したセキュリティグループを作成する
  • SSM Agentをインストールする(デフォルトでインストールされるAMIもあり)
  • IAMポリシーAmazonSSMManagedInstanceCoreを含んだIAMロールをアタッチ

 

 

NATゲートウェイの作成・ルーティング

VPC作成時にNATゲートウェイ作成を選択すれば、自動的にルーティングしてくれます。
NATゲートウェイのルーティングがうまく設定されていない場合はこちらの記事を参考にしてください。

 

 

検証

VPCが作成されたら、セッションマネージャーの利用準備を行い、EC2インスタンスにセッションマネージャーでの接続を試みてください。

正しくNATゲートウェイがルーティングされ、セッションマネージャーの利用準備ができていれば接続できるはずです。

 

 

コスト

▽東京リージョンの場合
NATゲートウェイ料金

利用料金

NAT ゲートウェイあたりの料金 (USD/時間)
0.062 USD

処理データ料金

処理データ 1 GB あたりの料金 (USD)
0.062 USD

(他のリージョンはこちらのAWS公式ドキュメントから)
 

 

 

VPCエンドポイントを使う場合

構成図

今回はプライベートサブネットを2つにしてみました。

プライベートサブネットを1つにして、同じプライベートサブネットにEC2インスタンスとインターフェース型VPCエンドポイントを置いても正しく動作(今回の検証と同様に動作)します。

 

VPCエンドポイント構成図

 

 

構築方法

EC2インスタンスの作成

以下を満たせばなんでも大丈夫です。

  • プライベートサブネットに置く
  • HTTPSアウトバウンド通信を許可したセキュリティグループを作成する
  • SSM Agentをインストールする(デフォルトでインストールされるAMIもあり)
  • IAMポリシーAmazonSSMManagedInstanceCoreを含んだIAMロールをアタッチ

 

 

VPCエンドポイント用のセキュリティグループの作成

VPCエンドポイント用のセキュリティグループを作成します。

方向 プロトコル ソース 補足
in HTTPS EC2インスタンスのセキュリティグループ EC2インスタンスからのHTTPS通信(Systems Agent API向けのもの)を受け入れます。
out HTTPS 0.0.0.0/0 Systems Agent APIのエンドポイント向けです。

 

 

VPCエンドポイントの作成

VPCマネジメントコンソール画面から、エンドポイントを選択します。

 

エンドポイントを作成を選択し、以下の設定を行ってください。エンドポイントを3つ作成するので、合計3回行う必要があります。

設定項目 設定値 補足
名前タグ 任意の値 特になし
サービスカテゴリ AWSのサービス Systems Manager APIはAWSのサービスにあたります。
サービス com.amazonaws.${region}.${target endpoints} ${region}: あなたが利用しているリージョン
${target endpoints}: [
  ec2messages,
  ssm,
  ssmmessages
]
VPC SSM接続したいノードがあるVPC 特になし
サブネット 選択できるもの 今回はどれもプライベートサブネットに置いています。IPアドレスタイプはIPv4。
セキュリティグループ 先ほど作成したVPCエンドポイント用のセキュリティグループ 特になし
ポリシー フルアクセス カスタムにしたい場合はこちらのAWS公式ドキュメントを参考にしてください。

 

以上、設定出来たらエンドポイントを作成を押して作成してください。

設定項目サービスは私の場合は東京リージョンなので、以下3つのエンドポイントを作成しました。

  • com.amazonaws.ap-northeast-1.ec2messages
  • com.amazonaws.ap-northeast-1.ssm
  • com.amazonaws.ap-northeast-1.ssmmessages

 

 

検証

ここまで設定したら、EC2インスタンスの接続画面からセッションマネージャーで接続できるようになっているはずです。

接続出来たら成功です。

 

 

コスト

▽東京リージョンの場合
VPCエンドポイント料金

利用料金

各AZのVPCエンドポイント1つあたりの料金(USD/時間)
0.014 USD

処理データ料金(1か月更新)

AWS リージョンで 1 か月に処理されるデータ 処理データ 1 GB あたりの料金 (USD)
最初の 1 PB 0.01 USD
次の 4 PB 0.006USD
5 PB以上のもの 0.004USD

(他のリージョンはこちらのAWS公式ドキュメントから)

 

 

 

コスト比較

NATゲートウェイ vs VPCエンドポイント

VPCエンドポイントの処理データ料金がデータ量によって分かれていますが、一番高い値段でもNATゲートウェイより安いので分けずに記載します。

 

利用料金

NATゲートウェイ VPCエンドポイント
0.062 USD 0.014 USD
8.693 JPY 1.963 JPY

(ドル円換算は2023/05/30 13:50時点)

 

処理データ料金

NATゲートウェイ VPCエンドポイント
0.062 USD 0.01 USD
8.693 JPY 1.402 JPY

(ドル円換算は2023/05/30 13:50時点)

 

 

 

踏み台サーバーを利用する場合

例えば以下のような構成ですね。パブリックサブネットにあるインスタンスにSSMで接続し、そこからTera TermなどでSSH接続する場合などです。

踏み台サーバー構成図

EC2の主な料金はCPUとEBSです。今回はWindowsを動かしたいので、以下で試しに計算してみます。
また、EC2インスタンスがNATゲートウェイやVPCエンドポイントより優れている点は、停止できるところです。ですので、平日9時間の月180時間稼働した場合も計算してみます。

計算スペック

CPU EBS
m5large 50GB

踏み台サーバーの利用料金

稼働量 USD/月 JPY/月
平日9時間のみ 40.10 USD 5630.53 JPY
100%稼働 162.58 USD 22828.23 JPY

(ドル円換算は2023/05/30 13:50時点)
 

 

 

最終比較(利用料金のみ)

利用手段 停止有無 稼働時間 利用料金
踏み台サーバー 180h/月 40.10 USD
(5630.53 JPY)
踏み台サーバー 720h/月 162.58 USD
(22828.23 JPY)
NATゲートウェイ 720h/月 44.64 USD
(6268 JPY)
VPCエンドポイント 720h/月 10.08 USD
(1415.36 JPY)

(ドル円換算は2023/05/30 13:50時点)

 

圧倒的にVPCエンドポイントが安いですね。とはいえVPCエンドポイントは用途が限定的なので、より多様な要件がある場合はNATゲートウェイや踏み台サーバーも候補に挙がりそうです。
 

 

 

まとめ

VPCエンドポイントが最も料金が安く、構築も比較的簡単でした。

要件に合わせて適切な構成を選んでいきたいですね。

 

ではまた。

 

 

Last modified: 2023-05-30

Author