Uso do proxy do Serviço de Acesso a Dados (DAS) para acessar S3 e S3 armazenamentos compatíveis
Aplicativos externos e mecanismos de consulta podem acessar os armazenamentos compatíveis com S3 e S3 que são gerenciados por 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).
Para acessar os armazenamentos compatíveis com S3 e S3:
-
Obtenha o endpoint DAS na janela de informações watsonx.data. Clique no
iícone na página inicial para abrir a janela de informações. -
Substitua o ponto de extremidade S3 pelo ponto de extremidade DAS em seu código Java.
<DAS endpoint>/cas/v1/proxy -
Substitua a chave de acesso pelo valor codificado no código Java da seguinte forma:
base64{<crn>|Basic base64{ibmlhapikey_<user_id>:<IAM_APIKEY>}}Para obter oBase64 string codificada, use um dos seguintes comandos:
printf "username:<apikey>" | base64echo -n "username:<apikey>" | base64
Java para usar o DAS
String bucketName = "bucket1";
String keyName = "folder1/file1";
# replace the target object store endpoint with the DAS proxy endpoint
String endpoint = "<DAS endpoint get from About page>/cas/v1/proxy";
/** Replace the Access Key with watsonx.data user name and API key following the below base64 encoded method.
* For Cloud Pak for Data: base64{<instanceid>|ZenAPIkey base64{username:<apikey>}}
* For IBM Cloud: base64{<crn>|Basic base64{ibmlhapikey_<user_id>:<IAM_APIKEY>}}
* For AWS: base64{<crn>|Basic base64{ibmlhapikey_ServiceId-<service_id>:<APIKEY>}}
*/
String accessKey = "encoded value";
String secretKey = "any string";
BasicAWSCredentials cos_cred = new BasicAWSCredentials(accessKey, secretKey);
EndpointConfiguration cosEndPoint = new EndpointConfiguration(endpoint, "us-east");
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withPathStyleAccessEnabled(true)
.withCredentials(new AWSStaticCredentialsProvider(cos_cred))
.withEndpointConfiguration(cosEndPoint).build();
GetObject.GetObjectTest(s3Client, bucketName, keyName);
Para informações sobreS3 Permissões da API REST, consulte S3 Permissões da API REST.