{"_id":"serverless-plugin-lambda-dead-letter","_rev":"12-9992a7145eb23f9b57329942f7ad53d1","name":"serverless-plugin-lambda-dead-letter","time":{"modified":"2022-06-26T18:07:37.885Z","created":"2017-01-16T02:10:05.027Z","1.0.0":"2017-01-16T02:10:05.027Z","1.0.1":"2017-01-16T02:45:59.503Z","1.0.1-readme":"2017-01-16T03:08:10.505Z","1.0.2":"2017-01-16T03:38:04.151Z","1.1.0":"2017-01-30T01:05:37.058Z","1.2.0":"2017-01-31T05:12:31.077Z","1.2.1":"2017-02-01T04:42:11.284Z"},"maintainers":[{"name":"gmetzker","email":"gmetzker@gmail.com"}],"dist-tags":{"latest":"1.2.1"},"description":"serverless plugin that can configure a lambda with a dead letter queue or topic","readme":"# Serverless Plugin:  Lambda DeadLetterConfig\n\n[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com)\n[![npm version](https://img.shields.io/npm/v/serverless-plugin-lambda-dead-letter.svg)](https://www.npmjs.com/package/serverless-plugin-lambda-dead-letter)\n\n\n[![Build Status](https://travis-ci.org/gmetzker/serverless-plugin-lambda-dead-letter.svg?branch=master)](https://travis-ci.org/gmetzker/serverless-plugin-lambda-dead-letter)\n[![Coverage Status](https://coveralls.io/repos/github/gmetzker/serverless-plugin-lambda-dead-letter/badge.svg?branch=master)](https://coveralls.io/github/gmetzker/serverless-plugin-lambda-dead-letter?branch=master)\n[![dependencies Status](https://img.shields.io/david/gmetzker/serverless-plugin-lambda-dead-letter.svg)](https://david-dm.org/gmetzker/serverless-plugin-lambda-dead-letter)\n[![devDependencies Status](https://img.shields.io/david/dev/gmetzker/serverless-plugin-lambda-dead-letter.svg)](https://david-dm.org/gmetzker/serverless-plugin-lambda-dead-letter?type=dev)\n\n\n\n## What is it?\n\nA [serverless](https://serverless.com/) plugin that can assign a `DeadLetterConfig` to a Lambda function and optionally create a new SQS queue or SNS Topic with a simple syntax.\n\nFailed asynchronous messages for Amazon Lambda can be be sent to an SQS queue or an SNS topic by setting the `DeadLetterConfig`.  Lambda Dead Letter Queues [are documented here](http://docs.aws.amazon.com/lambda/latest/dg/dlq.html).  \n\nAt the time this plugin was developed AWS Cloudformation (and serverless) did not support the `DeadLetterConfig` property of the Lambda so we have introduced a plugin that calls `UpdateFunctionConfiguration` on the lambda after serverless deploys the CloudFormation stack.\n\n## Installation\n\n### Requirements\n* nodeJs > `v4.0`\n* serverless > `v1.4`\n\nInstall the plugin.\n```bash\nnpm install serverless-plugin-lambda-dead-letter\n```\n\nInstall the plugin with npm and reference it in the serverless yaml file [as documented here.](https://serverless.com/framework/docs/providers/aws/guide/plugins/)\n\n```YAML\n# serverless.yml file\n\nplugins:\n  - serverless-plugin-lambda-dead-letter\n```\n\n## How do I use it?\n\nDead letter settings are assigned via a new `deadLetter` property nested under a function in a `serverless.yml` file.  \n\nThere are several methods to configure the Lambda deadLetterConfig.\n\n* [Method-1](#method-1):  Create a new deadLetter SQS queue or SNS Topic\n* [Method-2](#method-2):  Use a pre-existing queue/topic.\n* [Method-3](#method-3):  Use a queue/topic created in the resources.\n* [Remove Dead Letter Resource](#remove-deadletter-resource):  Remove any deadletter queue/topic that was previously assigned.\n\n### Method-1\n\n#### DeadLetter Queue\nUse the `deadLetter.sqs` to create a new dead letter queue for the function.  \n\n\nThe resulting cloudformation stack will contain an SQS Queue and it's respective QueuePolicy.  \n\n#### Create new dead-letter queue by name\n```YAML\n# 'functions' in serverless.yml\n\nfunctions:\n  createUser: # Function name\n    handler: handler.createUser # Reference to function 'createUser' in code\n\n    deadLetter:\n      sqs:  createUser-dl-queue  # New Queue with this name\n```\n\n#### Create new dead-letter queue with properties\n```YAML\n# 'functions' in serverless.yml\n\nfunctions:\n  createUser: # Function name\n    handler: handler.createUser # Reference to function 'createUser' in code\n\n    deadLetter:\n      sqs:      # New Queue with these properties\n        queueName: createUser-dl-queue\n        delaySeconds: 60\n        maximumMessageSize: 2048\n        messageRetentionPeriod: 200000\n        receiveMessageWaitTimeSeconds: 15\n        visibilityTimeout: 300\n```\n\n#### DeadLetter Topic\n\nUse the `deadLetter.sns` to create a new dead letter topic for the function.\n\nThe resulting cloudformation stack will contain an SQS Topic resource.\n\n```YAML\n# 'functions' in serverless.yml\n\nfunctions:\n  createUser: # Function name\n    handler: handler.createUser # Reference to function 'createUser' in code\n\n    deadLetter:\n      sns:  createUser-dl-topic\n```\n\n\n### Method-2\nUse the `targetArn` property to specify the exact SQS queue or SNS topic to use for Lambda dead letter messages.  In this case the queue\\topic must already exist as must the queue\\topic policy.\n\nReference the ARN of an existing queue `createUser-dl-queue`\n```YAML\n# 'functions' in serverless.yml\n\nfunctions:\n  createUser: # Function name\n    handler: handler.createUser # Reference to function 'createUser' in code\n\n    deadLetter:\n      targetArn: arn:aws:sqs:us-west-2:123456789012:createUser-dl-queue\n```\n\n### Method-3\nIf you created a queue\\topic in the `resource` section you can reference it using the `GetResourceArn` pseudo method.  \n\nThis will use the arn of the resource referenced by `{logicalId}`\n```YAML\n    deadLetter:\n      targetArn:\n        GetResourceArn: {logicalId}\n```\nNote:  \n- At present this only works for SQS queues or SNS Topics.\n- If a queue\\topic is created in the `resources` section you will still need to add a resource for the respective queue\\topic policy so that that lambda has permissions to write to the dead letter queue\\topic.\n\nIn this example the `createUser` lambda function is using the new `CreateUserDeadLetterQueue` SQS queue defined in the resources section.\n\n```YAML\n# 'functions' in serverless.yml\n\nfunctions:\n  createUser: # Function name\n\n    handler: handler.createUser # Reference to function 'createUser' in code\n\n    # ...\n\n    deadLetter:\n      targetArn:\n        GetResourceArn: CreateUserDeadLetterQueue\n\nresources:\n    Resources:\n      CreateUserDeadLetterQueue:\n        Type: AWS::SQS::Queue\n        Properties:\n          QueueName: create-user-lambda-dl-queue\n\n      CreateUserDeadLetterQueuePolicy:\n        Type: AWS::SQS::QueuePolicy\n        Properties:\n          Queues:\n            - Ref: CreateUserDeadLetterQueue\n\n            # Policy properties abbreviated but you need more here ...\n```\n\n### Remove DeadLetter Resource\nIf you previously had a DeadLetter target and want to remove it such that there is no dead letter queue or topic you can supply the `deadLetter` object with an empty `targetArn`.  Upon deploy the plugin will run the Lambda `UpdateFunctionConfiguration` and set an empty TargetArn.\n\n```YAML\n# 'functions' in serverless.yml\n\nfunctions:\n  createUser: # Function name\n\n    handler: handler.createUser # Reference to function 'createUser' in code\n\n    # ...\n\n    # Set an empty targetArn to erase previous DLQ settings.\n    deadLetter:\n      targetArn:\n```\n","versions":{"1.0.1":{"name":"serverless-plugin-lambda-dead-letter","version":"1.0.1","description":"serverless plugin that can configure a lambda with a dead letter queue or topic","main":"src/index.js","scripts":{"test":"grunt standards && ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- -R spec 'tests/**/*.test.js'"},"engines":{"node":">=4.0"},"author":{"name":"Gary Metzker"},"license":"MIT","homepage":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter#readme","repository":{"type":"git","url":"git+https://github.com/gmetzker/serverless-plugin-lambda-dead-letter.git"},"bugs":{"url":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter/issues"},"keywords":["serverless","serverless framework","serverless plugin","serverless plugins","lambda","aws","aws lambda","amazon","amazon web services","dead letter","dead letter config","DeadLetterConfig","sqs queue","queue","DLQ","sns topic","topic"],"dependencies":{"bluebird":"^3.4.7"},"devDependencies":{"coveralls":"^2.11.15","eslint":"^3.12.2","eslint-config-airbnb-base":"^11.0.0","eslint-plugin-import":"^2.2.0","expect.js":"^0.3.1","grunt":"^1.0.1","grunt-eslint":"^19.0.0","istanbul":"^0.4.5","mocha":"^3.2.0","sinon":"^1.17.7"},"files":["src"],"gitHead":"df8828c46afc762aa9dc6ccbf23a20c728769250","_id":"serverless-plugin-lambda-dead-letter@1.0.1","_shasum":"98374d86d0feff31c14509e46885e4858ee9a4e4","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"gmetzker","email":"gmetzker@gmail.com"},"dist":{"shasum":"98374d86d0feff31c14509e46885e4858ee9a4e4","tarball":"https://registry.npmjs.org/serverless-plugin-lambda-dead-letter/-/serverless-plugin-lambda-dead-letter-1.0.1.tgz","integrity":"sha512-oMW5hlOzCHRfqoXhLxcbvVT2HYZ+djV1BWzGKKgqbE6LsTP/2MZvsr2sEytaQEnl7m2TaDlPzFL0A8HnqzSqsQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsI3viLcg/97Ja0M0oUIxIgILcBgFdQ8mZ99K0nmVCfwIgMI1IwtlSH00F0sBJIi9Yee4mCNQAdzrajpNw3oYCzbs="}]},"maintainers":[{"name":"gmetzker","email":"gmetzker@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/serverless-plugin-lambda-dead-letter-1.0.1.tgz_1484534757777_0.6211199872195721"},"directories":{}},"1.0.2":{"name":"serverless-plugin-lambda-dead-letter","version":"1.0.2","description":"serverless plugin that can configure a lambda with a dead letter queue or topic","main":"src/index.js","scripts":{"test":"grunt standards && ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- -R spec 'tests/**/*.test.js'"},"engines":{"node":">=4.0"},"author":{"name":"Gary Metzker"},"license":"MIT","homepage":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter#readme","repository":{"type":"git","url":"git+https://github.com/gmetzker/serverless-plugin-lambda-dead-letter.git"},"bugs":{"url":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter/issues"},"keywords":["serverless","serverless framework","serverless plugin","serverless plugins","lambda","aws","aws lambda","amazon","amazon web services","dead letter","dead letter config","DeadLetterConfig","sqs queue","queue","DLQ","sns topic","topic"],"dependencies":{"bluebird":"^3.4.7"},"devDependencies":{"coveralls":"^2.11.15","eslint":"^3.12.2","eslint-config-airbnb-base":"^11.0.0","eslint-plugin-import":"^2.2.0","expect.js":"^0.3.1","grunt":"^1.0.1","grunt-eslint":"^19.0.0","istanbul":"^0.4.5","mocha":"^3.2.0","sinon":"^1.17.7"},"files":["src"],"gitHead":"df8828c46afc762aa9dc6ccbf23a20c728769250","_id":"serverless-plugin-lambda-dead-letter@1.0.2","_shasum":"158473ff0e6e43d7029674034b377dcd2eca6056","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"gmetzker","email":"gmetzker@gmail.com"},"dist":{"shasum":"158473ff0e6e43d7029674034b377dcd2eca6056","tarball":"https://registry.npmjs.org/serverless-plugin-lambda-dead-letter/-/serverless-plugin-lambda-dead-letter-1.0.2.tgz","integrity":"sha512-SeuHFKTgwryry4YnMHBt91HlsQOl40L239Qw6qrf1xmTvK1lUkGUCDPDLoU9X/NlZ4q4ZdxOs0Y3CK6S1wPrCg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5D4fRE3ClHiy6GbDulr0i578R2O9h6Bi4GW9zx/3TmwIgRdM48Xqu96UCg3DXAJZiiCMGH+cFBrwxJfL48GlFbkI="}]},"maintainers":[{"name":"gmetzker","email":"gmetzker@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/serverless-plugin-lambda-dead-letter-1.0.2.tgz_1484537882579_0.0241031339392066"}},"1.1.0":{"name":"serverless-plugin-lambda-dead-letter","version":"1.1.0","description":"serverless plugin that can configure a lambda with a dead letter queue or topic","main":"src/index.js","scripts":{"test":"grunt standards && ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- -R spec 'tests/**/*.test.js'"},"engines":{"node":">=4.0"},"author":{"name":"Gary Metzker"},"license":"MIT","homepage":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter#readme","repository":{"type":"git","url":"git+https://github.com/gmetzker/serverless-plugin-lambda-dead-letter.git"},"bugs":{"url":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter/issues"},"keywords":["serverless","serverless framework","serverless plugin","serverless plugins","lambda","aws","aws lambda","amazon","amazon web services","dead letter","dead letter config","DeadLetterConfig","sqs queue","queue","DLQ","sns topic","topic"],"dependencies":{"bluebird":"^3.4.7"},"devDependencies":{"coveralls":"^2.11.15","eslint":"^3.12.2","eslint-config-airbnb-base":"^11.0.0","eslint-plugin-import":"^2.2.0","expect.js":"^0.3.1","grunt":"^1.0.1","grunt-eslint":"^19.0.0","istanbul":"^0.4.5","mocha":"^3.2.0","sinon":"^1.17.7"},"files":["src"],"gitHead":"3cb497141b024f6ff7cb40c743e425ff1ed6aa56","_id":"serverless-plugin-lambda-dead-letter@1.1.0","_shasum":"c6079570602dfd3da80330445330526b3546623e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"gmetzker","email":"gmetzker@gmail.com"},"dist":{"shasum":"c6079570602dfd3da80330445330526b3546623e","tarball":"https://registry.npmjs.org/serverless-plugin-lambda-dead-letter/-/serverless-plugin-lambda-dead-letter-1.1.0.tgz","integrity":"sha512-KLCSOv61w8BRLOyaRsLmXPRWT8MYIGEq0Xgbl4jm70R+JskHqFvff6kjTBe1tHDQhbd8Sx/8ufh/NgdU+250NQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjkNAc6cJcXnpK4yq3lWsB2dInN2sjf8aQWBaB8ni7oAIhAJoNOC25QRZFtguhfPpl282ZKiHeueTfclyxK5Wcx5r5"}]},"maintainers":[{"name":"gmetzker","email":"gmetzker@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/serverless-plugin-lambda-dead-letter-1.1.0.tgz_1485738336833_0.6546628184150904"}},"1.2.0":{"name":"serverless-plugin-lambda-dead-letter","version":"1.2.0","description":"serverless plugin that can configure a lambda with a dead letter queue or topic","main":"src/index.js","scripts":{"test":"grunt standards && ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- -R spec 'tests/**/*.test.js'"},"engines":{"node":">=4.0"},"author":{"name":"Gary Metzker"},"license":"MIT","homepage":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter#readme","repository":{"type":"git","url":"git+https://github.com/gmetzker/serverless-plugin-lambda-dead-letter.git"},"bugs":{"url":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter/issues"},"keywords":["serverless","serverless framework","serverless plugin","serverless plugins","lambda","aws","aws lambda","amazon","amazon web services","dead letter","dead letter config","DeadLetterConfig","sqs queue","queue","DLQ","sns topic","topic"],"dependencies":{"bluebird":"^3.4.7"},"devDependencies":{"coveralls":"^2.11.15","eslint":"^3.12.2","eslint-config-airbnb-base":"^11.0.0","eslint-plugin-import":"^2.2.0","expect.js":"^0.3.1","grunt":"^1.0.1","grunt-eslint":"^19.0.0","istanbul":"^0.4.5","mocha":"^3.2.0","sinon":"^1.17.7"},"files":["src"],"gitHead":"b9ffa5aa9de3f83a05c2fc209a54012d01593b47","_id":"serverless-plugin-lambda-dead-letter@1.2.0","_shasum":"19130ce1eaad18bf68f746eace188b5a3af9520b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"gmetzker","email":"gmetzker@gmail.com"},"dist":{"shasum":"19130ce1eaad18bf68f746eace188b5a3af9520b","tarball":"https://registry.npmjs.org/serverless-plugin-lambda-dead-letter/-/serverless-plugin-lambda-dead-letter-1.2.0.tgz","integrity":"sha512-tKNq/kTHZq+BeB79O/NU/t1GGiexcZ4Pgy6DbUmJtVpr61UliOC1n1Whi67cpFiwI71dawd0Pcc4i/quZQ+guQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSx8ElMLAD6UHOhLld9L4PlB3/E1OrtUaY1vjzbyUVZwIgSKHpa3eq2K5T2B1XMXeDU8gzD9VbYtPMGMmJODQQ+04="}]},"maintainers":[{"name":"gmetzker","email":"gmetzker@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/serverless-plugin-lambda-dead-letter-1.2.0.tgz_1485839550856_0.484920687507838"}},"1.2.1":{"name":"serverless-plugin-lambda-dead-letter","version":"1.2.1","description":"serverless plugin that can configure a lambda with a dead letter queue or topic","main":"src/index.js","scripts":{"test":"grunt standards && ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- -R spec 'tests/**/*.test.js'"},"engines":{"node":">=4.0"},"author":{"name":"Gary Metzker"},"license":"MIT","homepage":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter#readme","repository":{"type":"git","url":"git+https://github.com/gmetzker/serverless-plugin-lambda-dead-letter.git"},"bugs":{"url":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter/issues"},"keywords":["serverless","serverless framework","serverless plugin","serverless plugins","lambda","aws","aws lambda","amazon","amazon web services","dead letter","dead letter config","DeadLetterConfig","sqs queue","queue","DLQ","sns topic","topic"],"dependencies":{"bluebird":"^3.4.7"},"devDependencies":{"coveralls":"^2.11.15","eslint":"^3.12.2","eslint-config-airbnb-base":"^11.0.0","eslint-plugin-import":"^2.2.0","expect.js":"^0.3.1","grunt":"^1.0.1","grunt-eslint":"^19.0.0","istanbul":"^0.4.5","mocha":"^3.2.0","sinon":"^1.17.7"},"files":["src"],"gitHead":"08784e0b2b3d46e569e9ab94e09a2fbade200e41","_id":"serverless-plugin-lambda-dead-letter@1.2.1","_shasum":"cdd7bcbb6632636832b012a89f9d6aa1ef571e27","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"gmetzker","email":"gmetzker@gmail.com"},"dist":{"shasum":"cdd7bcbb6632636832b012a89f9d6aa1ef571e27","tarball":"https://registry.npmjs.org/serverless-plugin-lambda-dead-letter/-/serverless-plugin-lambda-dead-letter-1.2.1.tgz","integrity":"sha512-Q4n0J1+vZjqDxSksBbA/8gk2SOQjU57JvM2euzq16iMfw6y0fxd7Nj2KS0gs7kXe7tetAkQUJkSmoXF5AtP7gw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2YKWCaFowrFLg+gPFJmmZQ6iMJqgjZEOr69gn7HAbzQIhAO/CZnV+qyeCoTqXAooLLmL3n6dMZLVijRreUJ+72O0f"}]},"maintainers":[{"name":"gmetzker","email":"gmetzker@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/serverless-plugin-lambda-dead-letter-1.2.1.tgz_1485924129485_0.9179008600767702"}}},"homepage":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter#readme","keywords":["serverless","serverless framework","serverless plugin","serverless plugins","lambda","aws","aws lambda","amazon","amazon web services","dead letter","dead letter config","DeadLetterConfig","sqs queue","queue","DLQ","sns topic","topic"],"repository":{"type":"git","url":"git+https://github.com/gmetzker/serverless-plugin-lambda-dead-letter.git"},"author":{"name":"Gary Metzker"},"bugs":{"url":"https://github.com/gmetzker/serverless-plugin-lambda-dead-letter/issues"},"license":"MIT","readmeFilename":"README.md","users":{"wstowersguestdna":true}}