S3 参数

使用以下参数,配置使用 COPY 从 S3 文件系统和具有 S3 兼容 API 的本地存储进行读取。有关从 S3 读取数据的更多信息,请参阅 S3 对象存储

查询 CONFIGURATION_PARAMETERS 系统表以确定哪些级别(节点、会话、用户、数据库)对给定参数有效。
AWSAuth
用于身份验证的 ID 和密钥。为了获得更高的安全性,请不要将凭据存储在数据库中;应当使用 ALTER SESSION...SET PARAMETER 仅为当前会话设置此值。如果您使用共享凭据,您可以通过 ALTER DATABASE...SET PARAMETER 在数据库中设置。例如:
=> ALTER SESSION SET AWSAuth='ID:secret';

在 AWS 中,这些实参被命名为 AccessKeyID 和 SecretAccessKey。

要将管理工具 create_dbrevive_db 用于本地 Eon 模式,请使用以下设置创建一个名为 auth_params.conf 的配置文件:

AWSAuth = key:secret
  AWSEndpoint = IP:port
AWSCAFile
要使用的 TLS 服务器证书捆绑包的文件名。设置此参数会覆盖 SystemCABundlePath 参数中指定的 Vertica 默认 CA 捆绑包路径。 如果设置,此参数将覆盖 SystemCABundlePath 参数中指定的 Vertica 默认 CA 包路径。
=> ALTER DATABASE DEFAULT SET AWSCAFile = '/etc/ssl/ca-bundle.pem';

默认值: system-dependent

AWSCAPath
Vertica 用于查找 TLS 服务器证书的路径。要使用的 TLS 服务器证书捆绑包的文件名。 如果设置,此参数将覆盖 SystemCABundlePath 参数中指定的 Vertica 默认 CA 包路径。
=> ALTER DATABASE DEFAULT SET AWSCAPath = '/etc/ssl/';

默认值: system-dependent

AWSEnableHttps
布尔值,指定连接 S3 时是否使用 HTTPS 协议,只能在数据库级别用 ALTER DATABASE...SET PARAMETER 设置。如果选择不使用 TLS,则该参数必须设置为 0。

默认值: 1(启用)

AWSEndpoint
解释 S3 URL 时使用的端点,设置如下。
  • AWS:hostname_or_ip:port_number

  • 具有符合 FIPS 规范的 S3 端点的 AWS:S3_hostname 并启用虚拟寻址:

    AWSEndpoint = s3-fips.dualstack.us-east-1.amazonaws.com
    S3EnableVirtualAddressing = 1
    
  • 本地/Pure:Pure Storage 服务器的 IP 地址。如果使用管理工具 create_dbrevive_db,请创建配置文件 auth_params.conf 并包含以下设置:

    awsauth = key:secret
          awsendpoint = IP:port
    
  • 如果未设置 AWSEndpoint,则默认行为是使用虚拟托管的请求 URL。

默认值: s3.amazonaws.com

AWSLogLevel
日志级别,可以是以下值之一:
  • OFF

  • FATAL

  • ERROR

  • WARN

  • INFO

  • DEBUG

  • TRACE

默认值: ERROR

AWSRegion
AWS 区域,包含要从中读取文件的 S3 存储桶。此参数一次只能配置一个区域。如果您需要在多个区域中访问存储桶,则应在每次更改区域时更改参数。

如果您没有设置正确的区域,您可能会在查询失败之前遇到延迟,因为 Vertica 在放弃之前会进行多次重试。

默认值: us-east-1

AWSSessionToken
通过运行 get-session-token 命令生成的临时安全令牌,可生成可用于配置多重身份验证的临时凭据。

使用 ALTER SESSION 在用户会话中设置此参数。您可以在数据库级别设置此参数,但请注意会话令牌是临时的。令牌过期时,任何访问 AWS 的尝试都会失败。

AWSStreamingConnectionPercentage
控制 Vertica 用于流式读取的公共存储的连接数。在云环境中,此设置有助于防止来自公共存储的流式数据传输耗尽所有可用的文件句柄。它将为其他公共存储操作留下一些可用的文件句柄。

由于本地对象存储是低延迟的,因此对于使用本地公共存储的 Eon 模式数据库,无需此选项。在这种情况下,通过将其设置为 0 来禁用该参数。

S3BucketConfig
包含作为具有以下属性的 JSON 对象的 S3 存储桶配置信息。除了存储桶名称之外的每个属性都有一个相应的配置参数(显示在括号中)。如果同时设置了 S3BucketConfig 中的属性和配置参数,则 S3BucketConfig 属性优先。

