Utilisation du service d'accès aux données (DAS) pour accéder aux stockages compatibles ADLS et ABS

Les applications externes et les moteurs de recherche peuvent accéder au Azure Data Lake Storage (ADLS) et aux stockages compatibles Azure Blob Storage (ABS) qui sont gérés par watsonx.data par l'intermédiaire du proxy DAS.

La fonction proxy du service d'accès aux données (DAS) est complètement supprimée dans 2.1.2 et n'est plus disponible dans watsonx.data. Vous ne pouvez pas utiliser la fonction proxy du service d'accès aux données (DAS) pour accéder au stockage d'objets ( S3, ADLS et ABS).

La prise en charge du proxy DAS pour ADLS et ABS ne fonctionne qu'avec AccountKey pour passer watsonx.data le justificatif d'identité. L'utilisation de SASToken pour passer watsonx.data n'est pas prise en charge.

Pour accéder aux mémoires compatibles ADLS et ABS :

  1. Obtenir le point de terminaison DAS de la fenêtre d'information watsonx.data. Cliquez sur l'icône i de la page d'accueil pour ouvrir la fenêtre d'information.

  2. Remplacez le point de terminaison ADLS ou ABS par le point de terminaison DAS dans votre code Java. Remplacer le nom d'accès par la valeur codée comme suit :

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

    Pour obtenir la chaîne encodée Base64, utilisez l'une des commandes suivantes :

    printf "username:<apikey>" | base64
    
    echo -n "username:<apikey>" | base64
    
  3. Remplacez le nom du conteneur dans le code Java comme suit :

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

Java exemple de code pour utiliser le 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);