データ アクセス サービス (DAS) プロキシを使用して S3 および S3 互換ストレージにアクセスする
外部アプリケーションやクエリエンジンは、S3 および S3 互換ストレージにアクセスできます。これらのストレージは、watsonx.data によって管理されています。
データ・アクセス・サービス(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>" | base64
echo -n "username:<apikey>" | base64
Javaコード例
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 権限。