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:
- Toegang tot externe cloudservices beheren met behulp van servicereferenties.
- Servicereferenties beheren
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.
Open de bewerkingspagina voor het cluster.
Zie Compute beheren.
Klik op Geavanceerde opties onder aan de pagina en ga naar het tabblad Spark .
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]