【初心者】VPCエンドポイントでS3・Systems Managerへのプライベート接続【AWS資格対策】【実践ハンズオン】

目次

はじめに

この記事の内容

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エンドポイントのコストを下げる方法

インターフェース型を採用することで、オンプレサーバからもプライベート接続できます。

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(プライベートサブネット)にセッションマネージャーを利用して接続

STEP
IAMロールの設定

SSM接続・S3アクセスするためのIAMロールを作成し、EC2にアタッチします。

  1. IAMのコンソール画面のメニュー(画面左側)から、「ロール」を選択します。
  2. 以下設定のロールを作成します。
    • 【ステップ1】信頼されたエンティティタイプを選択
      • 信頼されたエンティティタイプ:AWSのサービス
      • ユースケース:EC2
    • 【ステップ2】許可を追加
      • 許可ポリシー:以下を選択します。
        • AmazonSSMManagedInstanceCore
          • EC2にセッションマネージャーを利用して接続するために必要な権限
        • AmazonS3ReadOnlyAccess
          • S3への読み取り権限
    • 【ステップ3】名前、確認、および作成
      • ロール名:任意のロール名
      • 説明:任意の説明
  3. EC2のコンソール画面に遷移します。
  4. 作成済みのEC2を選択し、以下の順で選択します。
    • 「アクション」
    • 「セキュリティ」
    • 「IAMロールを変更」
    • 作成したIAMロールを選択して「IAMロールの更新」
STEP
セキュリティグループの設定

セッションマネージャーを利用して接続するために、EC2に対して通信の許可設定を行います。

  1. EC2のコンソール画面に遷移し、左側のメニューから「セキュリティグループ」を選択します。
  2. 以下設定のセキュリティグループを作成します。
    • VPC:EC2を配置しているVPC
    • インバウンドルール:
      • タイプ:SSH
  3. 作成済みのEC2を選択し、以下の順で選択します。
    • 「アクション」
    • 「セキュリティ」
    • 「セキュリティグループを変更」
    • 作成済みのセキュリティグループを選択して「セキュリティグループを追加」
  4. 以下設定のセキュリティグループを作成します。 ※VPCエンドポイント用のSGです。
    • VPC:EC2を配置しているVPC
    • インバウンドルール:
      • タイプ:HTTPS
      • 送信先:プライベートサブネットのCIDR
STEP
VPCエンドポイントを作成

EC2にセッションマネージャーを利用して接続するための、VPCエンドポイントを作成します。

  1. VPCのコンソール画面に遷移し、左側のメニューから「エンドポイント」を選択します。
  2. 以下設定のエンドポイントを作成します。
    • サービス:com.amazonaws.[リージョン].ssm
    • VPC:EC2を配置しているVPC
    • サブネット:EC2を配置しているサブネット
    • セキュリティグループ:Step2-4で作成したセキュリティグループ
  3. 追加で以下サービスに対するエンドポイントを作成します。
    • com.amazonaws.[リージョン].ec2messages
    • com.amazonaws.[リージョン].ssmmessages
       ※サービス以外の設定値は「2」と同様です。
STEP
EC2にセッションマネージャーを利用して接続
  1. EC2のコンソール画面に遷移します。
  2. 作成済みのEC2を選択して、「接続」>「セッションマネージャー」>「接続」の順で選択します。

「セッションマネージャー」に遷移した際にエラーメッセージが表示される場合は、数分待ってから再接続しましょう。

EC2(プライベートサブネット)からS3バケット内のオブジェクトリストを取得

STEP
VPCエンドポイントを作成
  1. VPCのコンソール画面に遷移し、左側のメニューから「エンドポイント」を選択します。
  2. 以下設定のエンドポイントを作成します。
    • サービス:com.amazonaws.[リージョン].s3
    • VPC:EC2を配置しているVPC
    • サブネット:EC2を配置しているサブネット
    • セキュリティグループ:前作業のStep2-4で作成したセキュリティグループ
STEP
S3バケットを作成

動作確認用のS3バケットを作成します。

  1. 任意の名前のS3バケットを作成します。
  2. 作成したS3バケットに「test」ディレクトリを作成します。
STEP
S3バケット内のオブジェクトリストを取得
  1. EC2に接続します。
  2. 以下コマンドを実行して、「/test」が返却されることを確認します。
aws s3 ls --region ap-northeast-1 --recursive s3://{バケット名}

※コード内の「バケット名」は、作成したバケット名に置き換えてください。

おわりに

本記事では、VPCエンドポイントの概要と実際の設定方法について解説しました。

VPCエンドポイントを利用することで、インターネットを経由せずにAWSのサービスにプライベートに接続でき、セキュリティとネットワークパフォーマンスの向上が期待できます。

クラウドインフラストラクチャの設計において、VPCエンドポイントは重要な要素の一つです。
本記事の内容を参考に、要件に合わせたVPCエンドポイントの導入を検討してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

コメントする

目次