snow app run¶
Snowflake 계정에서 애플리케이션 패키지를 생성하고, 코드 파일을 해당 스테이지에 업로드한 다음, 애플리케이션 패키지에서 애플리케이션 오브젝트를 생성하거나 업그레이드합니다.
구문¶
snow app run
--version <version>
--patch <patch>
--from-release-directive
--interactive / --no-interactive
--force
--validate / --no-validate
--package-entity-id <package_entity_id>
--app-entity-id <app_entity_id>
--project <project_definition>
--env <env_overrides>
--connection <connection>
--host <host>
--port <port>
--account <account>
--user <user>
--password <password>
--authenticator <authenticator>
--private-key-file <private_key_file>
--token-file-path <token_file_path>
--database <database>
--schema <schema>
--role <role>
--warehouse <warehouse>
--temporary-connection
--mfa-passcode <mfa_passcode>
--enable-diag
--diag-log-path <diag_log_path>
--diag-allowlist-path <diag_allowlist_path>
--format <format>
--verbose
--debug
--silent
인자¶
없음
선택 사항¶
--version TEXT
애플리케이션 오브젝트를 만들려는 기존 애플리케이션 패키지에 정의된 버전입니다. 애플리케이션 오브젝트 및 애플리케이션 패키지 이름은 프로젝트 정의 파일에서 결정됩니다.
--patch INTEGER
애플리케이션 오브젝트를 생성하는 데 사용해야 하는 기존 애플리케이션 패키지에 지정된 `–version`의 패치 번호입니다. 애플리케이션 오브젝트 및 애플리케이션 패키지 이름은 프로젝트 정의 파일에서 결정됩니다.
--from-release-directive
Snowflake 계정에 적용되는 릴리스 지시문에서 지정한 버전 및 패치로 애플리케이션 오브젝트를 생성하거나 업그레이드합니다. 프로젝트 정의 파일에서 결정된 해당 애플리케이션 패키지에 대한 Snowflake 계정에 대한 릴리스 지시문이 없으면 명령은 실패합니다. 기본값: 설정 해제. 기본값: False.
--interactive / --no-interactive
이 옵션을 활성화하면 표준 입력 및 출력이 터미널 디바이스가 아닌 경우에도 프롬프트가 표시됩니다. 대화형 셸 환경에서는 기본값이 True이고, 그렇지 않으면 False입니다.
--force
이 옵션을 활성화하면 명령은 발생하는 모든 프롬프트를 암시적으로 승인합니다. 대화형 모드가 지정되지 않았고 치명적일 수 있는 작업을 수행하려는 경우 이 옵션을 활성화해야 합니다. 기본값은 설정 해제입니다. 기본값: False.
--validate / --no-validate
이 옵션을 활성화하면 배포된 Snowflake Native App의 설정 스크립트 SQL에 대한 유효성 검사를 트리거합니다. 기본값: True.
--package-entity-id TEXT
definition_version이 2 이상일 때 작동할 패키지 엔터티의 ID입니다.
--app-entity-id TEXT
definition_version이 2 이상일 때 작동할 애플리케이션 엔터티의 ID입니다.
-p, --project TEXT
Snowflake 프로젝트가 있는 경로입니다. 기본값은 현재 작업 디렉터리입니다.
--env TEXT
키=값 형식의 문자열. 템플릿에 사용되는 env 섹션의 변수를 재정의합니다. 기본값: [].
--connection, -c, --environment TEXT
config.toml
파일에 정의된 연결의 이름입니다. 기본값:default
.--host TEXT
연결을 위한 호스트 주소입니다. 연결에 지정된 값을 재정의합니다.
--port INTEGER
연결의 포트입니다. 연결에 지정된 값을 재정의합니다.
--account, --accountname TEXT
Snowflake 계정에 할당된 이름입니다. 연결에 지정된 값을 재정의합니다.
--user, --username TEXT
Snowflake에 연결할 사용자 이름입니다. 연결에 지정된 값을 재정의합니다.
--password TEXT
Snowflake 비밀번호입니다. 연결에 지정된 값을 재정의합니다.
--authenticator TEXT
Snowflake 인증자입니다. 연결에 지정된 값을 재정의합니다.
--private-key-file, --private-key-path TEXT
Snowflake 개인 키 파일 경로입니다. 연결에 지정된 값을 재정의합니다.
--token-file-path TEXT
Snowflake에 연결할 때 사용해야 하는 OAuth 토큰이 포함된 파일 경로입니다.
--database, --dbname TEXT
사용할 데이터베이스입니다. 연결에 지정된 값을 재정의합니다.
--schema, --schemaname TEXT
사용할 데이터베이스 스키마입니다. 연결에 지정된 값을 재정의합니다.
--role, --rolename TEXT
사용할 역할입니다. 연결에 지정된 값을 재정의합니다.
--warehouse TEXT
사용할 웨어하우스입니다. 연결에 지정된 값을 재정의합니다.
--temporary-connection, -x
config에서 정의된 연결 대신, 명령줄 매개 변수로 정의된 연결을 사용합니다. 기본값: False.
--mfa-passcode TEXT
다단계 인증(MFA)에 사용할 토큰입니다.
--enable-diag
Python 커넥터 진단 테스트를 실행합니다. 기본값: False.
--diag-log-path TEXT
진단 보고서 경로입니다. 기본값: <temporary_directory>.
--diag-allowlist-path TEXT
선택적 허용 목록에 대한 진단 보고서 경로입니다.
--format [TABLE|JSON]
출력 형식을 지정합니다. 기본값: TABLE.
--verbose, -v
로그 수준
info
이상의 로그 항목을 표시합니다. 기본값: False.--debug
로그 수준
디버그
이상에 대한 로그 항목을 표시하며, 디버그 로그에는 추가 정보가 포함됩니다. 기본값: False.--silent
콘솔로의 중간 출력을 끕니다. 기본값: False.
--help
이 명령에 대한 도움말 텍스트를 표시합니다.
사용법 노트¶
참고
이 명령은 config.toml
파일에 대한 역할 또는 웨어하우스 재정의를 허용하지 않습니다. 대신, snowflake.yml
또는 snowflake.local.yml
의 네이티브 앱 정의에 추가합니다.
이 명령은 확인된 프로젝트 정의에 따라 파일을 업로드할 스테이지, 업로드할 파일, 생성할 오브젝트의 이름을 결정합니다. 기본값에 대한 안내는 Snowflake Native App 프로젝트 정보 및 snow init 사용법 노트를 참조하십시오. 사용자의 선호도에 따라 이를 변경할 수도 있지만, 사용자 계정의 기존 오브젝트와 충돌이 있는지 확인하는 것은 사용자의 책임입니다.
Snowflake CLI 에 의해 생성된 오브젝트에는 특수 설명
GENERATED_BY_SNOWCLI
가 태그로 지정됩니다.애플리케이션 패키지와 인스턴스를 만드는 데 사용되는 역할에는 Snowflake Native Applications에서 작업할 수 있는 적절한 계정 수준 권한이 있어야 합니다. 자세한 내용은 애플리케이션 패키지 만들기 및 로컬에서 앱 설치 및 테스트하기 섹션을 참조하십시오.
기본적으로 snow app run
명령은 Snowflake 계정에 애플리케이션 패키지를 생성하고, 해당 스테이지에 코드 파일을 업로드하고, 설정 스크립트 SQL의 유효성을 검사한 다음, 해당 애플리케이션의 개발 모드 인스턴스를 생성(또는 업그레이드)합니다. 기본 명령을 실행할 때 다음 사항에 유의해야 합니다.
프로젝트 정의 파일에서
nativeapp.project.artifacts
에 지정된 모든 파일은 Snowflake 스테이지에 업로드됩니다. 이 아티팩트에는manifest.yml
파일 및 관련 설정 스크립트가 포함되어야 합니다.nativeapp.project.artifacts
에 지정된 모든 파일은snow app run
을 호출하기 전에 필요한 경우 이미 별도로 컴파일 및 패키징되어 있어야 합니다. Snowflake CLI 는 이러한 중간 작업을 대신 수행하는 기능을 제공하지 않으므로 자체 스크립트에서 실행하여 빌드 프로세스를 완전히 제어할 수 있습니다.Snowflake CLI 는 이러한 오브젝트를 생성할 때 기본 애플리케이션 패키지 이름, 스테이지 이름, 애플리케이션 이름을 사용합니다.
첫 번째 실행을 한 다음, 이후
snow app run
을 실행하면 업로드된 파일의 상태를 로컬 디렉터리에 있는 파일과 비교하고 수정된 파일만 선택적으로 업로드하여 시간을 절약할 수 있습니다. 파일이 변경된 경우 해당 스테이지의 새로운 내용에 따라 애플리케이션이 업그레이드됩니다.애플리케이션 패키지가 이미 존재하고 배포 속성이
INTERNAL
인 경우, 이 명령은 해당 패키지가 Snowflake CLI 에 의해 생성되었는지 확인합니다. 그렇지 않은 경우, 해당 명령에서는 오류가 발생합니다. 애플리케이션 패키지의 배포가EXTERNAL
인 경우 이러한 검사는 수행되지 않습니다.이 명령은 작업 중인 애플리케이션 패키지의 배포 값이 확인된 프로젝트 정의에 설정된 값과 다른 경우 경고를 표시하지만 계속 실행합니다.
개발 모드 에서 애플리케이션 인스턴스가 생성되거나 업그레이드됩니다. 구체적으로, 애플리케이션은 스테이징된 파일 을 사용합니다.
--version
, --patch
또는 --from-release-directive
옵션을 지정하면 이 명령은 기존 애플리케이션 인스턴스를 업그레이드하거나 애플리케이션이 존재하지 않는 경우 새로 만듭니다. 이 시나리오에서는 애플리케이션 패키지를 생성하지 않습니다.
Snowflake CLI 는 처음에 느슨한 파일 모드로 설치된 애플리케이션을 릴리스 지시문을 사용하여 업그레이드하려고 하는 등 어떤 이유로든 애플리케이션을 업데이트할 수 없는 경우 기존 애플리케이션을 삭제하고 원하는 설치 전략을 사용하여 새 애플리케이션을 만들려고 시도합니다. 이 명령은 작업을 수행하기 전에 삭제를 확인하라는 메시지를 표시합니다.
명령과 상호 작용하는 대신 모든 작업을 강제로 수행하려면
--force
옵션을 사용하여 모든 프롬프트를 무시하고 파괴적인 작업을 진행할지 여부를 묻는 모든 입력에 예로 응답하는 프록시 메시지를 표시합니다.Snowflake CLI 는 사용자가 대화형 셸에서 명령을 실행하고 있는지 확인합니다.
--force
가 설정되지 않고 대화형 셸에서 명령을 실행하는 경우 자동으로 대화형 옵션이 선택됩니다.대화형 셸이 아니더라도 Snowflake CLI 가 사용자와 상호 작용하도록 하려면
--interactive
옵션을 사용하십시오.
예¶
이 예제에서는 코드 파일에 필요한 변경을 수행하여 snowflake.yml
또는 snowflake.local.yml
파일에 추가했다고 가정합니다.
스테이징된 파일을 사용하여 애플리케이션 패키지와 애플리케이션을 생성하려면 다음을 실행할 수 있습니다.
cd my_app_project my_app_project_build_script.sh snow app run --connection="dev"
버전과 패치가 포함된 애플리케이션 패키지가 이미 있는 경우, 이 버전과 패치에서 애플리케이션을 생성하고 대화형 모드를 호출하려면 다음을 실행할 수 있습니다.
snow app run --version V1 --patch 12 --interactive --connection="dev"
여기서는 버전
V1
및 패치12
를 예제로만 사용합니다.애플리케이션 패키지에 기존 릴리스 지시문이 설정되어 있는 경우 이 지시문으로 애플리케이션을 생성하고 대화형 모드를 우회하여 실행할 수 있습니다.
snow app run --from-release-directive --force --connection="dev"
이 예제는
--env
옵션을 사용하여 여러 환경 변수를 전달하는 방법을 보여줍니다.snow app run --env source_folder="src/app" --env stage_name=mystage