aws-dynamodb-stream-lambda

All classes are under active development and subject to
non-backward compatible changes or removal in any future version.
These are not subject to the
Semantic Versioning
Language | Package |
---|---|
![]() |
aws_solutions_constructs.aws_dynamodb_stream_lambda
|
![]() |
@aws-solutions-constructs/aws-dynamodb-stream-lambda
|
![]() |
software.amazon.awsconstructs.services.dynamodbstreamlambda
|
This AWS Solutions Construct implements a pattern Amazon DynamoDB table with stream to invoke the AWS Lambda function with the least privileged permissions.
Here is a minimal deployable pattern definition:
import { DynamoDBStreamToLambdaProps, DynamoDBStreamToLambda} from '@aws-solutions-constructs/aws-dynamodb-stream-lambda'; new DynamoDBStreamToLambda(this, 'test-dynamodb-stream-lambda', { lambdaFunctionProps: { runtime: lambda.Runtime.NODEJS_14_X, // This assumes a handler function in lib/lambda/index.js code: lambda.Code.fromAsset(`${__dirname}/lambda`), handler: 'index.handler' }, });
Initializer
new DynamoDBStreamToLambda(scope: Construct, id: string, props: DynamoDBStreamToLambdaProps);
Parameters
-
scope
Construct
-
id
string
Pattern Construct Props
Name | Type | Description |
---|---|---|
existingLambdaObj? |
lambda.Function
|
An optional, existing Lambda function to be used instead of the default function.
If an existing function is provided, the lambdaFunctionProps property will be ignored.
|
lambdaFunctionProps? |
lambda.FunctionProps
|
Optional user-provided properties to override the default properties for the
Lambda function. Ignored if an existingLambdaObj is provided.
|
dynamoTableProps? |
dynamodb.TableProps
|
Optional user provided props to override the default props for DynamoDB Table |
existingTableObj? |
dynamodb.Table
|
Existing instance of DynamoDB Table. If this is set, then the dynamoTableProps is ignored. |
dynamoEventSourceProps? |
aws-lambda-event-sources.DynamoEventSourceProps
|
Optional user provided props to override the default props for DynamoDB Event Source |
Pattern Properties
Name | Type | Description |
---|---|---|
dynamoTable |
dynamodb.Table
|
Returns an instance of the DynamoDB table created by the pattern. |
lambdaFunction |
lambda.Function
|
Returns an instance of the Lambda function created by the pattern. |
Lambda function
This pattern requires a Lambda function that can post data into the Elasticsearch
service from the DynamoDB stream. A sample function is provided
here
Default settings
Out-of-the-box implementation of this pattern without any overrides will set the following defaults:
Amazon DynamoDB Table
-
Set the billing mode for DynamoDB Table to On-Demand (Pay per request)
-
Enable server-side encryption for DynamoDB Table using AWS managed KMS Key
-
Creates a partition key called 'id' for DynamoDB Table
-
Retain the Table when deleting the CloudFormation stack
-
Enable continuous backups and point-in-time recovery
AWS Lambda Function
-
Configure limited privilege access IAM role for Lambda function
-
Enable reusing connections with Keep-Alive for NodeJs Lambda function
-
Enable X-Ray tracing
-
Enable Failure-Handling features: enable bisect on function Error; set default Maximum Record Age (24 hours); set default Maximum Retry Attempts (500); and deploy SQS dead-letter queue as destination on failure
-
Set environment variables:
-
AWS_NODEJS_CONNECTION_REUSE_ENABLED
(for Node 10.x and higher functions)
-
Architecture

GitHub
To view the code for this pattern, create/view issues and pull requests, and more: | |
---|---|
![]() |
@aws-solutions-constructs/aws-dynamodb-stream-lambda |