为 S3 兼容存储配置外部卷

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

要为 S3 兼容存储创建外部卷,您可以 使用 SQL使用 Snowsight

先决条件

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

Create an external volume for S3-compatible storage by using SQL

创建一个外部卷,指定一个与 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'
    )
  );
Copy

Create an external volume for S3-compatible storage by using Snowsight

  1. 登录 Snowsight

  2. 在左下角,选择您的姓名 » Switch role,然后选择 ACCOUNTADMIN 或具有 CREATE EXTERNAL VOLUME 权限的角色。

    有关更多信息,请参阅 切换您的主要角色

  3. 在导航菜单中,选择 Catalog » External data

  4. 选择 External volumes 选项卡。

  5. 选择 + Create

  6. 选择 S3 compatible storage

  7. 选择 Next

  8. 在 S3 兼容存储提供商中,创建具有访问桶和获取对象所需权限的访问密钥凭据。

    有关更多信息,请参阅 与 S3 兼容的存储的要求

  9. 选择 Next

  10. 要配置外部卷,请在 Configure external volume 页面中填写字段:

    字段

    描述

    External volume name

    输入外部卷的名称。

    Storage endpoint

    指定指向兼容 S3 的 API 端点的完全限定域名。

    备注

    存储端点不应包括桶名;例如,指定 example.com,而不是 my_bucket.example.com

    AWS key ID

    指定用于连接和访问 S3 兼容存储位置的 AWS 键 ID。

    AWS secret key

    指定用于连接和访问 S3 兼容存储位置的 AWS 密钥键。

    Access scope

    指定是否允许对外部卷执行写入操作;对于以下表,必须将此参数设置为 Allow writes

    • 使用 Snowflake 作为目录的 Iceberg 表。

    • 使用外部目录且可写入的 Iceberg 表。当您通过已将 ALLOWED_WRITE_OPERATIONS 参数设置为 TRUE 的目录关联数据库访问外部管理的 Iceberg 表时,这些表支持写入操作。

    对于从 Delta 表文件创建的 Iceberg 表,通过将此参数设置为 Allow writes,Snowflake 能将 Iceberg 元数据写入到外部存储。有关更多信息,请参阅 基于 Delta 的表

    此字段的值还必须与您对每个指定存储位置的云存储账户设置的权限相匹配。

    备注

    如果计划将外部卷用于读取外部管理的 Iceberg 表,则可以将此字段设置为 Off。当读取外部 Iceberg 目录中的表时,Snowflake 不会将数据或 Iceberg 元数据文件写入云存储。

    Scope

    选择此外部卷应在未来 Iceberg 表中作为默认位置的范围。可能的值:

    • Do not set a default:选择使用 时默认使用的角色和仓库。不在任何地方都将外部卷设置为默认值。

    • Account:选择使用 时默认使用的角色和仓库。将外部卷设置为在整个账户下创建的 Iceberg 表的默认卷。

    • Specific database:选择使用 时默认使用的角色和仓库。将外部卷设置为在指定数据库下创建的 Iceberg 表的默认值。要指定此数据库,请使用在选择 Specific database 时出现的 Database 下拉菜单。

    • Specific schema:选择使用 时默认使用的角色和仓库。将外部卷设置为在您指定的架构下创建的 Iceberg 表的默认值。要指定此架构,请使用显示的 Database 下拉列表,首先选择架构的父数据库,然后选择架构。

    Comment

    指定外部卷的注释。

    Storage base URL

    指定云存储位置的基本 URL。

  11. 选择 Next

    Verify connection & create volume 页面上,Snowflake 会验证您与 S3 兼容存储的连接,然后显示“Successfully connected”消息。

    备注

    如果 Snowflake 无法验证您的连接,请检查您的权限或外部卷配置,然后选择 Verify again

  12. 选择 Create

更新您的外部卷凭据

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