配置外部卷

外部卷是一个命名的账户级 Snowflake 对象,用于将 Snowflake 连接到 Iceberg 表的外部云存储。外部卷存储您的存储位置的身份和访问管理 (IAM) 实体。Snowflake 使用 IAM 实体安全地连接到存储,以访问表数据、Iceberg 元数据以及存储表架构、分区和其他元数据的清单文件。

单个外部卷可以支持一个或多个 Iceberg 表。

必须先创建外部卷,然后才能在 Snowflake 中创建 Apache Iceberg™ 表。

创建外部卷

创建外部卷的步骤取决于云存储提供商。

有关说明,请参阅以下主题:

每个外部卷都与特定 活动存储位置 相关联,单个外部卷可以支持多个 Iceberg 表。但是,所需的外部卷数量取决于您要如何存储、组织和保护表数据。

如果您想将 Snowflake-Iceberg 表的 所有 数据和元数据放在同一存储位置下的子目录中(例如,在同一 S3 桶中),则可以使用单个外部卷。要为 Snowflake 管理的表配置这些目录,请参阅 数据和元数据目录

或者,您可以创建多个外部卷以不同的方式保护不同的存储位置。例如,您可以创建以下外部卷:

  • 外部管理的 Iceberg 表的只读外部卷。

  • 配置为具有 Snowflake 管理的表具有读写权限的外部卷。

验证外部卷

验证外部卷,以检查 Snowflake 是否可以使用您配置的外部卷成功向存储提供商进行身份验证。您可以使用 SQL 或 Snowsight 验证外部卷。

使用 SQL

要使用 SQL 验证外部卷,请调用 SYSTEM$VERIFY_EXTERNAL_VOLUME 函数。

指定要验证的外部卷的名称。

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Copy

使用 Snowsight

要使用 Snowsight 验证外部卷,请按照以下步骤操作:

  1. 登录 Snowsight

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

  3. 选择 External volumes 选项卡。

  4. 选择要验证其连接的外部卷。

  5. 选择 ... » Verify connection

在账户、数据库或架构级别设置默认外部卷

您可以 设置现有外部卷 作为默认卷,也可以在创建时 设置新的外部卷 作为默认卷。

将现有外部卷设置为默认卷

要将用于 Iceberg 表的现有外部卷设置为默认卷,可以在以下级别设置 EXTERNAL_VOLUME 参数:

账户:

账户管理员可以使用 ALTER ACCOUNT 命令设置账户的参数。如果为账户设置了该值,则默认情况下在账户中创建的所有 Iceberg 表都会读取和写入此外部卷。

对象:

用户可以执行适当的 CREATE <object>ALTER <object> 命令,以在数据库或架构级别上替换 EXTERNAL_VOLUME 参数值。系统会使用适用范围级别最低的声明:架构 > 数据库 > 账户。

除使用适当的 ALTER <object_type> 命令修改对象所需的最小权限之外,角色还必须拥有外部卷上的 USAGE 权限。

备注

  • 对 EXTERNAL_VOLUME 参数的更改仅适用于更改 之后 创建的表。现有表将继续使用创建时指定的外部卷。

  • 或者,您可以在创建外部卷时,使用 Snowsight 在账户、数据库或架构级别设置默认外部卷。

示例

以下语句为名为 my_database_1 的数据库设置外部卷 (my_s3_vol):

ALTER DATABASE my_database_1
  SET EXTERNAL_VOLUME = 'my_s3_vol';
Copy

在数据库级别设置外部卷后,可以在该数据库中创建 Iceberg 表,而无需指定外部卷。以下语句会在 my_database_1 中创建 Iceberg 表,该表使用 Snowflake 作为目录,并使用为数据库设置的默认外部卷 (my_s3_vol)。

CREATE ICEBERG TABLE iceberg_reviews_table (
  id STRING,
  product_name STRING,
  product_id STRING,
  reviewer_name STRING,
  review_date DATE,
  review STRING
)
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my/product_reviews/';
Copy

