Snowpark Container Services:准则和限制¶
一般限制: 如果您在这些限制方面遇到任何问题,请联系您的账户代表。
Snowflake 账户中最多可创建 200 项服务。
每项服务最多可以有 100 个端点(请参阅 spec.endpoints)。
每项服务最多可以有 20 个容器(请参阅 spec.containers)。
每项服务最多可以有 50 个密钥(请参阅 containers.secrets)。
每项服务最多可以有 20 个卷(请参阅 spec.volumes)。
如果您使用外部访问集成 (EAIs) 启用互联网访问(请参阅 配置网络出口),则适用以下限制。
每项服务最多可支持 10 个 EAIs(请参阅 CREATE SERVICE 和 ALTER SERVICE)。
每个 EAI 最多可以有 100 个主机名。
当从互联网访问公共端点时,您可能会发现用户名/密码身份验证正常,但 SSO 导致空白页或错误:“OAuth client integration with the given client ID is not found.”。有关解决此问题的信息,请参阅 入口和 SSO 注意事项。
镜像平台要求: 目前,Snowpark Container Services 需要 linux/amd64 平台镜像。
服务容器没有特权: 服务容器不以特权身份运行,因此无法更改主机上的硬件配置,只能更改有限的 OS 配置。服务容器只能执行普通用户(即不需要 root 的用户)可以执行的操作系统配置。
重命名数据库和架构:
请勿重命名已创建服务的数据库和架构。重命名实际上是将服务移动到另一个数据库和架构,系统不支持此操作。例如:
Snowflake 提供给正在运行的服务容器的数据库和架构信息将继续引用旧名称。
服务在事件表中引入的新日志将继续引用旧的数据库和架构名称。
服务函数将继续引用旧数据库和架构中的服务,当您调用服务函数时,它将失败。
服务规范可以引用 Snowflake 暂存区和镜像仓库等对象。如果重命名这些对象所在的数据库或架构名称,则需要手动更新服务规范中引用的对象的数据库和架构的名称。
转移父架构或数据库的所有权:
父数据库/架构的所有权可以转移给不同的角色。但数据库/架构内服务的所有权不会转移给新角色,因为服务是作为服务所有者角色运行的,这一点不会改变。因此,服务可能会丢失对架构内对象的权限,例如同一架构中的图像存储库和 Snowflake 暂存区。
如果需要转移父架构/数据库的所有权,可考虑重新创建服务。
删除和取消删除数据库和架构:
删除父数据库或架构时,将异步删除服务。这意味着在内部进程移除服务之前,服务可能会继续运行一段时间。
如果尝试取消删除以前删除的数据库或架构,则无法保证会还原服务。
服务所有权转让: 不支持服务(包括作业服务)的 所有权转让 或未来所有权转让。
服务函数的所有权转移:
服务函数的所有权可以转让给不同的角色。如果新的所有者角色对服务没有 USAGE 权限,函数调用就会失败。您需要为新函数所有者角色授予 USAGE 权限。
复制: 在 Snowflake 中处理复制时,请注意以下事项:
Snowpark Container Services 对象(例如服务、计算池和镜像仓库)无法复制。
如果在数据库中创建镜像仓库,则整个数据库都无法复制。如果数据库包含其他资源(如服务或计算池),则数据库复制过程将成功,但不会复制数据库中的这些单个对象。
作业服务超时: Snowpark Container Services 作业服务默认同步运行。如果语句超时,作业服务将被取消。默认语句超时为两天。客户可以通过使用 STATEMENT_TIMEOUT_IN_SECONDS ALTER 设置参数 SESSION 来更改超时。
ALTER SESSION SET statement_timeout_in_seconds=<time>
请在运行 EXECUTE JOB SERVICE 命令前进行该设置。通过指定
ASYNC=true,您可以异步运行作业服务,以避免作业服务因语句超时而中断。Google Cloud中的文件暂存命令支持: 要在 Google Cloud 上通过 Snowflake 客户端库使用 PUT、GET、LIST 或 REMOVE 命令,请将您的客户端至少更新到以下版本。
客户端
版本
Go Snowflake 驱动程序
1.14.1
Snowflake Connector for Python
3.16.0
.NET 驱动程序
4.6.0
Node.js 驱动程序
2.1.3
JDBC 驱动程序
3.25.1
ODBC 驱动程序
3.10.0