为 S3 兼容存储配置外部卷

对于数据和元数据存储在 S3 兼容存储中的 外部管理的 Iceberg 表,您可以配置与 Amazon S3 兼容存储 位置相关联的外部卷。

使用与 S3 兼容的存储的 Iceberg 表是 跨区域表,并且不支持以下操作:

先决条件

要创建一个使用 S3 兼容存储的 Iceberg 表,您必须为 Snowflake配置一个 S3 兼容的 API 端点。有关更多信息,请参阅 与 S3 兼容的存储的要求

为 S3 兼容存储创建外部卷

以下步骤演示如何为 S3 兼容存储配置外部卷,以及如何使用该卷创建外部管理的 Iceberg 表。

  1. 创建一个外部卷,指定一个与 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;
    
    Copy
  2. 如果您没有 目录集成,请为您的 Iceberg 表创建一个。仅当您使用目录集成时,才支持使用 S3 兼容存储的 Iceberg 表。有关更多信息,请参阅 创建目录集成

    以下示例展示了如何为对象存储中的 Iceberg 文件创建目录集成。

    CREATE OR REPLACE CATALOG INTEGRATION my_iceberg_catalog_int
      CATALOG_SOURCE = OBJECT_STORE
      TABLE_FORMAT = ICEBERG
      ENABLED = TRUE;
    
    Copy
  3. 使用外部卷和目录集成来创建 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';
    
    Copy

更新您的外部卷凭据

要更改或更新外部卷凭据,您可以使用 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...'
  );
Copy
语言: 中文