다음을 통해 공유


Databricks 자산 번들 워크플로에 대한 실행 ID 지정

이 문서에서는 설정을 사용하여 run_as Databricks 자산 번들 워크플로를 실행할 때 사용할 ID를 지정하는 방법을 설명합니다.

설정은 run_as 리소스에 적용할 최상위 매핑 또는 번들 구성 파일target 배포 매핑 내에서 구성할 수 있습니다. 또는 으로 user_name service_principal_name설정할 수 있습니다.

이 설정은 번들 작업 또는 파이프라인을 배포하는 데 사용되는 ID를 실행할 작업 또는 파이프라인 워크플로에서 사용하는 ID와 구분하는 기능을 제공합니다. 이렇게 하면 번들 개발 및 관리의 유연성이 향상되는 동시에 배포 및 실행에 대한 가드레일을 설정할 수 있습니다. 특히 다음 사항에 주의하십시오.

  • 번들을 배포하는 데 사용되는 ID가 번들 run_as 설정에 구성된 ID와 동일한 경우 제한이 없습니다. 모든 번들 리소스가 지원됩니다.
  • 번들을 배포하는 데 사용되는 ID가 번들 설정에 구성된 ID와 다른 경우 번들 run_as 리소스하위 집합만 지원됩니다. 엔드포인트를 제공하는 파이프라인 및 모델은 지원되지 않습니다.

번들 실행 ID 설정

번들 리소스의 실행 ID를 설정하려면 다음 예제와 같이 최상위 매핑으로 지정 run_as 합니다.

bundle:
  name: "run_as"

# This is the identity that will be used when "databricks bundle run my_test_job" is executed.
run_as:
  service_principal_name: "5cf3z04b-a73c-4x46-9f3d-52da7999069e"

resources:
  jobs:
    my_test_job _1:
      name: Test job 1
      tasks:
        - task_key: "task_1"
          new_cluster:
            num_workers: 1
            spark_version: 13.2.x-snapshot-scala2.12
            node_type_id: i3.xlarge
            runtime_engine: PHOTON
          notebook_task:
            notebook_path: "./test.py"
    my_test_job_2:
      name: Test job 2
      run_as:
        service_principal_name: "69511ed2-zb27-444c-9863-4bc8ff497637"
      tasks:
        - task_key: "task_2"
          notebook_task:
            notebook_path: "./test.py"

Important

run_as 엔드포인트를 제공하는 파이프라인 또는 모델에 대해서는 이 설정이 지원되지 않습니다. 이러한 리소스가 구성된 번들에 정의되어 있으면 run_as 오류가 발생합니다.

대상 배포 ID 설정

스테이징 및 프로덕션 대상 배포에 대한 실행 ID를 구성하는 것이 가장 좋습니다. 또한 프로덕션 대상에 run_as 대한 서비스 주체ID를 설정하는 것이 프로덕션 워크플로를 실행하는 가장 안전한 방법입니다.

  • 워크플로가 동일한 서비스 주체 또는 서비스 주체 자체에 대한 CAN_USE 권한이 있는 사용자가 배포했는지 확인합니다.
  • 번들을 만들거나 배포한 ID에서 프로덕션 워크플로를 실행할 수 있는 권한을 분리합니다.
  • 사용자가 프로덕션 번들을 배포하는 데 사용되는 ID보다 적은 권한으로 프로덕션에 대한 서비스 주체를 구성하고 설정할 수 있습니다.

다음 예제 databricks.yml 구성 파일에서는 개발, 스테이징 및 프로덕션의 세 가지 대상 모드가 구성되었습니다. 개발 모드는 개별 사용자로 실행되도록 구성되며 스테이징 및 프로덕션 모드는 서로 다른 두 서비스 주체를 사용하여 실행되도록 구성됩니다. 서비스 주체는 항상 애플리케이션 ID 형식이며 작업 영역 관리자 설정의 서비스 주체 페이지에서 검색할 수 있습니다.

bundle:
  name: my_targeted_bundle

run_as:
  service_principal_name: "5cf3z04b-a73c-4x46-9f3d-52da7999069e"

targets:
  # Development deployment settings, set as the default
  development:
    mode: development
    default: true
    workspace:
      host: https://my-host.cloud.databricks.com
    run_as:
      user_name: someone@example.com

  # Staging deployment settings
  staging:
    workspace:
      host: https://my-host.cloud.databricks.com
      root_path: /Shared/staging-workspace/.bundle/${bundle.name}/${bundle.target}
    run_as:
      service_principal_name: "69511ed2-zb27-444c-9863-4bc8ff497637"

  # Production deployment settings
  production:
    mode: production
    workspace:
      host: https://my-host.cloud.databricks.com
      root_path: /Shared/production-workspace/.bundle/${bundle.name}/${bundle.target}
    run_as:
      service_principal_name: "68ed9cd5-8923-4851-x0c1-c7536c67ff99"

resources:
  jobs:
    my_test_job:
      name: Test job
      tasks:
        - task_key: "task"
          new_cluster:
            num_workers: 1
            spark_version: 13.3.x-cpu-ml-scala2.12
            node_type_id: i3.xlarge
            runtime_engine: STANDARD
          notebook_task:
            notebook_path: "./test.py"