Я пытаюсь подключиться к 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
Программисты JAVA общаются здесь
1716900799
Anonymous
Я пытаюсь подключиться к 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);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78544238/aws-opensearch-connectivity-with-io-searchbox-jest-in-spring-boot-application[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия