Как настроить ECS для разрешения доступа к Kinesis Stream - PullRequest
1 голос
/ 25 февраля 2020

У меня есть сервер сокетов, написанный на c# (. net ядро), который получает данные от устройств через TCP-соединение. Затем я внедряю это в Amazon ECS.

Изначально я помещал в очередь полученные данные, используя Amazon SQS, но я переработал свое приложение для использования потоков Kinesis.

Если я запускаю приложение ядра. net на моей машине для разработки, все в порядке. Если я запускаю его в контейнере docker локально, он также работает правильно. Проблема заключается в том, что при развертывании в качестве задачи ECS возникает следующая ошибка при вызове Kinesis SDK для PutRecords:

System.Net.Http.HttpRequestException: No such device or address ---> System.Net.Sockets.SocketException: No such device or address

Группа безопасности показывает, что у меня нет исходящих правил, которые могут блокировать доступ к Kinesis. Сначала я думал, что мне может понадобиться добавить что-нибудь в файл dockerfile, но локальное тестирование показывает, что это тоже не проблема.

Я проверил и перепроверил, что конечная точка Kinesis верна, поэтому я не уверен, что мне не хватает?

1 Ответ

0 голосов
/ 27 февраля 2020

В конце концов, это была глупая ошибка. У меня были разные механизмы установки для инициализации AmazonKinesisClient в зависимости от того, работал клиент в облаке (с использованием роли IAM) или убегал от него на сервер (с использованием пользователя IAM).

Инициализация облака пытался определить регион AWS по имени потока Kinesis, что не удалось сделать, и поэтому будущие вызовы не выполнялись.

...