【问题标题】:Windows Logstash output to AWS SQS with IAM EC2 Role "Unable to access SQS queue"具有 IAM EC2 角色“无法访问 SQS 队列”的 Windows Logstash 输出到 AWS SQS
【发布时间】:2015-02-20 20:52:26
【问题描述】:

我觉得我在这里遗漏了一些东西,因为 Interwebs 上似乎没有人有任何问题。我有一个 Windows Server 2008 R2 EC2 实例设置,其 IAM 角色允许sqs:SendMessage。我使用 AWS CLI 和命令 aws sqs send-message 在命令行上成功发送了一条消息。当我尝试使用 Logstash-1.4.2 时,出现以下错误:

Unable to access SQS queue 'Dev-ELK-LogstashBuffer': The specified queue does not exist or you do not have access to it. {:level=>:error}
Failed to flush outgoing items {:outgoing_count=>1, :exception=>#<NoMethodError: undefined method `batch_send' for nil:NilClass>, :backtrace=>
["C:/logstash/logstash-1.4.2/lib/logstash/outputs/sqs.rb:131:in `flush'", 
"C:/logstash/logstash-1.4.2/vendor/bundle/jruby/1.9/gems/stud-0.0.17/lib/stud/buffer.rb:219:in `buffer_flush'", 
"org/jruby/RubyHash.java:1339:in `each'", 
"C:/logstash/logstash-1.4.2/vendor/bundle/jruby/1.9/gems/stud-0.0.17/lib/stud/buffer.rb:216:in `buffer_flush'", 
"C:/logstash/logstash-1.4.2/vendor/bundle/jruby/1.9/gems/stud-0.0.17/lib/stud/buffer.rb:159:in `buffer_receive'", 
"C:/logstash/logstash-1.4.2/lib/logstash/outputs/sqs.rb:123:in `receive'", 
"C:/logstash/logstash-1.4.2/lib/logstash/outputs/base.rb:86:in `handle'", 
"(eval):129:in `initialize'", 
"org/jruby/RubyProc.java:271:in `call'", 
"C:/logstash/logstash-1.4.2/lib/logstash/pipeline.rb:266:in `output'", 
"C:/logstash/logstash-1.4.2/lib/logstash/pipeline.rb:225:in `outputworker'", 
"C:/logstash/logstash-1.4.2/lib/logstash/pipeline.rb:152:in `start_outputs'"], 
:level=>:warn}

这是我的 logstash 输出配置:

output {
    sqs {
        queue => "Dev-ELK-LogstashBuffer"
        region  => "us-west-2"
        use_ssl => true
    }

    stdout { codec => rubydebug }
}

我可以直接使用 elasticsearch 输出,但尝试在我的服务器和 elasticsearch 集群之间添加消息队列缓冲区。

谢谢!

【问题讨论】:

  • 最后根据文档页面检查 IAM 配置文件信息。也许首先读取其他方法之一(例如凭据文件)?文档:logstash.net/docs/1.4.2/outputs/sqs
  • 我再次仔细检查了所有内容,并意识到当文档提到“消费者”政策时我误解了文档。我认为这意味着 logstash 读取队列,而不是 logstash 发送到队列。添加了策略操作(减去不存在的 *Batch 操作),它现在可以工作了。

标签: elasticsearch windows-server-2008 logstash amazon-sqs amazon-iam


【解决方案1】:

正确的 IAM 政策:

{
    "Statement":[
        {
            "Resource": [
                "arn:aws:sqs:us-west-2:1111111:Dev-ELK-LogstashBuffer"
            ],
            "Action":[
                "sqs:SendMessage",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:ListQueues",
                "sqs:ChangeMessageVisibility"
            ],
            "Effect":"Allow"
        }
    ],
    "Version":"2012-10-17"
}

【讨论】:

    猜你喜欢
    • 2018-01-22
    • 1970-01-01
    • 2020-07-01
    • 2016-05-27
    • 2016-04-06
    • 2017-05-27
    • 2015-12-08
    • 2021-07-11
    • 2012-05-18
    相关资源
    最近更新 更多