使用 Snowflake REST APIs 指定 Snowflake 上下文¶
在向 Snowflake REST APIs 发起请求时,您可以指定 Snowflake 上下文的各个方面。
通过请求标头,您可以在 REST API 调用上下文中指定以下内容:
用于通过
X-Snowflake-Role标头授权请求的 Snowflake 角色。用于通过
X-Snowflake-Warehouse标头执行请求的 Snowflake 仓库。
这些标头无需依赖用户的默认设置,即可让每次调用变得明确、独立且可审计。您可以保证每次请求都使用正确的角色和仓库,而无需额外调用 API 来设置上下文。
通过在发起 REST API 请求时指定上下文,您可以完成以下操作:
运行无状态调用。
保证调用使用指定角色,而无需先单独调用 API 来设置会话上下文。
避免修改用户设置。
可根据每次请求安全切换角色,而不是运行 ALTER USER ... SET DEFAULT_ROLE=...,因为那样既慢又会影响该用户的其他所有会话。
启用按需计算能力。
允许没有默认仓库的用户或服务账户,只需提供
X-Snowflake-Warehouse标头即可运行查询或创建存储过程。简化用户管理。
使用授予多个角色的一个服务用户。例如,READER 和 WRITER。然后,您的应用程序发送
X-Snowflake-Role标头,为特定任务选择合适的权限。通过这种方式,您可以避免管理多个单角色用户。
优先级¶
如果提供了标头,其优先级高于用户的默认设置,顺序如下:
使用标头(如果提供)。
否则,使用会话的默认角色或默认仓库。
如果在需要时两者都不可用,则调用失败。
指定语句执行所使用的仓库¶
您可以通过 X-Snowflake-Warehouse 标头指定执行语句时使用的仓库。此类语句包括执行存储过程、创建 Python 函数,以及执行需要计算资源的查询。
要求¶
当前生效的角色必须在该仓库上拥有 USAGE 权限。
如果未设置默认仓库且省略此标头,则依赖仓库的调用将失败。
示例¶
以下示例演示如何创建一个使用 BUILD_WH 仓库的 Python 存储过程。指定的角色必须在该仓库上拥有 USAGE 权限。创建的 PYTHON_WH_TEST 存储过程会返回当前活动仓库的名称。
您可以用双引号指定 X-Snowflake-Warehouse 标头的值,也可以不用。