Verwendung von Data Access Service (DAS) für den Zugriff auf ADLS- und ABS-kompatible Speicher
Externe Anwendungen und Abfrage-Engines können auf die Azure Data Lake Storage (ADLS) und Azure Blob Storage (ABS) kompatiblen Speicher zugreifen, die von watsonx.data über DAS-Proxy verwaltet werden.
Die Proxy-Funktion des Data Access Service (DAS) wurde in 2.1.2 vollständig entfernt und ist in watsonx.data nicht mehr verfügbar. Sie können die Proxy-Funktion des Datenzugriffsdienstes (DAS) nicht für den Zugriff auf Objektspeicher ( S3, ADLS und ABS) verwenden.
DAS-Proxy-Unterstützung für ADLS und ABS funktioniert nur mit AccountKey zur Übergabe von watsonx.data Anmeldeinformationen. Die Verwendung von SASToken zur Übergabe von watsonx.data Anmeldeinformationen wird nicht unterstützt.
Für den Zugriff auf die ADLS- und ABS-kompatiblen Speicherplätze:
-
Holen Sie den DAS-Endpunkt aus dem Informationsfenster watsonx.data. Klicken Sie auf das Symbol
iauf der Startseite, um das Informationsfenster zu öffnen. -
Ersetzen Sie den ADLS- oder ABS-Endpunkt durch den DAS-Endpunkt in Ihrem Java-Code. Ersetzen Sie den Zugangsnamen durch den verschlüsselten Wert wie folgt:
base64{<crn>|Basic base64{ibmlhapikey_<user_id>:<IAM_APIKEY>}}Um die Base64 kodierte Zeichenfolge zu erhalten, verwenden Sie einen der folgenden Befehle:
printf "username:<apikey>" | base64echo -n "username:<apikey>" | base64 -
Ersetzen Sie den Containernamen im Code Java wie folgt:
cas/v1/proxy/<storage name in watsonx.data>
Java Codebeispiel zur Verwendung von DAS
//For IBM Cloud <ADLS or ABS account name>|base64{<crn>|Basic base64{ibmlhapikey_<user_id>:<IAM_APIKEY>}}
//For AWS <ADLS or ABS account name>|base64{<crn>|Basic base64{ibmlhapikey_ServiceId-<service_id>:<APIKEY>}}
String accountName = "<ADLS or ABS account name>|base64{<instanceid>|ZenApikey base64{username:<apikey>}}";
String accountKey = "any string";
String endPoint = "<DAS endpoint>";
String containerName ="cas/v1/proxy/<storagename in watsonx.data>";
String endpoint = String.format(endPoint,accountName);
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint(endpoint)
.credential(new StorageSharedKeyCredential(accountName, accountKey))
.buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);