프로젝트 정의 파일 템플릿 만들기

경우에 따라 프로젝트 정의 파일에 이미 있는 정보를 파일의 다른 위치에서 참조하고 싶을 수도 있습니다. Snowflake CLI 는 프로젝트 정의 파일 템플릿을 지원합니다.

프로젝트 정의 파일 템플릿은 <% %> 구문을 사용하여 템플릿을 지정합니다. 다음 예제는 env 섹션을 사용하여 Streamlit 애플리케이션의 이름을 정의하는 예제입니다.

definition_version: 2
env:
  name: "my-app"
entities:
  my_streamlit:
    type: "streamlit"
    identifier: <% ctx.env.name %>
Copy

<% ctx.env.name %> 구문은 프로젝트 정의에 대한 액세스를 제공하는 전역 컨텍스트 오브젝트를 참조하십시오. ctx 오브젝트는 프로젝트 정의와 동일한 구조를 갖습니다. 점 표기법을 사용해 정의된 오브젝트의 특성에 액세스할 수 있습니다. 예시 사례에는 다음이 포함됩니다.

  • ID pkg 로 Native App 패키지 이름에 액세스하기 위한 <% ctx.entities.pkg.identifier %>.

  • snowpark UDFs 및 프로시저의 스테이지 이름에 액세스하기 위한 <% ctx.entities.function.stage_name %>.

  • Streamlit 대시보드 이름에 액세스하기 위한 <% ctx.entities.my_streamlit.identifier %>.

셸 환경 변수를 동일한 이름(대/소문자를 구분)으로 설정하여 snowflake.yml 프로젝트 정의 파일 env 섹션에 정의된 모든 변수를 재정의할 수 있습니다. 예를 들어, 예제에서 정의한 이름 값을 재정의하려면 다음 셸 명령을 실행하면 됩니다.

export name="other"
Copy

템플릿 기본값에 액세스

템플릿 기본값을 사용하면 필드가 명시적으로 정의되지 않은 경우에도 프로젝트 정의 파일에서 기본 필드와 자동 생성된 필드에 액세스할 수 있습니다. 예를 들어, 다음 Snowflake Native App 프로젝트 정의 파일을 살펴보겠습니다.

definition_version: 2
entities:
  pkg:
    type: application package
    artifacts:
      - src: app/*
        dest: ./
  app:
    type: application
    from:
      target: pkg
Copy

이 정의는 Snowflake Native App 을 생성하기에 충분한 정보를 제공하므로 애플리케이션을 생성할 때 애플리케이션 패키지 및 애플리케이션 인스턴스에 대한 기본값이 자동으로 생성됩니다. 이제 다음 구문을 사용하여 이러한 값에 액세스할 수 있습니다.

<% ctx.entities.app.identifier %>
<% ctx.entities.pkg.identifier %>
Copy