2015-10-17 107 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