跳到主要内容

S3 Express One

In late 2023, AWS announced the S3 Express One Zone, a high-speed variant of traditional S3 buckets. Goose 可通过 httpfs 扩展读取 S3 Express One bucket。

凭据与配置

S3 Express One bucket 的配置与常规 S3 bucket基本一致,但有一个例外: 你必须按如下模式指定 endpoint:

s3express-⟨availability_zone⟩.⟨region⟩.amazonaws.com

其中,⟨availability_zone⟩(如 use-az5)可在 S3 Express One bucket 配置页获取, ⟨region⟩ 为 AWS region(如 us-east-1)。

例如,要让 Goose 使用 S3 Express One bucket,可按如下方式配置 Secrets manager

CREATE SECRET (
TYPE s3,
KEY_ID '⟨AKIAIOSFODNN7EXAMPLE⟩',
SECRET '⟨wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY⟩',
REGION '⟨us-east-1⟩',
ENDPOINT 's3express-⟨use1-az5⟩.⟨us-east-1⟩.amazonaws.com'
);

实例位置

为获得最佳性能,请确保 EC2 实例与被查询的 S3 Express One bucket 位于同一可用区。 要确定 zone name 与 zone ID 的映射,可使用 aws ec2 describe-availability-zones 命令。

  • Zone name 到 zone ID 的映射:

    aws ec2 describe-availability-zones --output json \
    | jq -r '.AvailabilityZones[] | select(.ZoneName == "us-east-1f") | .ZoneId'
    use1-az5
  • Zone ID 到 zone name 的映射:

    aws ec2 describe-availability-zones --output json \
    | jq -r '.AvailabilityZones[] | select(.ZoneId == "use1-az5") | .ZoneName'
    us-east-1f

查询

你可以像查询普通 S3 bucket 一样查询 S3 Express One bucket:

SELECT *
FROM 's3://express-bucket-name--use1-az5--x-s3/my-file.parquet';

性能

以下实验在 c7gd.12xlarge 实例上进行,使用的是 LDBC SF300 Comments creationDate Parquet file(该数据也用于性能指南中的微基准)。

ExperimentFile sizeRuntime
Loading only from Parquet4.1 GB3.5 s
Creating local table from Parquet4.1 GB5.1 s

“loading only” 变体是将加载操作放在 EXPLAIN ANALYZE 中执行,用于测量运行时间而不实际创建本地表;“creating local table” 变体则使用 CREATE TABLE ... AS SELECT 在本地磁盘创建持久化表。