我的公司有一个消息传递系统,它以JSON格式发送实时消息,它不是在AWS上构建的,也不会与AWS有任何VPN连接.
我们的团队正在尝试使用AWS SQS接收这些消息,然后将DynamoDB处理JSON消息发送到TSV,然后加载到RDS.
但是,根据FAQ,SQS只能从AWS内部接收消息. https://aws.amazon.com/sqs/faqs/
问:谁可以对消息队列执行操作?
只有AWS账户所有者(或账户所有者已委派权限的AWS账户才能对Amazon SQS消息队列执行操作).
为了使用SQS,我能想到的一种方法是创建一个面向公众的EC2实例,它接收消息并传递给SQS.
我的问题是:
我的想法是否正确?
如果它是正确的,你可以分享有关如何在这个EC2实例上构建任何应用程序以实现功能的任何细节(我没有应用程序开发的经验,你的见解真的很感激!)
AWS中是否有更容易/更好的选项可以实现在我的用例中接收消息的目标?
Michael - sq.. 6
我的想法是否正确?
不,不是.
你在FAQ中错误地解释了(当然有点不清楚)的信息.
SQS可从Internet上的任何位置访问和使用.它唯一暴露的接口是HTTP(S).事实上,从EC2内部,除非EC2实例实际上具有对Internet的出站访问权限,否则无法访问SQS .
文档中提出的观点并不是您需要在AWS内部使用队列,而是需要拥有一组经过授权的AWS凭证才能使用队列.¹
如果您拥有AWS账户,则您拥有凭据,并且可以使用SQS.您无需从"内部"AWS访问队列.
选择离服务器最近的终端(最低延迟),您应该可以从任何地方找到它并且可以访问它.
¹可以将问题配置为在创建后允许匿名访问.(不要这样做,我只是说这是可能的.)FAQ的这一部分似乎是指一个操作的子集,例如创建队列.
我的想法是否正确?
不,不是.
你在FAQ中错误地解释了(当然有点不清楚)的信息.
SQS可从Internet上的任何位置访问和使用.它唯一暴露的接口是HTTP(S).事实上,从EC2内部,除非EC2实例实际上具有对Internet的出站访问权限,否则无法访问SQS .
文档中提出的观点并不是您需要在AWS内部使用队列,而是需要拥有一组经过授权的AWS凭证才能使用队列.¹
如果您拥有AWS账户,则您拥有凭据,并且可以使用SQS.您无需从"内部"AWS访问队列.
选择离服务器最近的终端(最低延迟),您应该可以从任何地方找到它并且可以访问它.
¹可以将问题配置为在创建后允许匿名访问.(不要这样做,我只是说这是可能的.)FAQ的这一部分似乎是指一个操作的子集,例如创建队列.