Utilizzo del servizio di accesso ai dati (DAS) per accedere agli archivi compatibili con ADLS e ABS

Le applicazioni esterne e i motori di interrogazione possono accedere agli archivi compatibili Azure Data Lake Storage (ADLS) e Azure Blob Storage (ABS), gestiti da watsonx.data attraverso il proxy DAS.

La funzione proxy del Data Access Service (DAS) è stata completamente rimossa in 2.1.2 e non è più disponibile in watsonx.data. Non è possibile utilizzare la funzione proxy del Data Access Service (DAS) per accedere all'archiviazione degli oggetti ( S3, ADLS e ABS).

Il supporto del proxy DAS per ADLS e ABS funziona solo con AccountKey per passare la credenziale watsonx.data. L'uso di SASToken per passare la credenziale watsonx.data non è supportato.

Per accedere agli archivi compatibili ADLS e ABS:

  1. Ottenere l'endpoint DAS dalla finestra informativa watsonx.data. Fare clic sull'icona i nella pagina iniziale per aprire la finestra informativa.

  2. Sostituire l'endpoint ADLS o ABS con l'endpoint DAS nel codice Java. Sostituire il nome dell'accesso con il valore codificato come segue:

    base64{<crn>|Basic base64{ibmlhapikey_<user_id>:<IAM_APIKEY>}}
    

    Per ottenere la stringa codificata Base64, utilizzare uno dei seguenti comandi:

    printf "username:<apikey>" | base64
    
    echo -n "username:<apikey>" | base64
    
  3. Sostituire il nome del contenitore nel codice Java come segue:

    cas/v1/proxy/<storage name in watsonx.data>
    

Java per utilizzare 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);