|sf-rest|로 Snowflake 컨텍스트 지정¶
|sf-rest|에 요청할 때 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 헤더의 값을 큰따옴표로 묶거나 따옴표 없이 지정할 수 있습니다.
curl -X POST "$API_BASE/procedure/databases/TEST_DB/schemas/TEST_SCHEMA/procedures" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "X-Snowflake-Role: ACCOUNTADMIN" \
-H "X-Snowflake-Warehouse: BUILD_WH" \
-d '{
"name": "PYTHON_WH_TEST",
"arguments": [],
"return_type": {"datatype": "VARIANT", "nullable": true},
"language_config": {
"python_function": {
"handler":"main",
"runtime_version":"3.11",
"packages":["snowflake-snowpark-python"]
}
},
"body": "def main(session):\n return {\"warehouse\": session.get_current_warehouse()}"
}'