Azure Data Lake Java:派生クライアントをプロキシ経路に保つ
プロキシ設定済みの DataLakeServiceClient からファイルシステムクライアントを派生させ、同じ設定で ID トークンのトランスポートを構成します。
最後の行が重要です。別の既定ビルダーを開始するのではなく、構成済みのサービスからファイルシステムクライアントを派生させます。
var proxy = new ProxyOptions(
ProxyOptions.Type.HTTP,
new InetSocketAddress("proxy.example.net", 8080));
var http = new NettyAsyncHttpClientBuilder()
.proxy(proxy)
.build();
var credential = new ClientSecretCredentialBuilder()
.tenantId(tenantId)
.clientId(clientId)
.clientSecret(clientSecret)
.httpClient(http)
.build();
var service = new DataLakeServiceClientBuilder()
.endpoint(accountUrl)
.credential(credential)
.httpClient(http)
.buildClient();
var filesystem = service.getFileSystemClient(fileSystemName);service.getFileSystemClient(fileSystemName) は親の HTTP パイプライン、アカウントのエンドポイント、適用されるストレージ構成を子へ引き継ぎます。
この例では、トークンの取得も別の要求経路であるため、同じ http を資格情報ビルダーに渡しています。別に構築したファイルシステムクライアントにも意図したトランスポートを渡す必要があります。以前のビルダーが SDK のグローバル既定を作ることはありません。
アプリケーションのアカウント URL、ファイルシステム名、ID の値を使用します。ProxyOptions と Netty のトランスポート型は Azure Core から、資格情報ビルダーは Azure Identity から、サービスビルダーは Azure Storage Data Lake から提供されます。InetSocketAddress は java.net のものです。
accountUrl はストレージのエンドポイントのままで、ファイルシステム名が子を選択します。どちらもプロキシアドレスではありません。ストレージのエンドポイントが公開到達可能で、公開中継を使用する権限がある場合は、HTTP プロキシ一覧から ProxyOptions のホストとポートを選び、ストレージと ID の設定はそのままにします。