ALTER STREAMLIT
ALTER STREAMLIT
기존 Streamlit 객체의 속성을 수정하는 명령이에요.
출처: 문서
본문
관련 명령: CREATE STREAMLIT, SHOW STREAMLITS, DESCRIBE STREAMLIT, DROP STREAMLIT
구문 (Syntax)
ALTER STREAMLIT [ IF EXISTS ] <name> SET
[ MAIN_FILE = '<filename>']
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ RUNTIME_NAME = '<runtime_name>' ]
[ COMPUTE_POOL = <compute_pool_name> ]
[ COMMENT = '<string_literal>']
[ TITLE = '<app_title>' ]
[ IMPORTS = ( '<stage_path_and_directory_or_file_name_to_read>' [ , ... ] ) ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
[ SECRETS = ( '<snowflake_secret_name>' = <snowflake_secret> [ , ... ] ) ]
ALTER STREAMLIT [ IF EXISTS ] <name> UNSET { SECRETS |
EXTERNAL_ACCESS_INTEGRATIONS |
QUERY_WAREHOUSE |
TITLE |
COMMENT
}
[ , ... ]
ALTER STREAMLIT [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER STREAMLIT <name> COMMIT
ALTER STREAMLIT <name> PUSH [ TO <git_branch_uri> ]
[
{
GIT_CREDENTIALS = <snowflake_secret>
| USERNAME = <git_username> PASSWORD = <git_password>
}
NAME = <git_author_name>
EMAIL = <git_author_email>
]
[ COMMENT = <git_push_comment> ]
ALTER STREAMLIT <name> ABORT
ALTER STREAMLIT <name> PULL
ALTER STREAMLIT <name> ADD LIVE VERSION FROM LAST
ROOT_LOCATION으로 만든 Streamlit 객체에 대해 지원되는 구문:
중요
- ROOT_LOCATION은 레거시 매개변수이며 향후 릴리스에서 더 이상 사용되지 않을 수 있어요.
- 컨테이너 런타임에서는 ROOT_LOCATION이 지원되지 않아요.
- ROOT_LOCATION으로 만든 Streamlit 앱에서는 다중 파일 편집과 Git 통합이 지원되지 않아요.
ALTER STREAMLIT [ IF EXISTS ] <name> SET
[ ROOT_LOCATION = '<stage_path_and_root_directory>' ]
[ MAIN_FILE = '<path_to_main_file>']
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ COMMENT = '<string_literal>']
[ TITLE = '<app_title>' ]
[ IMPORTS = ( '<stage_path_and_directory_or_file_name_to_read>' [ , ... ] ) ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
ALTER STREAMLIT [ IF EXISTS ] <name> RENAME TO <new_name>
매개변수 (Parameters)
name — Streamlit 객체의 식별자예요. 식별자에 공백이나 특수 문자가 포함되어 있으면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶은 식별자는 대소문자를 구분해요.
SET ... — Streamlit 객체에 설정할 속성을 지정해요:
MAIN_FILE = 'filename' — Streamlit 진입점 파일을 지정해요. 요구사항은 런타임 유형에 따라 달라져요:
- 웨어하우스 런타임: 파일은 FROM에 지정된 소스 디렉터리의 루트에 있어야 해요. 경로가 아닌 파일 이름만 허용돼요.
- 컨테이너 런타임: 파일은 루트나 하위 디렉터리에 있을 수 있어요. 소스 디렉터리의 루트에서 상대 경로(예:
'subdir/my_app.py')를 지정할 수 있어요.
앱이 FROM 대신 ROOT_LOCATION으로 만들어졌다면 ROOT_LOCATION이 웨어하우스 런타임만 지원하더라도 MAIN_FILE은 ROOT_LOCATION에 상대적인 경로일 수 있어요.
QUERY_WAREHOUSE = warehouse_name — Streamlit 앱이 사용하는 웨어하우스를 지정해요. 동작은 런타임 유형에 따라 달라져요:
- 웨어하우스 런타임: 앱 코드를 실행하고 SQL 쿼리를 실행할 웨어하우스를 지정해요. 이것이 코드 웨어하우스예요. 쿼리는 앱 코드 안에서 다른 웨어하우스로 수동 전환하는 것을 권장해요.
- 컨테이너 런타임: 앱이 실행하는 SQL 쿼리를 실행할 웨어하우스를 지정해요. 앱 코드는 COMPUTE_POOL로 지정된 컴퓨트 풀에서 실행돼요.
RUNTIME_NAME = 'runtime_name' — Streamlit 앱의 런타임 환경을 지정해요. 이를 사용해 런타임을 웨어하우스에서 컨테이너로 또는 컨테이너에서 웨어하우스로 변경할 수 있어요.
- 웨어하우스 런타임: 가상 웨어하우스에서 앱을 실행해요. 각 뷰어는 개인 인스턴스를 받아요.
SYSTEM$WAREHOUSE_RUNTIME을 사용해요. Python 버전은environment.yml파일로 별도로 선택해요. - 컨테이너 런타임: Snowpark Container Services 컴퓨트 풀에서 앱을 실행해요. 모든 뷰어가 앱의 단일 장기 실행 인스턴스를 공유해요. 컨테이너 런타임 이름에는 Python 버전이 포함돼요. 유효한 컨테이너 런타임은 다음과 같아요:
SYSTEM$ST_CONTAINER_RUNTIME_PY3_11
중요: 웨어하우스 런타임에서 컨테이너 런타임으로 변경할 때는 COMPUTE_POOL 매개변수도 적절히 설정해야 해요. 컨테이너 런타임에는 컴퓨트 풀이 필요해요.
COMPUTE_POOL = compute_pool_name — Streamlit 앱이 실행되는 컴퓨트 풀을 지정해요. 이 매개변수는 컨테이너 런타임 사용 시 필수이며 웨어하우스 런타임에서는 무시돼요.
COMMENT = 'string_literal' — Streamlit 객체의 주석을 추가하거나 기존 주석을 덮어써요.
TITLE = 'app_title' — Snowsight에 표시할 Streamlit 앱 제목을 추가해요.
IMPORTS = ( 'stage_path_and_directory_or_file_name_to_read' [ , ... ] ) — 가져올 디렉터리나 파일의 위치(스테이지), 경로, 이름이에요. 웨어하우스 런타임에만 적용되며 컨테이너 런타임에서는 무시돼요.
EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] ) — Streamlit 앱 코드가 외부 네트워크에 접근하는 데 필요한 외부 접근 통합의 이름이에요. 컨테이너 런타임에서는 PyPI 같은 외부 패키지 인덱스에서 패키지를 설치하는 데 외부 접근 통합이 필요해요. 모든 런타임 유형에서 외부 접근 통합은 앱이 아웃바운드 네트워크 요청을 할 수 있게 해요.
SECRETS = ( 'snowflake_secret_name' = snowflake_secret [ , ... ] ) — Streamlit 앱 코드에서 참조할 수 있는 비밀 이름에 Snowflake 비밀을 매핑해요. 비밀 이름(왼쪽)은 코드에서 비밀을 참조하는 방법이고, 비밀 객체(오른쪽)는 Snowflake 비밀의 식별자예요. 예: SECRETS = ('api_key' = my_database.my_schema.my_secret). 웨어하우스 런타임에서 비밀은 _snowflake 모듈을 통해 접근돼요. 컨테이너 런타임에서 비밀은 st.secrets로 접근할 수 있고 환경 변수에도 매핑돼요. 비밀은 EXTERNAL_ACCESS_INTEGRATIONS의 외부 접근 통합과 연결되어야 해요. 자세한 내용은 비밀 관리 및 Streamlit 앱 구성을 참고하세요.
ROOT_LOCATION = 'stage_path_and_root_directory' — Streamlit Python 파일, 미디어 파일, environment.yml 파일을 포함하는 루트 스테이지 이름과 접두사를 지정해요. 이 매개변수는 이름 있는 내부 스테이지의 단일 디렉터리를 가리켜야 해요.
UNSET ... — Streamlit 객체에서 해제할 하나 이상의 속성을 지정해 기본값으로 되돌려요:
SECRETSEXTERNAL_ACCESS_INTEGRATIONSQUERY_WAREHOUSETITLECOMMENT
RENAME TO new_name — Streamlit 객체의 새 식별자를 지정해요. 식별자는 객체가 만들어진 스키마에서 고유해야 해요. 식별자에 대한 자세한 내용은 식별자 요구사항을 참고하세요.
COMMIT — LIVE 버전의 보류 중인 편집을 새 LAST 버전으로 커밋해요. 커밋 직후 LIVE 버전은 LAST 버전과 동일해요. Preview Feature — 공개. 모든 계정에서 사용할 수 있어요.
PUSH — TO git_branch_uri를 지정하지 않으면 기본 버전에 저장된 브랜치를 사용해 최신 커밋 변경 사항을 Git 저장소로 푸시해요. 기본 버전이 Git 브랜치에 기반하지 않으면 오류가 발생해요. Preview Feature — 공개.
TO git_branch_uri — 커밋된 변경 사항을 지정된 브랜치로 푸시해요.
GIT_CREDENTIALS = snowflake_secret — 저장소 인증에 사용할 자격 증명을 포함하는 Snowflake 비밀을 지정해요.
USERNAME = git_username — Git 사용자 이름을 지정해요.
PASSWORD = git_password — Git 암호를 지정해요.
NAME = git_author_name — 사용할 Git 작성자 이름을 지정해요.
EMAIL = git_author_email — Git 작성자 이름으로 사용할 유효한 이메일 주소를 지정해요.
COMMENT = git_push_comment — Git 푸시에 포함할 주석을 지정해요.
ABORT — 앱의 현재 라이브 버전을 제거하며, Snowsight에서 이루어졌고 커밋되지 않은 모든 편집을 포함해요. Preview Feature — 공개.
PULL — 최신 변경 사항을 가져와요. 가져오기 전에 현재 라이브 버전을 중단해야 해요. Preview Feature — 공개.
ADD LIVE VERSION FROM LAST — 마지막 커밋 버전을 기반으로 앱의 새 라이브 버전을 만들어요. Streamlit 앱 소유자가 Snowsight에서 앱을 열고 라이브 버전이 없으면 이 명령이 자동으로 실행돼요. 다른 사용자가 앱을 방문하고 라이브 버전이 없으면 오류가 반환돼요.
접근 제어 요구사항 (Access control requirements)
역할이 아래 표의 객체를 소유하지 않으면, 그 객체들에 대해 나열된 권한이 있어야 해요.
| 권한 | 객체 | 설명 |
|---|---|---|
| OWNERSHIP | 변경하는 Streamlit 객체 | |
| USAGE | Streamlit 앱이 사용하는 웨어하우스 | QUERY_WAREHOUSE에 새 값을 설정할 때만 필요해요. |
| USAGE | Streamlit 앱이 사용하는 컴퓨트 풀 | COMPUTE_POOL에 새 값을 설정할 때만 필요해요. |
| USAGE | Streamlit 앱이 사용하는 외부 접근 통합 | EXTERNAL_ACCESS_INTEGRATIONS에 새 값을 설정할 때만 필요해요. |
| USAGE | Streamlit 앱이 사용하는 비밀 | SECRETS에 새 값을 설정할 때만 필요해요. |
스키마의 객체를 조작하려면 상위 데이터베이스와 상위 스키마 각각에 대해 하나 이상의 권한이 필요해요.
지정한 권한 집합을 가진 사용자 정의 역할을 만드는 방법은 사용자 정의 역할 만들기를 참고하세요.
보호 객체에서 SQL 작업을 수행할 때 역할과 권한 부여에 대한 일반 정보는 접근 제어 개요를 참고하세요.
사용 메모 (Usage notes)
- 앱의 라이브 버전을 제거하면 사용자는 다음 작업 중 하나를 할 때까지 앱을 방문할 수 없어요:
- Streamlit 객체에 ALTER STREAMLIT … ADD LIVE VERSION FROM LAST를 실행.
- 앱을 소유한 역할로 Snowsight에서 앱을 방문.
- Snowsight에서 Streamlit 앱을 보면서 ALTER STREAMLIT 명령을 실행하면 앱은 런타임 유형에 따라 변경 사항을 다르게 반영해요:
- 웨어하우스 런타임: Run을 선택할 때까지 앱이 변경 사항을 반영하지 않아요.
- 컨테이너 런타임: 앱과 다음에 상호 작용할 때 변경 사항을 즉시 반영해요. 변경 사항을 앱에 반영하려면 앱을 다시 로드하거나 재시작해야 해요.
- 웨어하우스 런타임에서 컨테이너 런타임으로 마이그레이션할 때:
- RUNTIME_NAME과 COMPUTE_POOL을 모두 설정해야 해요.
- 앱은 Python 3.11과 Streamlit 1.50 이상을 사용해야 해요.
- 앱 코드가 스레드 안전하고 동시 뷰어에 최적화되어 있는지 확인해요.
get_active_session()을st.connection("snowflake")로 교체해요._snowflake모듈을 네이티브 Python 등가물로 교체해요. 완전한 마이그레이션 체크리스트는 런타임 환경 간 마이그레이션을 참고하세요.
- 메타데이터 관련: Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터를 입력하지 않도록 주의해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고하세요.
예시 (Examples)
쿼리 웨어하우스 변경 — Streamlit 앱이 사용하는 웨어하우스를 변경하려면 다음 예시처럼 ALTER STREAMLIT 명령을 실행해요.
ALTER STREAMLIT my_app
SET QUERY_WAREHOUSE = new_warehouse;
웨어하우스 런타임에서 컨테이너 런타임으로 마이그레이션 — 다음 예시처럼 실행해요.
ALTER STREAMLIT my_app SET
RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool
EXTERNAL_ACCESS_INTEGRATIONS = (pypi_access_integration);
컨테이너 런타임은 PyPI 같은 외부 패키지 인덱스에서 패키지를 설치하려면 외부 접근 통합이 필요해요. 그렇지 않으면 기본 설치 패키지만 사용할 수 있어요. 자세한 내용은 Streamlit 앱 종속성 관리를 참고하세요.
기존 웨어하우스 런타임 앱에 비밀 추가 — 다음 예시처럼 실행해요.
ALTER STREAMLIT my_app SET
EXTERNAL_ACCESS_INTEGRATIONS = (my_access_integration)
SECRETS = ('api_key' = my_database.my_schema.my_api_secret);
앱에서 비밀 제거 — Streamlit 앱에서 모든 비밀을 제거하려면 다음 예시처럼 실행해요.
ALTER STREAMLIT my_app
UNSET SECRETS;
이렇게 하면 앱에서 모든 비밀 연결이 제거돼요. 기본 비밀 객체는 Snowflake 계정에 남아 있어요. 외부 접근 통합도 제거하려면 두 속성을 모두 해제해요.
ALTER STREAMLIT my_app
UNSET SECRETS, EXTERNAL_ACCESS_INTEGRATIONS;
Streamlit 앱 이름 바꾸기 — 다음 예시처럼 실행해요.
ALTER STREAMLIT old_app_name
RENAME TO new_app_name;
더 알아보기 (Learn more)
- CREATE STREAMLIT — Streamlit 만들기
- SHOW STREAMLITS — Streamlit 나열
- DESCRIBE STREAMLIT — Streamlit 설명
- DROP STREAMLIT — Streamlit 삭제