将新的外部卷设置为默认卷

要将新的外部卷设置为用于 Iceberg 表的默认卷,则在 Snowsight 中创建外部卷时,使用配置设置中的 Scope 字段在账户、数据库或架构级别将外部卷设置为默认卷。

有关如何在 Snowsight 中创建外部卷的说明,请参阅以下部分:

使用 Snowsight 为外部卷授予 USAGE 权限

USAGE 权限授予引用外部卷以及查看外部卷详细信息的能力。有关更多信息,请参阅 外部卷权限

要使用 Snowsight 向外部卷授予 USAGE 权限,请按照以下步骤操作:

  1. 登录 Snowsight

  2. 切换到对您要向其授予 USAGE 权限的外部卷具有 OWNERSHIP 权限的角色。

    有关切换角色的说明,请参阅 切换您的主要角色。有关 OWNERSHIP 权限的更多信息,请参阅 外部卷权限

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

  4. 选择 External volumes 选项卡。

  5. 选择要被授予 USAGE 权限的外部卷。

  6. 选择 + Privilege

  7. Roles 字段中,选择要向其授予外部卷的 USAGE 权限的角色。

  8. Privileges 字段中,选择 USAGE

  9. 选择 Grant privileges

使用 Snowsight 添加存储位置

备注

要使用 SQL 将存储位置添加到外部卷,请使用 ALTER EXTERNAL VOLUME 命令的 ADD STORAGE_LOCATION 参数。

要使用 Snowsight 将命名的存储位置添加到外部卷,请按照以下步骤操作:

  1. 登录 Snowsight

  2. 切换到对您要向其添加存储位置的外部卷具有 OWNERSHIP 权限的角色。

    有关说明,请参阅 切换您的主要角色

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

  4. 选择 External volumes 选项卡。

  5. 选择要添加存储位置的外部卷。

  6. 选择 ... » Add storage location

  7. 选择云存储提供商,并指定要添加的存储位置的配置:

    1. 选择 Amazon S3 选项卡。

    2. 指定要添加的存储位置的配置:

      字段

      描述

      Location name

      输入其他存储位置的名称。

      Region type

      指定存储数据文件的云存储提供商。

      • Standard (default):选择使用 时默认使用的角色和仓库。中国境外公共 AWS 区域的 S3 存储。

      • Government (GovCloud):选择使用 时默认使用的角色和仓库。AWS 政府区域 中的 S3 存储。

      S3 role ARN

      为 ARN Identity and Access Management (AWS) 角色指定区分大小写的 Amazon 资源名称 (IAM),该角色授予对包含数据文件的 S3 桶的权限。

      您在 创建 IAM 角色 时记录了此值。

      Encryption (optional)

      指定使用的加密类型。可能的值:

      • None (default):选择使用 时默认使用的角色和仓库。无加密。

      • SSE-S3:选择使用 时默认使用的角色和仓库。使用 S3 托管式加密密钥进行服务器端加密。有关更多信息,请参阅 ` 使用具有 Amazon S3 托管式加密密钥的服务器端加密 (SSE-S3) <https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html (https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)>`_。

      • SSE-KMS (enter key):选择使用 时默认使用的角色和仓库。使用 KMS 中存储的密钥进行服务器端加密。有关更多信息,请参阅 ` 使用 AWS Key Management Service 进行服务器端加密 (SSE-KMS) <https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html (https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)>`_。

      Connectivity

      指定是否使用出站专用连接来加强安全态势。有关使用此参数的信息,请参阅 Amazon Web Services 外部存储卷的专用连接。可能的值:

      • Public (default):选择使用 时默认使用的角色和仓库。使用公共互联网。

      • Private (AWS PrivateLink):选择使用 时默认使用的角色和仓库。使用出站专用连接。

      Storage base URL

      指定其他存储位置的基本 URL。

  8. 选择 Add storage location