Delen via


Referenties van de Unity Catalog-service gebruiken om verbinding te maken met externe cloudservices

In dit artikel wordt beschreven hoe u een servicereferentie in Unity Catalog gebruikt om verbinding te maken met externe cloudservices. Een servicereferentieobject in Unity Catalog bevat een langetermijncloudreferentie die toegang biedt tot een externe cloudservice waarmee gebruikers verbinding moeten maken vanuit Azure Databricks.

Zie ook:

Voordat u begint

Voordat u een servicereferentie kunt gebruiken om verbinding te maken met een externe cloudservice, moet u het volgende hebben:

  • Een Azure Databricks-werkruimte die is ingeschakeld voor Unity Catalog.

  • Een rekenresource die zich in Databricks Runtime 16.2 of hoger bevindt.

    SQL-warehouses worden niet ondersteund.

    De openbare preview-versie van servicereferenties is beschikbaar op Databricks Runtime 15.4 LTS en hoger, met Python-ondersteuning, maar geen Scala-ondersteuning.

  • Een servicereferentie die is gemaakt in uw Unity Catalog-metastore die toegang geeft tot de cloudservice.

  • De ACCESS bevoegdheid voor de servicereferentie of het eigendom van de servicereferentie.

Een servicereferentie gebruiken in uw code

In deze sectie vindt u voorbeelden van het gebruik van servicereferenties in een notebook. Vervang tijdelijke aanduidingen voor waarden. Deze voorbeelden tonen niet noodzakelijkerwijs de installatie van vereiste bibliotheken, die afhankelijk zijn van de clientservice die u wilt openen.

Python-voorbeeld: een Azure SDK-client configureren voor het gebruik van een specifieke servicereferentie

from azure.keyvault.secrets import SecretClient # example Azure SDK client

credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)

Scala-voorbeeld: een Azure SDK-client configureren voor het gebruik van een specifieke servicereferentie

import com.azure.security.keyvault.secrets.{SecretClient, SecretClientBuilder}

// Get credentials from dbutils
val credential = dbutils.credentials.getServiceCredentialsProvider("your-service-credential")

// URL of the Key Vault
val vaultUrl = "https://your-keyvault-name.vault.azure.net/"

// Create the SecretClient
val client: SecretClient = new SecretClientBuilder()
  .vaultUrl(vaultUrl)
  .credential(credential)
  .buildClient()

Een standaardservicereferentie opgeven voor een rekenresource

U kunt desgewenst een standaardservicereferentie opgeven voor een rekencluster voor alle doeleinden of taken door een omgevingsvariabele in te stellen. Standaard gebruikt de SDK die servicereferentie als er geen verificatie is opgegeven. Gebruikers hebben nog steeds die servicereferentie nodig ACCESS om verbinding te maken met de externe cloudservice. Databricks raadt deze methode niet aan, omdat uw code minder draagbaar is dan het benoemen van de servicereferenties in uw code.

Notitie

Serverloze berekeningen en SQL-warehouses bieden geen ondersteuning voor omgevingsvariabelen en bieden daarom geen ondersteuning voor standaardservicereferenties.

  1. Open de bewerkingspagina voor het cluster.

    Zie Compute beheren.

  2. Klik op Geavanceerde opties onder aan de pagina en ga naar het tabblad Spark .

  3. Voeg de volgende vermelding toe in omgevingsvariabelen, waarbij u het <your-service-credential>volgende vervangt:

    DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>

In de volgende codevoorbeelden wordt geen servicereferentie opgegeven. In plaats daarvan gebruiken ze de servicereferenties die zijn opgegeven in de omgevingsvariabele DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME:

Python

Als u een standaardservicereferentie gebruikt, hoeft u geen referenties op te geven als argument:

from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)

Vergelijk dit met het voorbeeld in Python-voorbeeld: configureer een Azure SDK-client om een specifieke servicereferentie te gebruiken, die geen DefaultAzureCredential importeert en de referentiespecificatie toevoegt:

credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')

Scala

Voor Scala vervangt u de naam van de servicereferentie door null.

val azureCredentials = dbutils.credentials.getServiceCredentialsProvider(null).asInstanceOf[TokenCredential]