ALTER SERVICE

修改 Snowpark Container Services 服务 配置,升级服务的代码,并允许您暂停或恢复服务。您可以:

  • 将修改应用于运行中的服务。例如,暂停或恢复服务,以及更新正在运行的服务实例数量。

  • 应用仅在服务重新启动后生效的修改。例如,为查询指定默认仓库。

  • 应用修改,使 Snowflake 关闭服务,并使用新代码重新启动。例如,您可能想要部署更新的服务代码。

  • 使用作为指定卷的初始内容提供的快照,重新启动服务的指定实例。在执行 ALTER SERVICE 之前,必须暂停服务。

另请参阅:

CREATE SERVICEDESCRIBE SERVICEDROP SERVICESHOW SERVICES

语法

ALTER SERVICE [ IF EXISTS ] <name> { SUSPEND | RESUME }

ALTER SERVICE [ IF EXISTS ] <name>
  {
     fromSpecification
     | fromSpecificationTemplate
  }

ALTER SERVICE [IF EXISTS] <service_name> RESTORE VOLUME <volume_name>
                                                 INSTANCES <comma_separated_instance_ids>
                                                 FROM SNAPSHOT <snapshot_name>

ALTER SERVICE [ IF EXISTS ] <name> SET [ MIN_INSTANCES = <num> ]
                                       [ MAX_INSTANCES = <num> ]
                                       [ MIN_READY_INSTANCES = <num> ]
                                       [ QUERY_WAREHOUSE = <warehouse_name> ]
                                       [ AUTO_RESUME = { TRUE | FALSE } ]
                                       [ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
                                       [ COMMENT = '<string_literal>' ]



ALTER SERVICE [ IF EXISTS ] <name> UNSET { MIN_INSTANCES                |
                                           MAX_INSTANCES                |
                                           MIN_READY_INSTANCES          |
                                           QUERY_WAREHOUSE              |
                                           AUTO_RESUME                  |
                                           EXTERNAL_ACCESS_INTEGRATIONS |
                                           COMMENT
                                         }
                                         [ , ... ]

ALTER SERVICE [ IF EXISTS ] <name> SET [ TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]]
Copy

其中:

fromSpecification ::=
  {
    FROM SPECIFICATION_FILE = '<yaml_file_path>' -- for native app service.
    | FROM @<stage> SPECIFICATION_FILE = '<yaml_file_path>' -- for non-native app service.
    | FROM SPECIFICATION <specification_text>
  }
Copy
fromSpecificationTemplate ::=
  {
    FROM SPECIFICATION_TEMPLATE_FILE = '<yaml_file_path>' -- for native app service.
    | FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_path>' -- for non-native app service.
    | FROM SPECIFICATION_TEMPLATE <specification_text>
  }
  USING ( <key> => <value> [ , <key> => <value> [ , ... ] ]  )
Copy

参数

name

指定要更改的服务的标识符。

如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

有关更多信息,请参阅 标识符要求

{ SUSPEND | RESUME }

指定是暂停还是恢复服务。

暂停服务时,Snowflake 会关闭并删除容器。如果随后恢复暂停的服务,Snowflake 会重新创建容器。也就是说,Snowflake 从您的存储库中获取镜像并启动容器。请注意,Snowflake 会部署相同的镜像版本;这不是服务更新操作。

当您通过使用服务函数或调用公共端点(入口)来调用暂停的服务时,Snowflake 会自动恢复服务。

FROM ...

识别服务的 规范模板 规范。

使用服务规范

在定义规范时,您可以采用以下方式:内联定义或在单独的文件中定义

SPECIFICATION_FILE = 'yaml_file_path' . @stage SPECIFICATION_FILE = 'yaml_file_path' . SPECIFICATION specification_text

指定包含服务规范的文件或者内联服务规范。如果您的服务规范处于文件中,请使用 SPECIFICATION_FILE。对于在 Snowflake Native App 中创建的服务,忽略 @stage,并指定相对于应用程序根目录的路径。对于在其他上下文中创建的服务,请指定 Snowflake 内部暂存区和服务规范文件的路径。

