@matheusm-luz/serverless-offline-sqs

1.0.0 • Public • Published

serverless-offline-sqs (Forked Version)

This Serverless-offline plugin emulates AWS λ and SQS queues on your local machine. It listens to SQS queues and invokes your handlers accordingly.

Features

  • Serverless Webpack support.
  • SQS configurations: batchsize.
  • New in this fork: Automatically starts all SQS queues, even those not associated with a handler.

Installation

First, add serverless-offline-sqs to your project:

npm install serverless-offline-sqs

Then, inside your project's serverless.yml file, add the following entry to the plugins section before serverless-offline (and after serverless-webpack if present):

plugins:
  - serverless-webpack
  - serverless-offline-sqs
  - serverless-offline

See example

How It Works

To emulate AWS SQS queues locally, an actual queue system must be running. One such implementation is ElasticMQ, a standalone in-memory queue system that provides an AWS SQS-compatible interface. It can run independently or inside a Docker container.

ElasticMQ should be initialized using the AWS CLI, either inside another container or on your local machine. Once initialized, the plugin can be configured.

Configuration

Functions

Function configuration follows the Serverless documentation.

functions:
  mySQSHandler:
    handler: handler.compute
    events:
      - sqs: arn:aws:sqs:region:XXXXXX:MyFirstQueue
      - sqs:
          arn: arn:aws:sqs:region:XXXXXX:MySecondQueue
      - sqs:
          queueName: MyThirdQueue
          arn:
            Fn::GetAtt:
              - MyThirdQueue
              - Arn
      - sqs:
          arn:
            Fn::GetAtt:
              - MyFourthQueue
              - Arn
      - sqs:
          arn:
            Fn::GetAtt:
              - MyFifthQueue
              - Arn
resources:
  Resources:
    MyFourthQueue:
      Type: AWS::SQS::Queue
      Properties:
        QueueName: MyFourthQueue

    MyFifthQueue:
      Type: AWS::SQS::Queue
      Properties:
        QueueName: MyFifthQueue.fifo
        FifoQueue: true
        ContentBasedDeduplication: true

SQS Configuration

AWS.SQS client configuration is handled using a custom: serverless-offline-sqs section in serverless.yml.

To use ElasticMQ, configure it as follows:

custom:
  serverless-offline-sqs:
    autoCreate: true
    apiVersion: '2012-11-05'
    endpoint: http://0.0.0.0:9324
    region: eu-west-1
    accessKeyId: root
    secretAccessKey: root
    skipCacheInvalidation: false

Usage

To enable this feature, simply set:

custom:
  serverless-offline-sqs:
    autoStartAllQueues: true

This ensures all defined queues in the resources section are available locally when running serverless offline.


For more details, refer to the original serverless-offline-sqs repository and ElasticMQ documentation.

Package Sidebar

Install

npm i @matheusm-luz/serverless-offline-sqs

Weekly Downloads

2

Version

1.0.0

License

MIT

Unpacked Size

18.8 kB

Total Files

6

Last publish

Collaborators

  • matheusm-luz