【发布时间】:2020-02-25 15:05:53
【问题描述】:
我有一个套接字服务器,用 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 端点是否正确,所以我不确定我缺少什么?
【问题讨论】:
-
你能分享你的ECS权限角色吗?
-
感谢您的评论,我会回到我的办公桌前。我不怀疑这个角色,因为我使用 cloudformation 来生成一个角色和一个附加了相同策略的 IAM 用户。我使用 IAM 用户的密钥进行本地测试没有问题,所以角色应该执行相同的操作。
-
我做过类似的事情,但它是使用 Java + Python KCL。你觉得跟客户端代码有关吗?
-
目前,我正在考虑在 linux 上运行的 docker 中启动应用程序。我的开发机器正在运行 windows,所以我想知道操作系统之间的行为是否存在差异(我过去看到过差异)
标签: docker .net-core amazon-ecs amazon-kinesis