使用服务规范模板

在定义 模板规范 时,您可以采用以下方式:内联定义或在单独的文件中定义

SPECIFICATION_TEMPLATE_FILE = 'yaml_file_path' . @stage SPECIFICATION_TEMPLATE_FILE = 'yaml_file_path' . SPECIFICATION_TEMPLATE specification_text

指定包含服务规范模板的文件或者内联服务规范模板。如果您的服务规范模板处于文件中,请使用 SPECIFICATION_TEMPLATE_FILE。对于在 Snowflake Native App 中创建的服务,忽略 @stage,并指定相对于应用程序根目录的路径。对于在其他上下文中创建的服务,请指定 Snowflake 内部暂存区和服务规范文件的路径。在使用模板规范时,还应该包括 USING 参数。

USING ( key => value [ , key => value [ , ... ] ]  )

指定模板变量及这些变量的值。

  • key 是模板变量的名称。模板变量名称可以选择放在双引号 (") 内。

  • value 是模板中要分配给变量的值。字符串值必须放在 '$$ 内。值必须是字母数字或有效的 JSON。

使用英文逗号分隔各键值对。

RESTORE VOLUME volume_name INSTANCES comma_separated_instance_ids FROM SNAPSHOT snapshot_name

在现有块存储卷 volume_name 上为实例 comma_separated_instance_ids 恢复快照 snapshot_name

只能获取块存储卷的快照,而不能获取本地卷、内存卷或暂存区卷的快照。

卷名称区分大小写。因此,应始终使用双引号来匹配服务规范中的相应名称。

SET ...

为服务设置一个或多个指定的属性或参数:

MIN_INSTANCES = num

指定服务实例的最小数量。

MAX_INSTANCES = num

指定服务实例的最大数量。

MIN_READY_INSTANCES = num

指定 Snowflake 必须至少准备好多少个服务实例,才能认为服务已准备好处理请求。 有关更多信息,请参阅 扩展服务

备注

如果您想使用 SHOW SERVICES 或 DESCRIBE SERVICE 命令查找为该服务配置的 MIN_READY_INSTANCES,则必须在您的账户中启用 2024_08 行为变更捆绑包。要 在账户中启用此捆绑包,请执行以下语句:

SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_08');
Copy
QUERY_WAREHOUSE = warehouse_name

要在以下情况下使用的仓库:服务容器连接到 Snowflake 以执行查询,但未显式指定要使用的仓库。

AUTO_RESUME = { TRUE | FALSE }

指定在调用服务函数或收到请求时是否自动恢复服务。

EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )

指定允许您的服务访问外部站点的 外部访问集成 的名称。Snowflake 会用该参数中指定的 EAIs 替换所有现有的 EAI。此列表中的名称区分大小写。有关更多信息,请参阅 配置网络出口。请注意,这会更改服务的所有运行实例可以拥有的网络访问权限。您无需显式暂停和恢复服务。

COMMENT = 'string_literal'

指定计算池的注释。

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 对象和列的标签配额

UNSET ...

指定要为服务取消设置的一个或多个属性和/或参数,从而将它们重置为默认值(请参阅 CREATE SERVICE):

  • MIN_INSTANCES

  • MAX_INSTANCES

  • MIN_READY_INSTANCES

  • QUERY_WAREHOUSE

  • AUTO_RESUME

  • EXTERNAL_ACCESS_INTEGRATIONS

  • COMMENT

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

OPERATE

服务

USAGE

快照

请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

暂停服务。

ALTER SERVICE echo_service SUSPEND;
Copy

修改现有服务的 MIN_INSTANCES 和 MAX_INSTANCES 属性。

ALTER SERVICE echo_service SET MIN_INSTANCES=3 MAX_INSTANCES=5;
Copy

在与 example_service 服务的实例 0 和 2 相关联的现有块卷上恢复快照。

ALTER SERVICE example_service
  RESTORE VOLUME "myvolume"
  INSTANCES 0,2
  FROM SNAPSHOT my_snapshot;
Copy
语言: 中文