您如何配置ECS以允许访问Kinesis Stream

问题描述 投票:1回答:1

我有一个用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端点是否正确,所以我不确定我缺少什么?

docker .net-core amazon-ecs amazon-kinesis
1个回答
0
投票

这最终是一个愚蠢的错误。我有不同的设置机制来初始化AmazonKinesisClient,具体取决于客户端是在云中运行(使用IAM角色)还是在服务器上运行(使用IAM用户)。

云初始化试图从Kinesis流名称确定AWS区域,这是无法做到的,因此以后的调用失败。

© www.soinside.com 2019 - 2024. All rights reserved.