serverless-offline-dynamodb-streams
Version:
Emulate AWS λ and DynamoDB streams locally when developing your Serverless project
78 lines (58 loc) • 2.45 kB
Markdown
# serverless-offline-dynamodb-streams
This Serverless-offline-dynamodb-streams plugin emulates AWS λ and DynamoDBStreams on your local machine. To do so, it listens DynamoDBStreams stream and invokes your handlers.
*Features*:
- [Serverless Webpack](https://github.com/serverless-heaven/serverless-webpack/) support.
- DynamoDBStreams configurations: batchsize and startingPosition.
## Installation
First, add `serverless-offline-dynamodb-streams` to your project:
```sh
npm install serverless-offline-dynamodb-streams
```
Then inside your project's `serverless.yml` file, add following entry to the plugins section before `serverless-offline` (and after `serverless-webpack` if present): `serverless-offline-dynamodb-streams`.
```yml
plugins:
- serverless-webpack
- serverless-offline-dynamodb-streams
- serverless-offline
```
[See example](../../tests/serverless-plugins-integration/README.md#dynamodb-streams)
## Configure
### Functions
Ths configuration of function of the plugin follows the [serverless documentation](https://serverless.com/framework/docs/providers/aws/events/streams/).
```yml
functions:
myKinesisHandler:
handler: handler.compute
events:
- stream:
enabled: true
type: dynamodb
arn: arn:aws:dynamodb:eu-west-1:XXXXXX:table/myStream/stream/2018-07-02T19:48:31.121
batchSize: 10
startingPosition: TRIM_HORIZON
```
### DynamoDB
The configuration of [`aws.DynamoDBStreams`'s client](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDBStreams.html#constructor-property) of the plugin is done by defining a `custom: serverless-offline-dynamodb-streams` object in your `serverless.yml` with your specific configuration.
You could use [mhart's Dynalite](https://github.com/mhart/dynalite) with the following configuration:
```yml
custom:
serverless-offline-dynamodb-streams:
apiVersion: '2013-12-02'
endpoint: http://0.0.0.0:8000
region: eu-west-1
accessKeyId: root
secretAccessKey: root
skipCacheInvalidation: false
readInterval: 500
```
> `arn` could be deduce from `tableName` if your add the key `tableName` in your function's configuration. Useful if your use dynalite and regularly recreate a new DynamoDBStreams.
```yml
functions:
myKinesisHandler:
handler: handler.compute
events:
- stream:
enabled: true
type: dynamodb
tableName: myTable
```