Я пытаюсь подключиться к opensearch, развернутому на экземпляре aws EC2. Я создал роли IAM и использую их для доступа к ОС.
Я пытаюсь подключиться к opensearch, развернутому на AWS. Я создал роль IAM, которая будет использоваться для аутентификации, когда я отправляю любой запрос в opensearch. Когда я пытаюсь выполнить любой запрос через jestclient, я получаю несанкционированную ошибку 401, не знаю, где я ошибаюсь. Пожалуйста, изучите это и дайте мне знать, что я могу сделать, чтобы это исправить. Также дайте мне знать, если вам нужны какие-либо другие подробности.
А также поделюсь фрагментом кода и журналами для анализа.
@Configuration
public class OpenSearchConfig {
private static final Logger logger = LoggerFactory.getLogger(OpenSearchService.class);
private static final String SERVICE_NAME = "es"; // Elasticsearch service name for AWS
private static final String REGION = "XXXX"; // Replace with your OpenSearch region
private static final String OPEN_SEARCH_ENDPOINT = "END_POINT URL"; // Replace with your OpenSearch endpoint
@Bean
public JestClient jestClient() {
// Create a signer
AWS4Signer signer = new AWS4Signer();
signer.setServiceName(SERVICE_NAME);
signer.setRegionName(REGION);
// Interceptor for signing requests
HttpRequestInterceptor interceptor = new AWSRequestSigningApacheInterceptor(SERVICE_NAME, signer, new DefaultAWSCredentialsProviderChain());
// Jest client configuration
HttpClientConfig clientConfig = new HttpClientConfig.Builder(OPEN_SEARCH_ENDPOINT)
.multiThreaded(true)
.build();
// Jest client factory
JestClientFactory factory = new JestClientFactory() {
@Override
protected HttpAsyncClientBuilder configureHttpClient(HttpAsyncClientBuilder builder) {
return builder.addInterceptorLast(interceptor);
}
};
factory.setHttpClientConfig(clientConfig);
logger.info("connection successful");
return factory.getObject();
}
}
public class OpensearchApplication implements CommandLineRunner {
@Autowired
private JestClient jestClient;
private static final Logger logger = LoggerFactory.getLogger(OpensearchApplication.class);
public static void main(String[] args) {
SpringApplication.run(OpensearchApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Search search = new Search.Builder(query)
.addIndex(index)
.build();
try {
SearchResult result = jestClient.execute(search);
logger.info("Search response: {}", result.getJsonString());
if (!result.isSucceeded()) {
logger.error("Search failed: {}", result.getErrorMessage());
}
System.out.println(result.getJsonString());
} catch (IOException e) {
logger.error("Search request failed", e);
}
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... pplication
Возможность подключения AWS Opensearch с помощью io.searchbox jest в приложении весенней загрузки ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение