Uso do Serviço de Acesso a Dados (DAS) para acessar armazenamentos compatíveis com ADLS e ABS

Aplicativos externos e mecanismos de consulta podem acessar o Azure Data Lake Storage (ADLS) e Azure Blob Storage (ABS), armazenamentos compatíveis que são gerenciados pelo watsonx.data por meio do proxy DAS.

O recurso de proxy do Serviço de Acesso a Dados (DAS) foi completamente removido em 2.1.2 e não está mais disponível em watsonx.data. Não é possível usar o recurso de proxy do Serviço de Acesso a Dados (DAS) para acessar o armazenamento de objetos ( S3, ADLS e ABS).

O suporte de proxy DAS para ADLS e ABS funciona somente com AccountKey para passar a watsonx.data credencial. Não há suporte para o uso de SASToken para passar a credencial watsonx.data.

Para acessar os armazenamentos compatíveis com ADLS e ABS:

  1. Obtenha o endpoint DAS na janela de informações watsonx.data. Clique no ícone i na página inicial para abrir a janela de informações.

  2. Substitua o ponto de extremidade ADLS ou ABS pelo ponto de extremidade DAS em seu código Java. Substitua o nome de acesso pelo valor codificado da seguinte forma:

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

    Para obter a cadeia de caracteres codificada em Base64, use um dos seguintes comandos:

    printf "username:<apikey>" | base64
    
    echo -n "username:<apikey>" | base64
    
  3. Substitua o nome do contêiner no código Java da seguinte forma:

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

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