Deklaratif Otomasyon Paketleri iş akışı için bir çalıştırma kimliği belirtin

Bu makalede, run_as ayarını kullanarak Bildirime Dayalı Otomasyon Paketleri iş akışları çalıştırılırken kullanılacak kimliği belirtmenin nasıl yapılacağı açıklanmaktadır.

Ayarrun_as, kaynaklara uygulanacak en üst düzey eşleme olarak veya paket yapılandırma dosyasındaki dağıtım targeteşlemesi içinde yapılandırılabilir. user_name veya service_principal_name olarak ayarlanabilir. (Yönetici olmayanlar bu alanı yalnızca kendi e-postalarına ayarlayabilir.)

Bu ayar, bir paket işi veya işlem hattını dağıtmak için kullanılan kimliği, çalıştırılması için iş veya işlem hattı iş akışı tarafından kullanılan kimlikten ayırmanıza olanak 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, paketin ayarında run_as yapılandırılan kimlikten farklıysa, yalnızca işler ve işlem hatları desteklenir.

Paket çalıştırma kimliği ayarla

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_1" 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: # This is the identity that will be used when "databricks bundle run my_test_job_2" is executed.
        service_principal_name: '69511ed2-zb27-444c-9863-4bc8ff497637'
      tasks:
        - task_key: 'task_2'
          notebook_task:
            notebook_path: './test.py'

Önemli

Model sunum uç noktaları için run_as ayarı desteklenmez. run_as ile yapılandırılmış bir pakette bu kaynaklar da tanımlanırsa bir hata oluşur.

Hedef dağıtım kimliklerini ayarlama

Ön hazırlık ve üretim hedefi dağıtımları için çalıştırma kimliklerini yapılandırmak en iyi uygulamadır. Ayrıca, üretim hedefleri için bir hizmet sorumlusuna run_as kimlik ayarlamak, üretim iş akışını şu şekilde çalıştırmanın en güvenli yoludur:

  • Bu, iş akışının ya aynı hizmet sorumlusu ya da hizmet sorumlusu üzerinde CAN_USE izinlerine sahip biri tarafından dağıtıldığını garanti eder.
  • Üretim iş akışını çalıştırma iznini, paketi oluşturan veya dağıtan kimlikten ayı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'