この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
こんにちは、協栄情報のきおかです。
今回は、NATゲートウェイとVPCエンドポイントそれぞれを用いて、プライベートサブネットにあるインスタンスにセッションマネージャーで接続する方法をご紹介します。
それぞれコストが異なりますので、構築方法とコストの比較も併せてご覧ください。
背景
サーバーの置き場所のベストプラクティスは、インターネットゲートウェイに繋がっていないサブネットです(プライベートサブネット)です。
プライベートサブネットに置いたうえで、接続方法は様々あると思います。今回はプライベートサブネットにセッションマネージャーで接続する手段として、NATゲートウェイとVPCエンドポイントを用います。
今回は、それぞれのコスト比較したうえで、最後に踏み台サーバーを利用する場合とコスト比較します。
構成図の補足
今回の主題は、「プライベートサブネットにあるインスタンスに」「セッションマネージャーで接続する」ことであり、つまり「プライベートサブネットにあるインスタンスが」「Systems Manager APIに接続できる」ことが要件となります。
なので、構成図はプライベートサブネットにあるインスタンスがSystems Manager APIに到達するまでを図示しています。
以上ご了承ください。
セッションマネージャーの利用準備
セッションマネージャーを利用するのに最低限必要な設定項目を以下に記載しています。もしセッションマネージャーで接続できない場合は、こちらのAWS公式ドキュメントを参考にしてください。
設定項目 | 設定値 | 補足 |
---|---|---|
IAMポリシー | AmazonSSMManagedInstanceCore |
IAMロールに含めて、接続したいEC2インスタンスにアタッチしてください。 |
セキュリティグループ | HTTPSのアウトバウント通信を許可 | インバウンド通信は不要です。 |
EC2 | SSM Agentをインストール | デフォルトでインストールされるAMIもあるので適宜確認してください。インストールされているかの確認はこちらを参考にしてください。 |
NATゲートウェイを使う場合
構成図
EC2インスタンスはアウトバウンド通信をNATゲートウェイを通じて行います。
構築方法
EC2インスタンスの作成
以下を満たせばなんでも大丈夫です。
- プライベートサブネットに置く
- HTTPSアウトバウンド通信を許可したセキュリティグループを作成する
- SSM Agentをインストールする(デフォルトでインストールされるAMIもあり)
- IAMポリシー
AmazonSSMManagedInstanceCore
を含んだIAMロールをアタッチ
NATゲートウェイの作成・ルーティング
VPC作成時にNATゲートウェイ作成を選択すれば、自動的にルーティングしてくれます。
NATゲートウェイのルーティングがうまく設定されていない場合はこちらの記事を参考にしてください。
検証
VPCが作成されたら、セッションマネージャーの利用準備を行い、EC2インスタンスにセッションマネージャーでの接続を試みてください。
正しくNATゲートウェイがルーティングされ、セッションマネージャーの利用準備ができていれば接続できるはずです。
コスト
▽東京リージョンの場合
利用料金
NAT ゲートウェイあたりの料金 (USD/時間) |
---|
0.062 USD |
処理データ料金
処理データ 1 GB あたりの料金 (USD) |
---|
0.062 USD |
(他のリージョンはこちらのAWS公式ドキュメントから)
VPCエンドポイントを使う場合
構成図
今回はプライベートサブネットを2つにしてみました。
プライベートサブネットを1つにして、同じプライベートサブネットにEC2インスタンスとインターフェース型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インスタンスの接続画面からセッションマネージャーで接続できるようになっているはずです。
接続出来たら成功です。
コスト
▽東京リージョンの場合
利用料金
各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エンドポイントが最も料金が安く、構築も比較的簡単でした。
要件に合わせて適切な構成を選んでいきたいですね。
ではまた。