- Fork on serverless-offline-sqs to support new version of serverless-offline and localstack in docker
This Serverless-offline plugin emulates AWS λ and SQS queue on your local machine. To do so, it listens SQS queue and invokes your handlers.
Features:
- Serverless Webpack support.
- SQS configurations: batchsize.
First, add serverless-offline-sqs-external
to your project:
npm install serverless-offline-sqs-external
Then inside your project's serverless.yml
file, add following entry to the plugins section before serverless-offline
(and after serverless-webpack
if presents): serverless-offline-sqs-external
.
plugins:
- serverless-webpack
- serverless-offline-sqs-external
- serverless-offline
This plugin listens to sqs event and invoke offline function to process event.
The configuration of function of the plugin 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: # Support for Fifo queue creation starts from 3.1 only
Type: AWS::SQS::Queue
Properties:
QueueName: MyFifthQueue.fifo
FifoQueue: true
ContentBasedDeduplication: true
The configuration of aws.SQS
's client of the plugin is done by defining a custom: serverless-offline-sqs-external
object in your serverless.yml
with your specific configuration.
You could use ElasticMQ with the following configuration:
custom:
serverless-offline-sqs-external:
autoCreate: true # create queue if not exists
apiVersion: '2012-11-05'
host: localhost
port: 9324
https: false # default false
region: eu-west-1
accessKeyId: root
secretAccessKey: root
skipCacheInvalidation: false
custom:
serverless-offline-sqs-external:
autoCreate: true # create queue if not exists
apiVersion: '2012-11-05'
endpoint: 'http://localhost:9324'
region: eu-west-1
accessKeyId: root
secretAccessKey: root
skipCacheInvalidation: false