はじめに
この記事の内容
VPCエンドポイントについて、「事前学習」と「ハンズオン」の2パートに分けて解説します。
- 基礎学習
- VPCエンドポイントの概要
- ゲートウェイ型とインターフェース型
- ハンズオン
- EC2(プライベートサブネット)にセッションマネージャーを利用して接続
- EC2(プライベートサブネット)からS3バケット内のオブジェクトリストを取得
①基礎学習
ハンズオンの前に、まずはVPCエンドポイントの基礎知識を解説します。
VPCエンドポイントの概要
VPCエンドポイントは、VPC(仮想プライベートクラウド)内のリソースがインターネットを経由せずに、AWSのサービスに安全に接続するためのサービスです。
AWSのプライベートネットワーク内で直接接続できるため、以下のメリットがあります。
- セキュリティの向上
- インターネットを経由しないため、外部からの攻撃リスクが減少します。
- パフォーマンスの向上
- AWSの内部ネットワークを使用するため、通信速度が向上します。
- コスト削減
- インターネットゲートウェイやNATゲートウェイを経由しないため、データ転送コストが削減できます。
ゲートウェイ型とインターフェース型の違い
VPCエンドポイントには、「ゲートウェイ型」と「インターフェース型」の2種類があります。
ゲートウェイ型 | インターフェース型 | |
---|---|---|
接続方法 | ルートテーブルにゲートウェイへのルートを追加 | ENIに割り当てられたプライベートIPアドレスを使用 |
接続先のAWSサービス | 限定的 (S3, DynamoDBのみ) | 主要なサービスが対象 (EC2, RDS, Labmbdaなど) |
接続元 | エンドポイントを作成したVPCからのみ接続可能 | エンドポイントを作成していないVPCからも接続可能 |
料金 | 無料 | 使用料に応じて料金が発生 |
レイテンシー | 非常に低い | 低い (ゲートウェイ型よりはやや高い) |
【補足】「接続元」について
上記の比較表における「接続元」が少しイメージしづらいかと思うので、補足説明します。
- ゲートウェイ型
-
エンドポイントを作成したVPCからのみ接続可能なので、異なるVPCに配置されている複数のEC2がS3にプライベート接続するには、VPCの数だけVPCエンドポイントを作成する必要があります。
★ 管理が手間 - インターフェース型
-
エンドポイントを作成していないVPCからも接続可能なので、異なるVPCに配置されている複数のEC2がS3にプライベート接続する際も、1つのVPCエンドポイントのみで対応できます。
★ 管理が楽
VPCエンドポイントの料金
2024年9月時点の料金のため、利用する際はAWSの公式サイトをご確認ください。
ゲートウェイ型
ゲートウェイ型の場合は利用料は発生しません。
ゲートウェイエンドポイントは追加料金なしで使用できます。
AWS (ゲートウェイエンドポイント)
インターフェース型
起動時間と処理データ量に応じて料金が発生します。
項目 | 料金 | |
---|---|---|
各AZのVPCエンドポイント1つあたりの料金 | 0.014 USD/時間 | |
VPCエンドポイントの処理データ量 | 0~1 PBの場合 | 0.01 USD/GB |
1~5 PBの場合 | 0.006 USD/GB | |
5 PB以上の場合 | 0.004 USD/GB |
②ハンズオン
VPCエンドポイントを用いて、以下を実現できるシステムを構築します。
- EC2(プライベートサブネット)にセッションマネージャーを利用して接続
- EC2(プライベートサブネット)からS3バケット内のオブジェクトリストを取得
前提条件
- 以下のリソースが構築されていること
- VPC
- プライベートサブネット
- EC2
構築手順
YouTubeで解説動画を投稿しているので、ハンズオン形式で学習しましょう。
EC2(プライベートサブネット)にセッションマネージャーを利用して接続
SSM接続・S3アクセスするためのIAMロールを作成し、EC2にアタッチします。
- IAMのコンソール画面のメニュー(画面左側)から、「ロール」を選択します。
- 以下設定のロールを作成します。
- 【ステップ1】信頼されたエンティティタイプを選択
- 信頼されたエンティティタイプ:AWSのサービス
- ユースケース:EC2
- 【ステップ2】許可を追加
- 許可ポリシー:以下を選択します。
- AmazonSSMManagedInstanceCore
- EC2にセッションマネージャーを利用して接続するために必要な権限
- AmazonS3ReadOnlyAccess
- S3への読み取り権限
- AmazonSSMManagedInstanceCore
- 許可ポリシー:以下を選択します。
- 【ステップ3】名前、確認、および作成
- ロール名:任意のロール名
- 説明:任意の説明
- 【ステップ1】信頼されたエンティティタイプを選択
- EC2のコンソール画面に遷移します。
- 作成済みのEC2を選択し、以下の順で選択します。
- 「アクション」
- 「セキュリティ」
- 「IAMロールを変更」
- 作成したIAMロールを選択して「IAMロールの更新」
セッションマネージャーを利用して接続するために、EC2に対して通信の許可設定を行います。
- EC2のコンソール画面に遷移し、左側のメニューから「セキュリティグループ」を選択します。
- 以下設定のセキュリティグループを作成します。
- VPC:EC2を配置しているVPC
- インバウンドルール:
- タイプ:SSH
- 作成済みのEC2を選択し、以下の順で選択します。
- 「アクション」
- 「セキュリティ」
- 「セキュリティグループを変更」
- 作成済みのセキュリティグループを選択して「セキュリティグループを追加」
- 以下設定のセキュリティグループを作成します。 ※VPCエンドポイント用のSGです。
- VPC:EC2を配置しているVPC
- インバウンドルール:
- タイプ:HTTPS
- 送信先:プライベートサブネットのCIDR
EC2にセッションマネージャーを利用して接続するための、VPCエンドポイントを作成します。
- VPCのコンソール画面に遷移し、左側のメニューから「エンドポイント」を選択します。
- 以下設定のエンドポイントを作成します。
- サービス:com.amazonaws.[リージョン].ssm
- VPC:EC2を配置しているVPC
- サブネット:EC2を配置しているサブネット
- セキュリティグループ:Step2-4で作成したセキュリティグループ
- 追加で以下サービスに対するエンドポイントを作成します。
- com.amazonaws.[リージョン].ec2messages
- com.amazonaws.[リージョン].ssmmessages
※サービス以外の設定値は「2」と同様です。
- EC2のコンソール画面に遷移します。
- 作成済みのEC2を選択して、「接続」>「セッションマネージャー」>「接続」の順で選択します。
EC2(プライベートサブネット)からS3バケット内のオブジェクトリストを取得
- VPCのコンソール画面に遷移し、左側のメニューから「エンドポイント」を選択します。
- 以下設定のエンドポイントを作成します。
- サービス:com.amazonaws.[リージョン].s3
- VPC:EC2を配置しているVPC
- サブネット:EC2を配置しているサブネット
- セキュリティグループ:前作業のStep2-4で作成したセキュリティグループ
動作確認用のS3バケットを作成します。
- 任意の名前のS3バケットを作成します。
- 作成したS3バケットに「test」ディレクトリを作成します。
- EC2に接続します。
- 以下コマンドを実行して、「/test」が返却されることを確認します。
aws s3 ls --region ap-northeast-1 --recursive s3://{バケット名}
※コード内の「バケット名」は、作成したバケット名に置き換えてください。
おわりに
本記事では、VPCエンドポイントの概要と実際の設定方法について解説しました。
VPCエンドポイントを利用することで、インターネットを経由せずにAWSのサービスにプライベートに接続でき、セキュリティとネットワークパフォーマンスの向上が期待できます。
クラウドインフラストラクチャの設計において、VPCエンドポイントは重要な要素の一つです。
本記事の内容を参考に、要件に合わせたVPCエンドポイントの導入を検討してみてください。
コメント
コメント一覧 (1件)
[…] KONISHI Tech Note 【初心者】VPCエンドポイントでS3・Systems Managerへのプライベート接続【AWS資格対策】【実践ハンズオン… はじめに この記事の内容 VPCエンドポイントについて、「事 […]