2015-10-17 110 views
1

我正在尝试将Elasticsearch Service,Logstash和Amazon SQS作为接收点,用于发送需要存储在ES中的各种物联网设备的消息。我希望作为一个初步的概念证明,我可以使用SQS作为a)针对任何Elasticsearch停机时间(即保持消息回复时)的缓冲区和b)将消息分发到ES中的方式比简单地将Elasticsearch打开以供公众插入更均匀一致。亚马逊SQS作为物联网消息入口点

由于Elasticsearch无法拉取消息,SQS无法推送消息,因此我使用安装在EC2实例上的Logstash作为中间人拉动然后推送。这似乎工作,但只有当消息通过SQS“发送消息”控制台或我订阅SQS的SNS主题发送时。

当试图通过cURL发送消息到SQS时,我得到“AccessDenied”或“UnknownOperationException”。我将政策设置为委托人:*和行动:SQS:*。下面是我的SQS权限策略:

{ 
    "Version": "2012-10-17", 
    "Id": "arn:aws:sqs:us-east-1:843348267853:testQueue/SQSDefaultPolicy", 
    "Statement": [ 
    { 
     "Sid": "Sid1445050222773", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "SQS:*", 
     "Resource": "arn:aws:sqs:us-east-1:843348267853:testQueue" 
    } 
    ] 
} 

我试过多种不同的卷曲的命令:

curl -H "Accept: application/json" -d "key=value&key1=value1" https://sqs.us-east-1.amazonaws.com/843348267853/testQueue 

< UnknownOperationException />

curl -k -vv -XPOST 'https://sqs.us-east-1.amazonaws.com/843348267853/testQueue' -d '{\"name\":\"Mike\"}' 

上传完全寄出:131 ou服务器日期:星期六,二零一五年十月十七日2时53分44秒GMT
内容类型:文本/ XML的Content-Length:341的131个字节
HTTP/1.1 403禁止
服务器服务器未列入黑名单
服务器吨
连接:保活X-AMZN-的requestId:61f08380-ec65-5229-8732-cd1b561d2069

连接#0主办sqs.us-east-1.amazonaws.com原封不动发件人AccessDenied访问 到资源 https://sqs.us-east-1.amazonaws.com/843348267853/testQueue is denied.61f08380-ec65-5229-8732-cd1b561d2069

我试过cURL命令的多个其他变体,没有运气。

我的印象是,为*(所有)用户选择*(所有)权限将允许公共/匿名消息发送特权?

显然,我的目标是将其限制在特定的用户,但目前我还没有到达这一点,我们还没有到达从物联网设备签署消息的地步。

我的问题是:

1)我在做什么错在这里,我无法通过卷曲发送消息? 2)我是否构建了这个权利(即Public msg - > SQS - > EC2 Logstash - > ES)?或者我应该以不同的方式进行讨论?

谢谢。

回答

1

这句法似乎很好地工作:

curl -d "Action=SendMessage&Version=2011-10-01&MessageBody=example" https://sqs.us-east-1.amazonaws.com/843348267853/testQueue