ALTER SERVICE¶
修改 Snowpark Container Services 服务 配置,升级服务的代码,并允许您暂停或恢复服务。您可以:
将修改应用于运行中的服务。例如,暂停或恢复服务,以及更新正在运行的服务实例数量。
应用仅在服务重新启动后生效的修改。例如,为查询指定默认仓库。
应用修改,使 Snowflake 关闭服务,并使用新代码重新启动。例如,您可能想要部署更新的服务代码。
使用作为指定卷的初始内容提供的快照,重新启动服务的指定实例。在执行 ALTER SERVICE 之前,必须暂停服务。
语法¶
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>' ... ]]
其中:
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> }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> [ , ... ] ] )
参数¶
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');
QUERY_WAREHOUSE = warehouse_name
要在以下情况下使用的仓库:服务容器连接到 Snowflake 以执行查询,但未显式指定要使用的仓库。
AUTO_RESUME = { TRUE | FALSE }
指定在调用服务函数或收到请求时是否自动恢复服务。
EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )
指定允许您的服务访问外部站点的 外部访问集成 的名称。Snowflake 会用该参数中指定的 EAIs 替换所有现有的 EAI。此列表中的名称区分大小写。有关更多信息,请参阅 配置网络出口。请注意,这会更改服务的所有运行实例可以拥有的网络访问权限。您无需显式暂停和恢复服务。
COMMENT = 'string_literal'
指定计算池的注释。
UNSET ...
指定要为服务取消设置的一个或多个属性和/或参数,从而将它们重置为默认值(请参阅 CREATE SERVICE):
MIN_INSTANCES
MAX_INSTANCES
MIN_READY_INSTANCES
QUERY_WAREHOUSE
AUTO_RESUME
EXTERNAL_ACCESS_INTEGRATIONS
COMMENT
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
OPERATE |
服务 |
|
USAGE |
快照 |
请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
暂停服务。
ALTER SERVICE echo_service SUSPEND;
修改现有服务的 MIN_INSTANCES 和 MAX_INSTANCES 属性。
ALTER SERVICE echo_service SET MIN_INSTANCES=3 MAX_INSTANCES=5;
在与 example_service
服务的实例 0 和 2 相关联的现有块卷上恢复快照。
ALTER SERVICE example_service
RESTORE VOLUME "myvolume"
INSTANCES 0,2
FROM SNAPSHOT my_snapshot;