데이터 액세스 서비스(DAS)를 사용하여 ADLS 및 ABS 호환 스토리지에 액세스하기
외부 애플리케이션 및 쿼리 엔진은 DAS 프록시를 통해 Azure에서 관리하는 Azure Blob Storage(ADLS) 및 watsonx.data(ABS) 호환 스토리지에 액세스할 수 있습니다.
데이터 액세스 서비스(DAS) 프록시 기능은 2.1.2 에서 완전히 제거되었으며 watsonx.data 에서 더 이상 사용할 수 없습니다. DAS(데이터 액세스 서비스) 프록시 기능을 사용하여 개체 저장소에 액세스할 수 없습니다( S3, ADLS 및 ABS).
ADLS 및 ABS에 대한 DAS 프록시 지원은 AccountKey가 watsonx.data 자격 증명을 전달할 때만 작동합니다. SASToken을 사용하여 watsonx.data 자격 증명을 전달하는 것은 지원되지 않습니다.
ADLS 및 ABS 호환 저장소에 액세스하려면 다음과 같이 하세요:
-
watsonx.data 정보 창에서 DAS 엔드포인트를 가져옵니다. 홈페이지에서
i아이콘을 클릭하면 정보 창이 열립니다. -
Java 코드에서 ADLS 또는 ABS 엔드포인트를 DAS 엔드포인트로 바꾸세요. 액세스 이름을 다음과 같이 인코딩된 값으로 바꿉니다:
base64{<crn>|Basic base64{ibmlhapikey_<user_id>:<IAM_APIKEY>}}Base64로 인코딩된 문자열을 가져오려면 다음 명령 중 하나를 사용합니다:
printf "username:<apikey>" | base64echo -n "username:<apikey>" | base64 -
Java 코드에서 컨테이너 이름을 다음과 같이 바꿉니다:
cas/v1/proxy/<storage name in watsonx.data>
Java 코드 예제에서 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);