Skip to content

Instantly share code, notes, and snippets.

@DennisKo
Last active April 6, 2020 08:33
Show Gist options
  • Save DennisKo/4bd7e38af0cb6c78a6f07c2ae54524de to your computer and use it in GitHub Desktop.
Save DennisKo/4bd7e38af0cb6c78a6f07c2ae54524de to your computer and use it in GitHub Desktop.
Serverless: Lambda + SQS to handle high load of DB writes
service: myQueue
app: myQueue
org: dennisko
provider:
name: aws
runtime: nodejs12.x
stage: dev
region: "${env:region}"
apiGateway:
minimumCompressionSize: 1024
iamRoleStatements:
- Effect: Allow
Action:
- sqs:SendMessage
- sqs:GetQueueUrl
Resource: arn:aws:sqs:${self:provider.region}:xxx:*
- Effect: Allow
Action:
- sqs:ListQueues
Resource: arn:aws:sqs:${self:provider.region}:xxx:*
plugins:
- serverless-webpack
- serverless-offline
- serverless-dotenv-plugin
custom:
webpack:
webpackConfig: "./webpack.config.js"
packager: yarn
includeModules:
forceExclude:
- aws-sdk
functions:
receiver:
handler: src/receiver.handler
events:
- http:
method: post
path: receive
recorder:
handler: src/recorder.handler
events:
- sqs:
arn: arn:aws:sqs:${self:provider.region}:xxx:MyQueue
batchSize: 1
resources:
Resources:
MyQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: MyQueue
VisibilityTimeout: 30
MessageRetentionPeriod: 1800
RedrivePolicy:
deadLetterTargetArn:
Fn::GetAtt:
- MyDLQ
- Arn
maxReceiveCount: 1
MyDLQ:
Type: AWS::SQS::Queue
Properties:
QueueName: MyDLQ
MessageRetentionPeriod: 1209600
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment