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"