DynamoDB Local Stream plugin for serverless-aws-lambda
npm install serverless-aws-lambda-ddb-streams> DynamoDB local Streams for serverless-aws-lambda
``bash`
yarn add -D serverless-aws-lambda-ddb-streamsor
npm install -D serverless-aws-lambda-ddb-streams
use serverless-aws-lambda's defineConfig to import this plugin
`js
// config.js
import { defineConfig } from "serverless-aws-lambda/defineConfig";
import { dynamoStream } from "serverless-aws-lambda-ddb-streams";
export default defineConfig({
plugins: [dynamoStream(dynamoDbClientConfig, pluginOptions)],
});
`
Configuration used to connect to DynamoDB Tables.
By default the plugin uses following configuration:
`json`
{
"endpoint": "http://127.0.0.1:8000",
"region": "ddblocal",
"credentials": { "accessKeyId": "test", "secretAccessKey": "test" }
}
If after connecting to the table, StreamEnabled is false, the plugin will try to enable it.
See docker-compose.yml to bootstrap local instance of DynamoDB using Docker.
- waitBeforeInit:
An error will be thrown if after "waitBeforeInit" (in seconds) the plugin was not able to connect to the Table. default 25.
- watchInterval:
interval (in seconds) to check for new streamable records. default 2
`yamlserverless.yml
service: sls-project
frameworkVersion: "3"
plugins:
- serverless-aws-lambda
custom:
serverless-aws-lambda:
configPath: ./config.default
provider:
name: aws
runtime: nodejs20.x
region: eu-west-1
functions:
myAwsomeLambda:
handler: src/handlers/lambda.default
events:
- stream:
arn: arn:aws:dynamodb:region:XXXXXX:table/Banana/stream/1970-01-01T00:00:00.000
batchSize: 3
`
`yaml`
- stream:
arn: arn:aws:dynamodb:region:XXXXXX:table/Banana/stream/1970-01-01T00:00:00.000
`yaml`
- stream:
type: dynamodb
arn:
Fn::GetAtt: [MyDynamoDbTable, StreamArn]
`yaml`
- stream:
arn:
Fn::ImportValue: MyExportedDynamoDbStreamArnId
`yaml`
- stream:
arn:
Ref: MyDynamoDbTableStreamArn
`yaml`
- stream:
type: dynamodb
arn: !GetAtt dynamoTable.StreamArn
`yaml`
functions:
myAwsomeLambda:
handler: src/handlers/lambda.default
events:
- stream:
arn: arn:aws:dynamodb:region:XXXXXX:table/Banana/stream/1970-01-01T00:00:00.000
batchSize: 3
filterPatterns:
- eventName: [INSERT]
- dynamodb:
NewImage:
OrderId:
N:
- numeric: [">", 4]
ā
supported
š planned
ā not planned
- ā
batchSize
- ā
batchWindow
- ā
bisectBatchOnFunctionError
- ā
destinations (requires AWS Local SNS and/or AWS Local SQS)
- ā
enabled
- ā
filterPatterns
- ā
functionResponseType
- ā
maximumRecordAgeInSeconds
- ā
maximumRetryAttempts
- ā startingPosition (uses always TRIM_HORIZON)LATEST` when multiple Tables are created.
- DynamoDB Local dont works well with
- As a workaround recreate a new table before starting the app.
- ā startingPositionTimestamp
- ā
tumblingWindowInSeconds
- ā parallelizationFactor