对象存储配置¶
Lance支持多种对象存储服务,如AWS S3(及兼容存储)、Azure Blob存储和Google云存储。具体使用哪种对象存储取决于数据集路径的URI方案。例如,s3://bucket/path将使用S3,az://bucket/path将使用Azure,而gs://bucket/path将使用GCS。
在版本0.10.7中新增:直接传递选项到存储选项。
这些对象存储需要额外的配置对象。有两种方式来指定这些配置:通过设置环境变量,或者将它们传递给lance.dataset()和lance.write_dataset()的storage_options参数。例如,要在全局设置更高的超时时间,可以在shell中运行:
export TIMEOUT=60s
如果只想为单个数据集设置超时时间,可以将其作为存储选项传入:
import lance
ds = lance.dataset("s3://path", storage_options={"timeout": "60s"})
通用配置¶
这些选项适用于所有对象存储。
键 |
描述 |
|---|---|
|
允许非TLS连接,即非HTTPS连接。默认为 |
|
下载重试次数。默认为 |
|
跳过HTTPS连接的证书验证。默认值为 |
|
仅针对客户端连接阶段的超时设置。默认值为 |
|
整个请求的超时时间,从连接到响应体完成。默认值为 |
|
在请求中使用的用户代理字符串。 |
|
用于请求的代理服务器URL。默认为 |
|
用于代理连接的PEM格式CA证书 |
|
绕过代理的主机列表。这是一个用逗号分隔的域名和IP掩码列表。提供的域名的任何子域名都将被绕过。例如, |
|
S3客户端请求重试次数。默认值为 |
|
S3客户端重试请求的超时时间(秒)。默认值为 |
S3配置¶
S3(及兼容S3的存储服务)提供额外的配置选项,用于设置授权和S3特有功能(如服务器端加密)。
AWS凭证可以通过环境变量AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和AWS_SESSION_TOKEN来设置。或者,也可以将它们作为参数传递给storage_options参数:
import lance
ds = lance.dataset(
"s3://bucket/path",
storage_options={
"access_key_id": "my-access-key",
"secret_access_key": "my-secret-key",
"session_token": "my-session-token",
}
)
如果您使用AWS SSO,可以指定AWS_PROFILE环境变量。
但不能在storage_options参数中指定。
以下键名既可用作环境变量,也可作为storage_options参数中的键值:
键 |
描述 |
|---|---|
|
存储桶所在的AWS区域。使用AWS S3时可自动检测,但对于S3兼容存储必须手动指定。 |
|
要使用的AWS访问密钥ID。 |
|
使用的AWS秘密访问密钥。 |
|
要使用的AWS会话令牌。 |
|
S3兼容存储服务所使用的端点。 |
|
是否使用虚拟托管式请求,其中存储桶名称是端点的一部分。旨在与 |
|
是否使用S3 Express One Zone终端节点。默认为 |
|
使用的服务器端加密算法。必须是以下之一: |
|
用于服务器端加密的KMS密钥ID。如果设置此项,
|
|
是否使用存储桶密钥进行服务器端加密。 |
兼容S3的存储¶
Lance也可以连接到S3兼容的存储服务,例如MinIO。为此,您必须同时指定区域和端点:
import lance
ds = lance.dataset(
"s3://bucket/path",
storage_options={
"region": "us-east-1",
"endpoint": "http://minio:9000",
}
)
这也可以通过设置环境变量 AWS_ENDPOINT 和 AWS_DEFAULT_REGION 来实现。
S3 Express¶
在0.9.7版本中添加。
Lance支持S3 Express One Zone端点,但需要额外配置。此外, S3 Express端点仅支持从同一区域的EC2实例进行连接
要配置Lance使用S3 Express终端节点,您必须设置存储选项s3_express。表URI中的存储桶名称必须包含后缀。
import lance
ds = lance.dataset(
"s3://my-bucket--use1-az4--x-s3/path/imagenet.lance",
storage_options={
"region": "us-east-1",
"s3_express": "true",
}
)
Google云存储配置¶
GCS凭据通过将GOOGLE_SERVICE_ACCOUNT环境变量设置为包含服务账号凭据的JSON文件路径来配置。
或者,您可以在storage_options中传递JSON文件的路径。
import lance
ds = lance.dataset(
"gs://my-bucket/my-dataset",
storage_options={
"service_account": "path/to/service-account.json",
}
)
注意
默认情况下,GCS使用HTTP/1进行通信,而不是HTTP/2。这能显著提高最大吞吐量。不过,如果您出于某些原因希望使用HTTP/2,可以将环境变量HTTP1_ONLY设置为false。
以下键名既可用作环境变量,也可作为storage_options参数中的键值:
键 |
描述 |
|---|---|
|
服务账户JSON文件的路径。 |
|
序列化的服务账号密钥。 |
|
应用程序凭据的路径。 |
Azure Blob存储配置¶
可以通过设置AZURE_STORAGE_ACCOUNT_NAME和AZURE_STORAGE_ACCOUNT_KEY环境变量来配置Azure Blob存储凭据。或者,您可以在storage_options参数中传递账户名称和密钥:
import lance
ds = lance.dataset(
"az://my-container/my-dataset",
storage_options={
"account_name": "some-account",
"account_key": "some-key",
}
)
这些密钥既可用作环境变量,也可用作storage_options参数中的键值:
键 |
描述 |
|---|---|
|
Azure存储账户的名称。 |
|
序列化的服务账号密钥。 |
|
用于授权请求的服务主体客户端ID。 |
|
用于授权请求的服务主体客户端密钥。 |
|
用于OAuth流程的租户ID。 |
|
共享访问签名。签名需要进行百分比编码,类似于在Azure存储资源管理器或Azure门户中提供的方式。 |
|
Bearer令牌。 |
|
使用azurite存储模拟器与对象存储。 |
|
覆盖用于与blob存储通信的端点。 |
|
使用带有URL方案account.dfs.fabric.microsoft.com的对象存储。 |
|
用于请求IMDS托管身份令牌的端点。 |
|
用于托管身份认证的对象ID。 |
|
用于托管身份验证的Msi资源ID。 |
|
包含Azure AD工作负载身份联合令牌的文件。 |
|
使用Azure CLI获取访问令牌。 |
|
禁用对象标记功能。如果底层存储不支持此功能,禁用可能更为合适。 |