Databricks Varlık Paketleri iş akışı için çalıştırma kimliği belirtme
Bu makalede, Databricks Varlık Paketleri iş akışlarını çalıştırırken kullanılacak kimliği belirtmek için ayarın nasıl kullanılacağı run_as
açıklanmaktadır.
Ayarrun_as
, kaynaklara uygulanacak en üst düzey eşleme olarak veya paket yapılandırma dosyasındaki dağıtım target
eşlemesi içinde yapılandırılabilir. veya service_principal_name
olarak user_name
ayarlanabilir.
Bu ayar, bir paket işi veya işlem hattını dağıtmak için kullanılan kimliği, çalıştırmak için iş veya işlem hattı iş akışı tarafından kullanılan kimlikten ayırma olanağı sağlar. Bu, paket geliştirme ve yönetimi esnekliğini artırırken dağıtımlar ve çalıştırmalar için korumalar oluşturulmasına da olanak sağlar. Özellikle:
- Paketi dağıtmak için kullanılan kimlik, paketin ayarında
run_as
yapılandırılan kimlikle aynıysa hiçbir kısıtlama yoktur. Tüm paket kaynakları desteklenir. - Bir paketi dağıtmak için kullanılan kimlik, paket ayarında
run_as
yapılandırılan kimlikten farklıysa, paket kaynaklarının yalnızca bir alt kümesi desteklenir. İşlem hatları ve model sunum uç noktaları desteklenmez.
Paket çalıştırma kimliği ayarlama
Paket kaynaklarının çalıştırma kimliğini ayarlamak için, aşağıdaki örnekte gösterildiği gibi en üst düzey eşleme olarak belirtin 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"
Önemli
Bu run_as
ayar, uç noktalara hizmet veren işlem hatları veya model için desteklenmez. Bu kaynaklar, aynı zamanda yapılandırılan run_as
bir pakette tanımlanırsa bir hata oluşur.
Hedef dağıtım kimliklerini ayarlama
Hazırlama ve üretim hedefi dağıtımları için çalıştırma kimliklerini yapılandırmak en iyi yöntemdir. Ayrıca, üretim hedefleri için bir hizmet sorumlusuna kimlik ayarlamakrun_as
, üretim iş akışını şu şekilde çalıştırmanın en güvenli yoludur:
- İş akışının aynı hizmet sorumlusu veya hizmet sorumlusu üzerinde CAN_USE izinleri olan biri tarafından dağıtılmasını sağlar.
- Üretim iş akışını çalıştırma iznini, paketi oluşturan veya dağıtan kimlikten kaldırır.
- Kullanıcıların üretim paketini dağıtmak için kullanılan kimlikten daha az izinle üretim için bir hizmet sorumlusu yapılandırmasına ve ayarlamasına olanak tanır.
Aşağıdaki örnek databricks.yml
yapılandırma dosyasında üç hedef modu yapılandırılmıştır: geliştirme, hazırlama ve üretim. Geliştirme modu tek bir kullanıcı olarak çalışacak şekilde yapılandırılır ve hazırlama ve üretim modları iki farklı hizmet sorumlusu kullanılarak çalıştırılacak şekilde yapılandırılır. Hizmet sorumluları her zaman bir uygulama kimliği biçimindedir ve bu kimlik çalışma alanı yönetici ayarlarınızdaki bir Hizmet sorumlusunun sayfasından alınabilir.
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"