DAS(데이터 액세스 서비스) 프록시를 사용하여 S3 및 S3 호환 스토리지에 액세스하기
외부 애플리케이션과 쿼리 엔진은 S3 및 S3 호환 저장소에 watsonx.data에서 관리하는 DAS 프록시를 통해 액세스할 수 있습니다.
데이터 액세스 서비스(DAS) 프록시 기능은 2.1.2 에서 완전히 제거되었으며 watsonx.data 에서 더 이상 사용할 수 없습니다. DAS(데이터 액세스 서비스) 프록시 기능을 사용하여 개체 저장소에 액세스할 수 없습니다( S3, ADLS 및 ABS).
S3 및 S3 호환 스토리지에 액세스하려면 다음과 같이 하세요:
-
watsonx.data 정보 창에서 DAS 엔드포인트를 가져옵니다. 다음을 클릭하세요.
i홈 페이지의 아이콘을 클릭하여 정보 창을 엽니다. -
S3 엔드포인트를 Java 코드에서 DAS 엔드포인트로 바꿉니다.
<DAS endpoint>/cas/v1/proxy -
다음과 같이 액세스 키를 Java 코드의 인코딩된 값으로 바꿉니다:
base64{<crn>|Basic base64{ibmlhapikey_<user_id>:<IAM_APIKEY>}}얻으려면Base64 인코딩된 문자열을 사용하려면 다음 명령 중 하나를 사용하세요.
printf "username:<apikey>" | base64echo -n "username:<apikey>" | base64
Java 코드 예제에서 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);
에 대한 정보는S3 REST API 권한은 다음을 참조하세요.S3 REST API 권한.