Я использую класс ElasticClient C # для подключения к экземпляру Elasticsearch, размещенному на AWS.
var pool = new SingleNodeConnectionPool(new Uri(Url));
var httpConnection = new AwsHttpConnection(Region);
var config = new ConnectionSettings(pool, httpConnection)
.PrettyJson()
.DisableDirectStreaming()
.DefaultTypeName(TYPE)
.DefaultIndex(INDEX);
_client = new ElasticClient(config);
Для установки ключа доступа и секрета у меня есть файл учетных данных, хранящийся на моем компьютере с Windows здесь: C: \ Users \ {username} \. Aws \ credential. У него есть запись «по умолчанию», поэтому установка имени профиля вручную не требуется. Это работает нормально, когда я запускаю свое веб-приложение ASP.NET Core с Launch, установленным в Project.
![enter image description here](https://i.stack.imgur.com/EaBOL.png)
Однако, как только я перехожу на Launch: IIS ...
![enter image description here](https://i.stack.imgur.com/RSWtJ.png)
... тогда соединение Elasticsearch не установлено. Всякий раз, когда я пытаюсь выполнить запрос, он выдает ошибку:
Сообщение = Неверный ответ NEST, созданный из неудачного низкого уровня
вызов POST: / {url1} / {url2} / _ search? pretty = true & typed_keys = true
Журнал аудита этого вызова API:
- 1 BadRequest: Узел: https://{url1}.us -east-1.es.amazonaws.com / Взял: 00: 00: 00.0090414
OriginalException: System.Net.Http.HttpRequestException: была предпринята попытка операции с сокетом в недоступной сети --->
System.Net.Sockets.SocketException: была предпринята попытка операции с сокетом
в недоступную сеть
Веб-сайт IIS работает с пулом приложений, настроенным на использование моей учетной записи Windows. Ясно, что он игнорирует учетные данные .aws при работе под IIS. Я также попытался создать профили с помощью расширения AWS Explorer Visual Studio 2017, как «по умолчанию», так и пользовательского.
![enter image description here](https://i.stack.imgur.com/aKCAR.png)
Я попытался установить пакет nuget AWSSDK.Extensions.NETCore.Setup в моем проекте ASP.NET Core и указать пользовательский именованный профиль в appsettings.json, как:
"AWS": {
"Profile": "local-dev-profile",
"Region": "us-east-1"
}
И вот так:
"AppSettings": {
"AWSProfileName": "local-dev-profile",
},
Ни одна из них не работает, я все еще получаю ту же ошибку "Операция с сокетом была предпринята для недоступной сети". Я следовал всем инструкциям AWS и чувствую, что делаю это правильно, но в IIS это просто не сработает. Любая помощь будет оценена.