Azure Data Lake Java: 파생 클라이언트를 프록시 파이프라인에 유지
프록시로 구성된 DataLakeServiceClient에서 파일 시스템 클라이언트를 파생하고, 동일한 설정에서 ID 토큰 전송을 구성합니다.
마지막 줄이 중요합니다. 또 다른 기본 builder를 시작하는 대신 구성된 서비스에서 파일 시스템 클라이언트를 파생합니다.
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 를 자격 증명 builder에 제공합니다. 별도로 구성한 파일 시스템 클라이언트도 의도한 전송을 받아야 합니다. 이전 builder가 SDK 전역 기본값을 만들지는 않습니다.
애플리케이션의 계정 URL, 파일 시스템 이름, ID 값을 사용합니다. ProxyOptions 와 Netty 전송 형식은 Azure Core에서, 자격 증명 builder는 Azure Identity에서, 서비스 builder는 Azure Storage Data Lake에서 제공됩니다. InetSocketAddress 는 java.net 에서 옵니다.
accountUrl 는 계속 저장소 엔드포인트이며 파일 시스템 이름이 자식을 선택합니다. 둘 다 프록시 주소가 아닙니다. 저장소 엔드포인트가 공개적으로 접근 가능하고 공개 중개자를 사용할 권한이 있다면 HTTP 프록시 목록에서 ProxyOptions 호스트와 포트를 선택하고, 저장소 및 ID 설정은 그대로 둡니다.