为 S3 兼容存储配置外部卷¶
对于数据和元数据存储在 S3 兼容存储中的 外部管理的 Iceberg 表,您可以配置与 Amazon S3 兼容存储 位置相关联的外部卷。
使用与 S3 兼容的存储的 Iceberg 表是 跨区域表,并且不支持以下操作:
将 Snowflake 作为 Iceberg 目录 或将表转换为使用 Snowflake 作为 Iceberg 目录。
使用 SYSTEM$GET_ICEBERG_TABLE_INFORMATION 函数获取有关最新刷新快照的信息。
先决条件¶
要创建一个使用 S3 兼容存储的 Iceberg 表,您必须为 Snowflake配置一个 S3 兼容的 API 端点。有关更多信息,请参阅 与 S3 兼容的存储的要求。
为 S3 兼容存储创建外部卷¶
以下步骤演示如何为 S3 兼容存储配置外部卷,以及如何使用该卷创建外部管理的 Iceberg 表。
创建一个外部卷,指定一个与 S3 兼容的存储位置。有关 CREATE EXTERNAL VOLUME 命令中与 S3 兼容的参数的信息,请参阅 :ref:` 命令语法 <label-iceberg_external_volume_s3_compatible_syntax>`。
CREATE OR REPLACE EXTERNAL VOLUME ext_vol_s3_compat STORAGE_LOCATIONS = ( ( NAME = 'my_s3_compat_storage_location' STORAGE_PROVIDER = 'S3COMPAT' STORAGE_BASE_URL = 's3compat://mybucket/unload/mys3compatdata' CREDENTIALS = ( AWS_KEY_ID = '1a2b3c...' AWS_SECRET_KEY = '4x5y6z...' ) STORAGE_ENDPOINT = 'mystorage.com' ) ) ALLOW_WRITES = FALSE;
如果您没有 目录集成,请为您的 Iceberg 表创建一个。仅当您使用目录集成时,才支持使用 S3 兼容存储的 Iceberg 表。有关更多信息,请参阅 创建目录集成。
以下示例展示了如何为对象存储中的 Iceberg 文件创建目录集成。
CREATE OR REPLACE CATALOG INTEGRATION my_iceberg_catalog_int CATALOG_SOURCE = OBJECT_STORE TABLE_FORMAT = ICEBERG ENABLED = TRUE;
使用外部卷和目录集成来创建 Iceberg 表。
例如:
CREATE ICEBERG TABLE my_iceberg_table EXTERNAL_VOLUME = 'ext_vol_s3_compat' CATALOG = 'my_iceberg_catalog_int' METADATA_FILE_PATH = 'path/to/metadata/v1.metadata.json';
更新您的外部卷凭据¶
要更改或更新外部卷凭据,您可以使用 ALTER EXTERNAL VOLUME ...UPDATE 命令来暂停。指定您要更改凭据的存储位置的名称。
ALTER EXTERNAL VOLUME ext_vol_s3_compat UPDATE
STORAGE_LOCATION = 'my_s3_compat_storage_location'
CREDENTIALS = (
AWS_KEY_ID = '4d5e6f...'
AWS_SECRET_KEY = '7g8h9i...'
);