Вывод Windows Logstash в AWS SQS с ролью IAM EC2 Не удается получить доступ к очереди SQS

Мне кажется, что я что-то упускаю здесь, поскольку ни у кого в Интернете нет проблем. У меня есть установка экземпляра Windows Server 2008 R2 EC2 с ролью IAM, которая позволяет sqs:SendMessage. Я успешно отправил сообщение в командной строке, используя интерфейс командной строки AWS и команду 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.

Спасибо!


person Thien    schedule 20.02.2015    source источник
comment
Информация профиля IAM проверяется последней в соответствии со страницей документации. Возможно, сначала читается один из других методов (например, файл учетных данных)? Документ: logstash.net/docs/1.4.2/outputs/sqs   -  person John Rotenstein    schedule 22.02.2015
comment
Я еще раз все перепроверил и понял, что неправильно понял документацию, когда она ссылалась на политику защиты прав потребителей. Я думал, что это означает, что logstash читает очередь, а не logstash отправляет в очередь. Добавлены действия политики (за исключением несуществующих *Batch), и теперь это работает.   -  person Thien    schedule 24.02.2015


Ответы (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"
}
person Thien    schedule 23.02.2015