@matheusm-luz/serverless-offline-sqs
v1.0.0
Published
This Serverless-offline plugin emulates AWS λ and SQS queue on your local machine. To do so, it listens SQS queue and invokes your handlers.
Maintainers
Readme
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-sqsThen, 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-offlineHow 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: trueSQS 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: falseUsage
To enable this feature, simply set:
custom:
serverless-offline-sqs:
autoStartAllQueues: trueThis 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.
