S3 Express One ZoneをVPCエンドポイント経由で利用してみた

S3 Express One Zone用に新たに追加された Gateway型のVPCエンドポイントを利用して、S3 Express One ZoneのS3操作を試してみました。
2023.12.13

re:Invent2023 で発表されたS3の新しいストレージクラス、「Amazon S3 Express One Zone」

VPCエンドポイント(Gateway型)経由の利用を試す機会がありましたので、紹介させて頂きます。

VPC

検証用のVPCを、VPCウィザードを利用して作成しました。

VPC作成1AZ

  • リージョン: 東京
  • 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エンドポイントの追加をお試し下さい。