我正在尝试将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)?或者我应该以不同的方式进行讨论?
谢谢。