Uso del Servicio de Acceso a Datos (DAS) para acceder a los almacenamientos compatibles con ADLS y ABS

Las aplicaciones externas y los motores de consulta pueden acceder a los almacenamientos compatibles Azure Data Lake Storage (ADLS) y Azure Blob Storage (ABS) gestionados por watsonx.data a través del proxy DAS.

La función de proxy del Servicio de Acceso a Datos (DAS) se ha eliminado por completo en 2.1.2 y ya no está disponible en watsonx.data. No se puede utilizar la función de proxy del Servicio de Acceso a Datos (DAS) para acceder al almacenamiento de objetos ( S3, ADLS y ABS).

El soporte de proxy DAS para ADLS y ABS sólo funciona con AccountKey para pasar watsonx.data credencial. No se admite el uso de SASToken para pasar la credencial watsonx.data.

Para acceder a los almacenamientos compatibles ADLS y ABS:

  1. Obtener el punto final DAS de la ventana de información watsonx.data. Haga clic en el icono i de la página de inicio para abrir la ventana de información.

  2. Sustituya el punto final ADLS o ABS por el punto final DAS en su código Java. Sustituya el nombre de acceso por el valor codificado de la siguiente manera:

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

    Para obtener la cadena codificada Base64, utilice uno de los siguientes comandos:

    printf "username:<apikey>" | base64
    
    echo -n "username:<apikey>" | base64
    
  3. Sustituye el nombre del contenedor en el código Java de la siguiente manera:

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

Java para utilizar 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);