re:Invent2023 で発表されたS3の新しいストレージクラス、「Amazon S3 Express One Zone」
VPCエンドポイント(Gateway型)経由の利用を試す機会がありましたので、紹介させて頂きます。
VPC
検証用のVPCを、VPCウィザードを利用して作成しました。
- リージョン: 東京
- AZ数: 1
- パブリックサブネット、プライベートサブネット: それぞれ「1」
- NAT ゲートウェイ : 「なし」
- VPC エンドポイント: 「S3ゲートウェイ」
エンドポイント
サービス 「com.amazonaws.ap-northeast-1.s3express」 の VPCエンドポイント (Gateway型)を作成。
検証用VPCのプライベートサブネットのルートテーブルに関連付けを行いました。
EC2
検証用VPCのプライベートサブネットに、 AmazonLinux2023のEC2を検証環境として起動しました。
S3 Express One Zoneの S3を利用するため、awscliは最新バージョンに更新しました。
sudo dnf remove awscli -y
unzip awscliv2.zip
sudo ./aws/install
sudo ln -s /usr/local/bin/aws /usr/bin/aws
$ aws --version
aws-cli/2.15.0 Python/3.11.6 Linux/6.1.61-85.141.amzn2023.aarch64 exe/aarch64.amzn.2023 prompt/off
動作確認
東京リージョンに設置した S3 Express One Zone のS3バケットの 操作を試みました。
list-objects-v2
$ aws s3api list-objects-v2 --bucket s3-exp-00000000--apne1-az4--x-s3 --debug
2023-12-12 16:04:37,480 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/2.15.0 Python/3.11.6 Linux/6.1.61-85.141.amzn2023.aarch64 exe/aarch64.amzn.2023
2023-12-12 16:04:37,480 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['s3api', 'list-objects-v2', '--bucket', 's3-exp-00000000--apne1-az4--x-s3', '--debug']
(略)
2023-12-12 16:04:37,613 - MainThread - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): s3-exp-00000000--apne1-az4--x-s3.s3express-apne1-az4.ap-northeast-1.amazonaws.com:443
2023-12-12 16:04:37,740 - MainThread - urllib3.connectionpool - DEBUG - https://s3-exp-00000000--apne1-az4--x-s3.s3express-apne1-az4.ap-northeast-1.amazonaws.com:443 "GET /?session HTTP/1.1" 200 1131
2023-12-12 16:04:37,740 - MainThread - botocore.parsers - DEBUG - Response headers: {'server': 'AmazonS3', 'x-amz-request-id': '0000', 'x-amz-id-2': 'jAseKebBe99c', 'content-type': 'application/xml', 'content-length': '1131', 'date': 'Tue, 12 Dec 2023 16:04:37 GMT'}
(略)
{
"Contents": [
{
"Key": "awscliv2.zip",
"LastModified": "2023-12-12T15:50:05+00:00",
"ETag": "\"000000000\"",
"ChecksumAlgorithm": [
"CRC32"
],
"Size": 58138730,
"StorageClass": "EXPRESS_ONEZONE"
}
],
"RequestCharged": null
}
cp
高レベルコマンドも利用可能でした。
$ aws s3 cp s3://s3-exp-00000000--apne1-az4--x-s3/awscliv2.zip .
download: s3://s3-exp-00000000--apne1-az4--x-s3/awscliv2.zip to ./awscliv2.zip
$ aws s3 cp awscliv2.zip s3://s3-exp-00000000--apne1-az4--x-s3/
upload: ./awscliv2.zip to s3://s3-exp-00000000--apne1-az4--x-s3/awscliv2.zip
VPCエンドポイントなし
サービス 「com.amazonaws.ap-northeast-1.s3express」 の VPCエンドポイントのルーティングを無効化すると、 プライベートサブネットのEC2から、S3 Express One Zone のS3は利用不能になりました。
2023-12-12 **:**:**,*** - ThreadPoolExecutor-0_0 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): s3-exp-00000000--apne1-az4--x-s3.s3express-apne1-az4.ap-northeast-1.amazonaws.com:443
まとめ
VPCエンドポイント経由で S3 Express One Zone を利用するためには、「s3express」 用のGateway型のエンドポイントを従来のS3とは別に作成する必要があります。
プライベートサブネット内のリソースから S3 Express One Zone を利用する場合、 NAT Gateway経由の通信が発生を回避するため、「s3express」用のVPCエンドポイントの追加をお試し下さい。