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:
-
Obtenha o endpoint DAS na janela de informações watsonx.data. Clique no ícone
ina página inicial para abrir a janela de informações. -
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>" | base64echo -n "username:<apikey>" | base64 -
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);