Я думаю, что нашел! :)
Этот проект, похоже, делает именно то, что я хочу: aws-signing-request-interceptor, описанный как «Запрос перехватчика для клиента Apache, который подписывает запрос на AWS. Первоначально создан для поддержки службы AWLS Elasticearch с использованием клиента Jest»..
Редактировать: I forked the project, чтобы соответствовать моим потребностям (Java 7, временные учетные данные STS), и он работает красиво.
Вот пример использования (здесь без STS временных учетных данных):
String region = "us-east-1";
String service = "es";
String url = "???"; // put the AWS ElasticSearch endpoint here
DefaultAWSCredentialsProviderChain awsCredentialsProvider = new DefaultAWSCredentialsProviderChain();
final AWSSigner awsSigner = new AWSSigner(awsCredentialsProvider, region, service,() -> new LocalDateTime(DateTimeZone.UTC));
JestClientFactory factory = new JestClientFactory() {
@Override
protected HttpClientBuilder configureHttpClient(HttpClientBuilder builder) {
builder.addInterceptorLast(new AWSSigningRequestInterceptor(awsSigner));
return builder;
}
};
factory.setHttpClientConfig(new HttpClientConfig.Builder(url)
.multiThreaded(true)
.build());
JestClient client = factory.getObject();
Да, это работает и для меня :) – panipsilos
Привета Эрика Я следует ссылке GitHub предоставленной Вами. Мы сталкиваемся с запрещенной ошибкой. Другой вопрос - в обычном клиенте-шутке мы проходим конечную точку упругого поиска. Но здесь мы передаем только имя службы и регион. Можете ли вы предоставить образец кода или руководство для решения нашей проблемы. –
Привет @MohanShanmugam. Запрещенная ошибка, вероятно, связана с неправильной конфигурацией политики доступа или с плохими учетными данными. Я добавил пример использования в ответе. Надеюсь это поможет. –