データアクセスサービス(DAS)を使用して、ADLSおよびABS互換ストレージにアクセスする
外部アプリケーションとクエリエンジンは、Azure Data Lake Storage (ADLS) と Azure Blob Storage (ABS) 互換ストレージに DAS プロキシを通してアクセスできます。
データ・アクセス・サービス(DAS)プロキシ機能は、 2.1.2 で完全に削除され、 watsonx.data では利用できなくなりました。 データ・アクセス・サービス(DAS)プロキシ機能を使用してオブジェクト・ストレージ( S3、ADLS、ABS)にアクセスすることはできません。
ADLSとABSのDASプロキシサポートは、AccountKeyでwatsonx.dataクレデンシャルを渡す場合のみ動作します。 watsonx.dataクレデンシャルを渡すためにSASTokenを使用することはサポートされていません。
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コード例
//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);