CREATE SERVICE¶
현재 스키마에 새로운 Snowpark Container Services 서비스 를 만듭니다. 해당 이름의 서비스가 이미 존재하는 경우 DROP SERVICE 명령을 사용하여 이전에 생성된 서비스를 삭제합니다.
서비스 인스턴스를 두 개 이상 실행할 수 있습니다. 각 서비스 인스턴스는 서비스 사양 파일에 정의된 대로 컴퓨팅 풀의 노드에서 함께 실행되는 컨테이너의 모음입니다. 서비스의 여러 인스턴스를 실행하는 경우 로드 밸런서는 수신 트래픽을 관리합니다.
명령 매개 변수는 특정 순서로 지정해야 합니다. 자세한 내용은 사용법 노트 섹션을 참조하십시오.
- 참고 항목:
ALTER SERVICE , DESCRIBE SERVICE, DROP SERVICE , SHOW SERVICES
구문¶
CREATE SERVICE [ IF NOT EXISTS ] <name>
IN COMPUTE POOL <compute_pool_name>
{
fromSpecification
| fromSpecificationTemplate
}
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
[ AUTO_RESUME = { TRUE | FALSE } ]
[ MIN_INSTANCES = <num> ]
[ MIN_READY_INSTANCES = <num> ]
[ MAX_INSTANCES = <num> ]
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '{string_literal}']
여기서
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_stage_path>' -- for native app service. | FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>' -- for non-native app service. | FROM SPECIFICATION_TEMPLATE <specification_text> } USING ( <key> => <value> [ , <key> => <value> [ , ... ] ] )
필수 매개 변수¶
name
서비스의 식별자(즉, 이름)를 지정하는 문자열로, 서비스가 생성되는 스키마에 대해 고유해야 합니다.
특수 문자에 대해 따옴표가 있는 이름이나 대/소문자를 구분하는 이름은 지원되지 않습니다. 서비스를 생성하는 데이터베이스 및 스키마 이름에도 동일한 제약 조건이 적용됩니다. 즉, 서비스를 생성할 때 따옴표가 없는 데이터베이스 및 스키마 이름이 유효합니다.
IN COMPUTE POOL compute_pool_name
서비스를 실행할 계정의 컴퓨팅 풀 이름을 지정합니다.
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이어야 합니다.
각 키-값 페어 사이에 쉼표를 사용합니다.
선택적 매개 변수¶
EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )
서비스가 외부 사이트에 액세스할 수 있도록 하는 외부 액세스 통합 의 이름을 지정합니다. 이 목록의 이름은 대/소문자를 구분합니다. 기본적으로 애플리케이션 컨테이너에는 인터넷에 액세스할 권한이 없습니다. 서비스가 외부 사이트에 액세스하도록 허용하려면 External Access Integration(EAI)을 만들고 해당 통합을 사용하도록 서비스를 구성하십시오. 자세한 내용은 네트워크 송신 섹션을 참조하십시오.
AUTO_RESUME = { TRUE | FALSE }
서비스 함수 또는 수신이 호출될 때 서비스를 자동으로 재개할지 여부를 지정합니다.
AUTO_RESUME이 FALSE인 경우 서비스를 명시적으로 재개해야 합니다(ALTER SERVICE … RESUME 사용).
AUTO_RESUME이 TRUE인 경우 Snowflake는 서비스 함수가 호출되거나 요청이 수신될 때 일시 중단된 서비스를 재개합니다.
MIN_INSTANCES = num
실행할 서비스 인스턴스의 최소 개수를 지정합니다.
기본값: 1.
MIN_READY_INSTANCES = num
Snowflake가 요청을 처리할 준비가 되었다고 간주하기 위해 준비되어야 하는 최소 서비스 인스턴스 수를 나타냅니다. MIN_READY_INSTANCES는 MIN_INSTANCES보다 작거나 같아야 합니다.
참고
서비스를 생성한 후 서비스에 대해 구성된 MIN_READY_INSTANCES를 찾기 위해 SHOW SERVICES 또는 DESCRIBE SERVICE 명령을 사용하려면 계정에서 2024_08 동작 변경 번들을 사용해야 합니다. 계정에서 이 번들을 활성화 하려면 다음 문을 실행합니다.
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_08');
작동 방식은 다음과 같습니다. 서비스의 MIN_INSTANCES가 3으로 설정되었다고 가정하겠습니다. 그러면 Snowflake는 3개 이상의 인스턴스를 사용할 수 있는 상태가 되어야 해당 서비스를 READY 상태로 간주합니다. 서비스가 준비되지 않은 상태에서는 Snowflake가 서비스에 대한 액세스를 차단하는데, 이를 통해 준비 상태가 확인될 때까지 관련 서비스 기능이나 수신 요청이 거부됩니다.
어떤 경우에는 지정된 최소 인스턴스 수보다 적은 인스턴스가 사용 가능하더라도 Snowflake에서 서비스가 준비된 상태로 간주하여 수신 요청을 전달하도록 할 수 있습니다. MIN_READY_INSTANCES 속성을 설정하면 이를 달성할 수 있습니다.
다른 시나리오를 생각해 보겠습니다. 유지 관리 또는 순차적인 서비스 업그레이드 중에 Snowflake가 하나 이상의 서비스 인스턴스를 종료할 수 있습니다. 이로 인해 지정된 MIN_INSTANCES보다 사용 가능한 인스턴스 수가 적어져 서비스가 READY 상태가 되지 않을 수 있습니다. 이런 경우, 서비스가 계속해서 요청을 수락할 수 있도록 MIN_READY_INSTANCES를 MIN_INSTANCES보다 작은 값으로 설정할 수 있습니다.
기본값: MIN_INSTANCES 속성의 값입니다.
MAX_INSTANCES = num
실행할 서비스 인스턴스의 최대 개수를 지정합니다.
기본값: MIN_INSTANCES 속성의 값입니다.
QUERY_WAREHOUSE = warehouse_name
서비스 컨테이너가 Snowflake에 연결하여 쿼리를 실행하지만 사용할 웨어하우스를 명시적으로 지정하지 않은 경우 사용할 웨어하우스입니다.
기본값: 없음.
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
태그 이름과 태그 문자열 값을 지정합니다.
태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.
문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.
COMMENT = 'string_literal'
서비스에 대한 설명을 지정합니다.
기본값: 값 없음
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE SERVICE |
스키마 |
|
USAGE |
컴퓨팅 풀 |
|
READ |
스테이지 |
사양이 저장되는 스테이지입니다. |
READ |
이미지 리포지토리 |
사양에서 참조하는 이미지 리포지토리입니다. |
BIND SERVICE ENDPOINT |
계정 |
공용 엔드포인트가 있는 서비스를 생성하려면 역할에 이 권한이 있어야 합니다. 이를 통해 공용 엔드포인트를 통한 서비스 액세스를 허용합니다. 서비스의 소유자 역할이 이 권한을 잃으면 공용 엔드포인트에 액세스할 수 없습니다. |
스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
CREATE SERVICE를 호출할 때 매개 변수는 컴퓨팅 풀 지정, 서비스 사양(스테이지의 공급자 사양 파일 또는 인라인 사양), 기타 속성의 순서로 제공해야 합니다.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
두 개의 서비스 인스턴스가 실행되는 서비스를 만듭니다.
CREATE SERVICE echo_service
IN COMPUTE POOL tutorial_compute_pool
FROM @tutorial_stage
SPECIFICATION_FILE='echo_spec.yaml'
MIN_INSTANCES=2
MAX_INSTANCES=2