데이터 액세스 서비스(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 호환 저장소에 액세스하려면 다음과 같이 하세요:

  1. watsonx.data 정보 창에서 DAS 엔드포인트를 가져옵니다. 홈페이지에서 i 아이콘을 클릭하면 정보 창이 열립니다.

  2. Java 코드에서 ADLS 또는 ABS 엔드포인트를 DAS 엔드포인트로 바꾸세요. 액세스 이름을 다음과 같이 인코딩된 값으로 바꿉니다:

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

    Base64로 인코딩된 문자열을 가져오려면 다음 명령 중 하나를 사용합니다:

    printf "username:<apikey>" | base64
    
    echo -n "username:<apikey>" | base64
    
  3. 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);