インターフェース VPC エンドポイントと Route 53 プライベートホストゾーンを使用した S3 アクセスの紹介

インターフェース VPC エンドポイントと Route 53 プライベートホストゾーンを使用した S3 アクセスの紹介

岩佐 孝浩
岩佐 孝浩
4 min read
Route 53 VPC Endpoints

はじめに

Amazon S3 は ゲートウェイ VPC エンドポイント に加えて、プライベート接続性を強化するための インターフェース VPC エンドポイント を提供しています。本記事では、インターフェース VPC エンドポイントと Route 53 プライベートホストゾーンを使用して、プライベートサブネットから S3 にアクセスする方法を説明します。

S3 インターフェース VPC エンドポイント では、S3 にアクセスする際に --endpoint-url オプションの指定が必要です。この毎回のオプション指定を省くため、Route 53 プライベートホストゾーン を活用できます。本記事では、その具体的な手順を解説します。

S3 VPC エンドポイント

VPC エンドポイントなしで S3 にアクセスする場合

プライベートサブネットから VPC エンドポイントを使用せずに S3 にアクセスしようとすると、接続エラーが発生します。

$ aws s3 ls --region $YOUR_REGION --cli-read-timeout 1 --cli-connect-timeout 1

Connect timeout on endpoint URL: "https://s3.ap-northeast-1.amazonaws.com/"

S3 インターフェース VPC エンドポイントの作成

S3 へのアクセスを有効にするには、以下のコマンドを使用してインターフェース VPC エンドポイントを作成します。

aws ec2 create-vpc-endpoint \
  --vpc-id $YOUR_VPC_ID \
  --vpc-endpoint-type Interface \
  --service-name com.amazonaws.$YOUR_REGION.s3 \
  --subnet-ids $YOUR_PRIVATE_SUBNET_IDS \
  --security-group-ids $YOUR_SECURITY_GROUP_IDS

作成したエンドポイントを確認し、DNS エントリを取得します。

aws ec2 describe-vpc-endpoints \
  --filters Name=service-name,Values=com.amazonaws.$YOUR_REGION.s3 \
  --query "VpcEndpoints[*].DnsEntries"
[
  [
    {
      "DnsName": "*.vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx.s3.ap-northeast-1.vpce.amazonaws.com",
      "HostedZoneId": "xxxxxxxxxxxxxx"
    },
    {
      "DnsName": "*.vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx-ap-northeast-1a.s3.ap-northeast-1.vpce.amazonaws.com",
      "HostedZoneId": "xxxxxxxxxxxxxx"
    }
  ]
]

VPC エンドポイントを使用した S3 へのアクセス

VPC エンドポイントの URL を使用して S3 にアクセスできるか確認します。

aws s3 ls \
  --region <YOUR_REGION> \
  --endpoint-url http://vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx.s3.ap-northeast-1.vpce.amazonaws.com

Route 53 プライベートホストゾーン

Route 53 プライベートホストゾーンの作成

S3 へのアクセスを簡略化するため、以下のコマンドを使用して Route 53 プライベートホストゾーンを作成します。

aws route53 create-hosted-zone \
  --name s3.$YOUR_REGION.amazonaws.com \
  --vpc VPCRegion=$YOUR_REGION,VPCId=$YOUR_VPC_ID \
  --caller-reference "$(date)"

DNS レコードの追加

Route 53 コンソールを使用して、VPC エンドポイントを指す A (ALIAS) レコードを追加します。

  1. Create record をクリックします。

  1. レコードタイプとして A を選択し、ルーティングターゲットに Alias to VPC endpoint を選びます。

--endpoint-url オプションなしでの S3 アクセス

ホストゾーンを設定した後は、--endpoint-url オプションを指定せずに S3 にアクセス可能です。

aws s3 ls --region ap-northeast-1

まとめ

Interface VPC Endpoint は、オンプレミス環境が VPC に接続されているシナリオで特に有用です。この設定により、オンプレミスネットワークから S3 へ直接かつ安全にアクセスできます。

S3 Interface VPC Endpoint と Route 53 Private Hosted Zone を組み合わせることで、プライベート環境からの S3 アクセスを簡略化し、安全性を向上させることができます。このセットアップは、特にハイブリッドクラウドアーキテクチャにおいて大きな価値を発揮します。

Happy Coding! 🚀

岩佐 孝浩

岩佐 孝浩

Software Developer at KAKEHASHI Inc.
AWS を活用したクラウドネイティブ・アプリケーションの要件定義・設計・開発に従事。 株式会社カケハシで、処方箋データ収集の新たな基盤の構築に携わっています。 Japan AWS Top Engineers 2020-2023