目次Category
はじめに
こんにちは、26卒の仲山です。
本記事では、プライベートサブネットに配置したEC2インスタンスからインターネットへ安全に通信を行うための環境構築手順を解説します。
本記事の目標
パブリックIPを持たないプライベートサブネット上のEC2インスタンスから、NAT Gatewayを経由してインターネットへ疎通確認(ping)ができるようになることを目標とします。
使用するAWSサービス
- Amazon VPC: プライベートサブネット、ルートテーブル、NAT Gatewayの構築
- Amazon EC2: プライベートサブネットに配置する仮想サーバー
- AWS Systems Manager (SSM): パブリックIPのないEC2へのセキュアなリモート接続(セッションマネージャー)
前提条件
- VPC、パブリックサブネット、プライベートサブネットが作成済み
- インターネットゲートウェイ(IGW)作成済み、パブリックサブネットのルートテーブルに関連付け済み
1. NAT Gatewayの作成
- 名前: test-natgw-<name>-01(任意)
- アベイラビリティーモード: ゾーナル
※リージョナルで設定すると、複数AZにまたがる可用性の高いNATゲートウェイが自動で構築されます。そのため、本番環境ではリージョナル、またはゾーナルを複数のAZに配置して構築することが推奨されます。 - サブネット: パブリックサブネット
- 接続タイプ: パブリック
- Elastic IP: 「ElasticIPを割り当て」ボタンで自動生成

2. プライベート用ルートテーブルの新規作成
- 名前: test-private-rtb-<name>-01(任意)
- VPC: 自身のものを選択

3. プライベートサブネットをルートテーブルに紐付ける
- 自身のプライベート用ルートテーブルを選択
- 「サブネットの関連付け」タブを選択
- 「サブネットの関連付けを編集」をクリック
- 「利用可能なサブネット」からプライベートサブネットを選択
- 「関連付けを保存」をクリック
4. NAT Gateway へのルートを追加する
- 自身のプライベート用ルートテーブルを選択
- 「ルート」タブを選択
- 「ルートを編集」をクリック
- 「ルートを追加」
- 送信先:
0.0.0.0/0 - ターゲット: NATゲートウェイを選択し、自身のNAT Gatewayを選択
- 送信先:
- 「変更を保存」をクリック

5. EC2インスタンスを作成(プライベートサブネットに配置)
- 名前: test-private-ec2-<name>-01(任意)
- アプリケーションおよび OS イメージ: Amazon Linux
- インスタンスタイプ: (任意のものを選択)
- ネットワーク設定:
- VPC: 自身のもの
- サブネット: プライベートサブネット
- パブリック IP の自動割り当て: 無効化
- セキュリティグループ: インバウンドルール無しのものが好ましい
- 高度な詳細:
- IAM インスタンスプロフィール: ポリシーに「
AmazonSSMManagedInstanceCore」がアタッチされているものを選択
- IAM インスタンスプロフィール: ポリシーに「
※AmazonSSMManagedInstanceCore」がアタッチされているIAMロールが無い人は「新しいIAMプロファイルを作成」をクリックすると「AmazonSSMManagedInstanceCore」がアタッチされているロールを新規作成できます

以上の設定が終わったら、インスタンスを起動を選択しキーペア無しで作成。
6. EC2にSSM接続
接続方法で「SSMセッションマネージャー」を選択し、接続

7. pingコマンドを実行
以下のコマンドを実施し、画像のようになれば成功です!
ping.txt
ping -c 4 google.com
終わりに
本手順により、プライベートサブネット上のEC2から安全にインターネット通信を行う環境を無事に構築することができました。
今回は扱いませんでしたが、VPCエンドポイントを用いることでインターネットを経由せずにプライベートサブネット上のEC2から他のAWSサービスにアクセスすることもできます。
気になる方はそちらも試してみてください。
最後に、本日作成したリソースは全て削除するのを忘れずにお願いします。
※Elastic IPはNAT Gatewayを削除後に別途で削除する必要があるので注意してください。
最後までご覧いただき、ありがとうございました。
同じカテゴリーの記事
同じカテゴリの記事を読む