データアクセスサービス(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対応ストレージにアクセスする:

  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コード例

      //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);