属性:

  • bucket:存储桶的名称

  • region (AWSRegion):区域的名称

  • protocol (AWSEnableHttps):连接协议,httphttps

  • endpoint (AWSEndpoint):端点 URL 或 IP 地址

  • enableVirtualAddressing (S3BucketCredentials):是否重写 S3 URL 以使用虚拟托管路径

  • requesterPays (S3RequesterPays):请求者(而不是存储桶所有者)是否支付访问存储桶数据的费用

  • serverSideEncryption (S3ServerSideEncryption):使用 SSE-S3 或 SSE-KMS、AES256aws:kms 或空字符串之一时的加密算法

  • sseCustomerAlgorithm (S3SseCustomerAlgorithm):使用 SSE-C 时的加密算法;必须是 AES256

  • sseCustomerKey (S3SseCustomerKey):使用 SSE-C 加密(32 字符纯文本或 44 字符 base64 编码)时的键

  • sseKmsKeyId (S3SseKmsKeyId):使用 SSE-KMS 加密时的键 ID

给定存储桶的配置属性可能因其类型而异。例如,以下 S3BucketConfig 用于 AWS 存储桶 AWSBucket 和 Pure Storage 存储桶 PureStorageBucketAWSBucket 没有指定端点,因此 Vertica 使用 AWSEndpoint 的值,其默认为 s3.amazonaws.com

ALTER DATABASE DEFAULT SET S3BucketConfig=
'[
    {
        "bucket": "AWSBucket",
        "region": "us-east-2",
        "protocol": "https",
        "requesterPays": true
    },
    {
        "bucket": "PureStorageBucket",
        "endpoint": "pure.mycorp.net:1234",
        "protocol": "http",
        "enableVirtualAddressing": false
    }
]';
S3BucketCredentials
包含用于访问 S3 存储桶的凭据。S3BucketCredentials 中的每个属性都有一个等效参数(显示在括号中)。设置后,S3BucketCredentials 优先于 AWSAuth 和 AWSSessionToken。

为多个存储桶提供凭据可以同时对它们进行身份验证,从而允许执行跨端点联接、从一个存储桶导出到另一个存储桶等。

属性:

  • bucket:存储桶的名称

  • accessKey:存储桶的访问密钥(AWSAuth 中的 ID

  • secretAccessKey:存储桶的私密访问密钥(AWSAuth 中的 secret

  • sessionToken:会话令牌,仅在会话级别设置 S3BucketCredentials 时使用 (AWSSessionToken)

例如,以下 S3BucketCredentials 用于 AWS 存储桶 AWSBucket 和 Pure Storage 存储桶 PureStorageBucket 并设置所有可能的属性:

ALTER SESSION SET S3BucketCredentials='
[
    {
        "bucket": "AWSBucket",
        "accessKey": "<AK0>",
        "secretAccessKey": "<SAK0>",
        "sessionToken": "1234567890"
    },
    {
        "bucket": "PureStorageBucket",
        "accessKey": "<AK1>",
        "secretAccessKey": "<SAK1>"
    }
]';

此参数仅对超级用户可见。用户可以使用 ALTER SESSION 在会话级别设置此参数。

S3EnableVirtualAddressing
布尔值,指定是否重写 S3 URL 以使用虚拟托管路径。例如,如果您使用 AWS,S3 URL 将更改为 bucketname.s3.amazonaws.com 而不是 s3.amazonaws.com/bucketname。此配置设置仅在您为 AWSEndpoint 指定值时生效。

如果您将 AWSEndpoint 设置为符合 FIPS 规范的 S3 端点,则必须在 auth_params.conf 中启用 S3EnableVirtualAddressing:

AWSEndpoint = s3-fips.dualstack.us-east-1.amazonaws.com
S3EnableVirtualAddressing = 1

此参数的值不会影响指定 S3 路径的方式。

默认值: 0(禁用)

S3RequesterPays
布尔值,指定请求者(而不是存储桶所有者)是否支付访问存储桶数据的费用。此值为 true 时,存储桶所有者只负责支付存储数据的费用,而不负责与存储桶相关的所有费用;必须设置后才能访问配置为“请求者付款”存储桶的 S3 存储桶。通过将此属性设置为 true,您将接受访问数据的费用。如果未指定,则默认值为 false。
S3ServerSideEncryption
字符串,读取或写入 S3 时使用的加密算法。该值取决于为 S3 配置的静态加密类型:
  • AES256:用于 SSE-S3 加密

  • aws:kms:用于 SSE-KMS 加密

  • 空字符串 (""):无加密

SSE-C 加密不使用此参数。请参阅 S3SseCustomerAlgorithm。

有关使用 SSE 参数的详细信息,请参阅 S3 对象存储

默认值: ""(无加密)

S3SseCustomerAlgorithm
字符串,使用 SSE-C 加密读取或写入 S3 时使用的加密算法。支持的值仅包括 AES256""

对于 SSE-S3 和 SSE-KMS,请改用 S3ServerSideEncryption。

默认值: ""(无加密)

S3SseCustomerKey
如果使用 SSE-C 加密,则为 S3 访问的客户端密钥。
S3SseKmsKeyId
如果使用 SSE-KMS 加密,则将密钥标识符(不是密钥)传递给密钥管理服务器。Vertica 必须有权使用通过 KMS 管理的密钥。