S3 インターフェース VPC エンドポイントと Route 53 Private Hosted Zone を利用した S3 アクセス
S3 は、ゲートウェイ VPC エンドポイントだけでなく、インターフェース VPC エンドポイントも提供しています。
S3 のインターフェース VPC エンドポイントでは、 --endpoint-url
オプションを指定する必要があり、デフォルトの S3 エンドポイント (your-region.s3.amazonaws.com
) にはアクセスできません。
デフォルトのエンドポイントを使用するには、 Route 53 Private Hosted Zone が使用できます。
概要
この投稿では、プライベートサブネット内に配置された EC2 インスタンスから S3 にアクセスする手順について説明します。
S3 VPC エンドポイント
VPC エンドポイントなしで S3 にアクセス
次のコマンドを実行して、 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
$ 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 にアクセス
次のコマンドを実行して、 S3 VPC エンドポイントで S3 にアクセスできることを確認してください。
--region
オプションを指定する必要があります。 $ aws s3 ls \
--region <YOUR_REGION> \
--endpoint-url http://vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx.s3.ap-northeast-1.vpce.amazonaws.com
2022-11-26 06:28:36 sample-bucket-of-s3-through-private-network
Route 53 Private Hosted Zone
Route 53 Private Hosted Zone 作成
次のコマンドを実行して、 Route 53 private hosted zone を作成してください。
$ aws route53 create-hosted-zone \
--name s3.$YOUR_REGION.amazonaws.com \
--vpc VPCRegion=$YOUR_REGION,VPCId=$YOUR_VPC_ID \
--caller-reference "$(date)"
DNS Record 追加
以下を参考に、 A (ALIAS)
レコードを追加してください。
Create record
をクリックしてください。
Record type
で A
を選択し、 Route traffic to
で Alias to VPC endpoint
を指定してください。
—endpoint-url なしで S3 にアクセス
以下のコマンドを実行して、 --endpoint-url
オプションなしで S3 にアクセスできることを確認してください。
--region
オプションは指定する必要があります。 aws s3 ls --region ap-northeast-1
2022-11-26 06:28:36 sample-bucket-of-s3-through-private-network
まとめ
ゲートウェイ型ではなくインターフェース型を利用するユースケースの一例としては、オンプレミスと VPC を接続していて、オンプレミスから S3 に接続したい場合が挙げられます。
この投稿が、お役に立てば幸いです。