Penso di averlo trovato! :)
Questo progetto sembra di fare esattamente quello che voglio: aws-signing-request-interceptor, descritto come "Richiesta Interceptor per Apache Cliente che sottoscrive la richiesta di AWS Originariamente creata per sostenere AWS' Servizio elasticsearch utilizzando il client Jest"..
Modifica: I forked the project per adattarsi alle mie esigenze (Java 7, credenziali STS temporanee) e funziona correttamente.
Ecco un esempio di utilizzo (qui senza STS credenziali temporanee):
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();
fonte
2015-11-17 17:08:10
Sì, funziona anche per me :) – panipsilos
Hi Eric sto seguendo il link github fornito da voi. Siamo di fronte all'errore proibito. Un'altra domanda è nel client jest normale che passiamo all'endpoint di ricerca elastico. Ma qui stiamo passando solo il nome del servizio e la regione. Potete fornire codice di esempio o guida per risolvere il nostro problema. –
Ciao @MohanShanmugam. L'errore vietato è probabilmente dovuto a errata configurazione delle policy di accesso o cattive credenziali. Ho aggiunto un esempio di utilizzo nella risposta. Spero che questo ti aiuti. –