sqs

Milestone: 1

Push events to an Amazon Web Services Simple Queue Service (SQS) queue.

SQS is a simple, scalable queue system that is part of the Amazon Web Services suite of tools.

Although SQS is similar to other queuing systems like AMQP, it uses a custom API and requires that you have an AWS account. See http://aws.amazon.com/sqs/ for more details on how SQS works, what the pricing schedule looks like and how to setup a queue.

To use this plugin, you must:

  • Have an AWS account
  • Setup an SQS queue
  • Create an identify that has access to publish messages to the queue.

The “consumer” identity must have the following permissions on the queue:

  • sqs:ChangeMessageVisibility
  • sqs:ChangeMessageVisibilityBatch
  • sqs:GetQueueAttributes
  • sqs:GetQueueUrl
  • sqs:ListQueues
  • sqs:SendMessage
  • sqs:SendMessageBatch

Typically, you should setup an IAM policy, create a user and apply the IAM policy to the user. A sample policy is as follows:

 {
   "Statement": [
     {
       "Sid": "Stmt1347986764948",
       "Action": [
         "sqs:ChangeMessageVisibility",
         "sqs:ChangeMessageVisibilityBatch",
         "sqs:DeleteMessage",
         "sqs:DeleteMessageBatch",
         "sqs:GetQueueAttributes",
         "sqs:GetQueueUrl",
         "sqs:ListQueues",
         "sqs:ReceiveMessage"
       ],
       "Effect": "Allow",
       "Resource": [
         "arn:aws:sqs:us-east-1:200850199751:Logstash"
       ]
     }
   ]
 }

See http://aws.amazon.com/iam/ for more details on setting up AWS identities.

Synopsis

This is what it might look like in your config file:
output {
  sqs {
    access_key_id => ... # string (optional)
    aws_credentials_file => ... # string (optional)
    batch => ... # boolean (optional), default: true
    batch_events => ... # number (optional), default: 10
    batch_timeout => ... # number (optional), default: 5
    codec => ... # codec (optional), default: "plain"
    proxy_uri => ... # string (optional)
    queue => ... # string (required)
    region => ... # string, one of ["us-east-1", "us-west-1", "us-west-2", "eu-west-1", "ap-southeast-1", "ap-southeast-2", "ap-northeast-1", "sa-east-1", "us-gov-west-1"] (optional), default: "us-east-1"
    secret_access_key => ... # string (optional)
    use_ssl => ... # boolean (optional), default: true
    workers => ... # number (optional), default: 1
  }
}

Details

access_key_id

  • Value type is string
  • There is no default value for this setting.

This plugin uses the AWS SDK and supports several ways to get credentials, which will be tried in this order…
1. Static configuration, using access_key_id and secret_access_key params in logstash plugin config
2. External credentials file specified by aws_credentials_file
3. Environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
4. Environment variables AMAZON_ACCESS_KEY_ID and AMAZON_SECRET_ACCESS_KEY
5. IAM Instance Profile (available when running inside EC2)

aws_credentials_file

  • Value type is string
  • There is no default value for this setting.

Path to YAML file containing a hash of AWS credentials.
This file will only be loaded if access_key_id and secret_access_key aren’t set. The contents of the file should look like this:

:access_key_id: "12345"
:secret_access_key: "54321"

batch

  • Value type is boolean
  • Default value is true

Set to true if you want send messages to SQS in batches with batch_send from the amazon sdk

batch_events

  • Value type is number
  • Default value is 10

If batch is set to true, the number of events we queue up for a batch_send.

batch_timeout

  • Value type is number
  • Default value is 5

If batch is set to true, the maximum amount of time between batch_send commands when there are pending events to flush.

codec

  • Value type is codec
  • Default value is "plain"

The codec used for output data. Output codecs are a convenient method for encoding your data before it leaves the output, without needing a separate filter in your Logstash pipeline.

exclude_tags DEPRECATED

  • DEPRECATED WARNING: This config item is deprecated. It may be removed in a further version.
  • Value type is array
  • Default value is []

Only handle events without any of these tags. Note this check is additional to type and tags.

proxy_uri

  • Value type is string
  • There is no default value for this setting.

URI to proxy server if required

queue (required setting)

  • Value type is string
  • There is no default value for this setting.

Name of SQS queue to push messages into. Note that this is just the name of the queue, not the URL or ARN.

region

  • Value can be any of: "us-east-1", "us-west-1", "us-west-2", "eu-west-1", "ap-southeast-1", "ap-southeast-2", "ap-northeast-1", "sa-east-1", "us-gov-west-1"
  • Default value is "us-east-1"

The AWS Region

secret_access_key

  • Value type is string
  • There is no default value for this setting.

The AWS Secret Access Key

tags DEPRECATED

  • DEPRECATED WARNING: This config item is deprecated. It may be removed in a further version.
  • Value type is array
  • Default value is []

Only handle events with all of these tags. Note that if you specify a type, the event must also match that type. Optional.

type DEPRECATED

  • DEPRECATED WARNING: This config item is deprecated. It may be removed in a further version.
  • Value type is string
  • Default value is ""

The type to act on. If a type is given, then this output will only act on messages with the same type. See any input plugin’s “type” attribute for more. Optional.

use_ssl

  • Value type is boolean
  • Default value is true

Should we require (true) or disable (false) using SSL for communicating with the AWS API
The AWS SDK for Ruby defaults to SSL so we preserve that

workers

  • Value type is number
  • Default value is 1

The number of workers to use for this output. Note that this setting may not be useful for all outputs.


This is documentation from lib/logstash/outputs/sqs.rb