Aracılığıyla paylaş


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 targeteşlemesi içinde yapılandırılabilir. veya service_principal_nameolarak 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"