aws-dynamodbstreams-lambda - AWS Solutions Constructs

aws-dynamodbstreams-lambda

Stability:Stable
Reference Documentation: https://docs.aws.amazon.com/solutions/latest/constructs/
Language Package

Python Logo Python

aws_solutions_constructs.aws_dynamodbstreams_lambda

Typescript Logo Typescript

@aws-solutions-constructs/aws-dynamodbstreams-lambda

Java Logo Java

software.amazon.awsconstructs.services.dynamodbstreamslambda

Overview

This AWS Solutions Construct implements an Amazon DynamoDB table with stream that invokes an AWS Lambda function with the least privileged permissions.

Here is a minimal deployable pattern definition:

Example
Typescript
import { Construct } from 'constructs'; import { Stack, StackProps } from 'aws-cdk-lib'; import { DynamoDBStreamsToLambdaProps, DynamoDBStreamsToLambda} from '@aws-solutions-constructs/aws-dynamodbstreams-lambda'; import * as lambda from 'aws-cdk-lib/aws-lambda'; new DynamoDBStreamsToLambda(this, 'test-dynamodbstreams-lambda', { lambdaFunctionProps: { code: lambda.Code.fromAsset(`lambda`), runtime: lambda.Runtime.NODEJS_22_X, handler: 'index.handler' }, });
Python
from aws_solutions_constructs.aws_dynamodbstreams_lambda import DynamoDBStreamsToLambda from aws_cdk import ( aws_lambda as _lambda, Stack ) from constructs import Construct DynamoDBStreamsToLambda(self, 'test-dynamodbstreams-lambda', lambda_function_props=_lambda.FunctionProps( code=_lambda.Code.from_asset('lambda'), runtime=_lambda.Runtime.PYTHON_3_14, handler='index.handler' ) )
Java
import software.constructs.Construct; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; import software.amazon.awscdk.services.lambda.*; import software.amazon.awscdk.services.lambda.Runtime; import software.amazon.awsconstructs.services.dynamodbstreamslambda.*; new DynamoDBStreamsToLambda(this, "test-dynamodbstreams-lambda", new DynamoDBStreamsToLambdaProps.Builder() .lambdaFunctionProps(new FunctionProps.Builder() .runtime(Runtime.NODEJS_22_X) .code(Code.fromAsset("lambda")) .handler("index.handler") .build()) .build());

Pattern Construct Props

Name Type Description

existingLambdaObj?

lambda.Function

Optional - instance of an existing Lambda Function object, providing both this and lambdaFunctionProps will cause an error.

lambdaFunctionProps?

lambda.FunctionProps

Optional - user provided props to override the default props for the Lambda function. Providing both this and existingLambdaObj causes an error.

dynamoTableProps?

dynamodb.TableProps

Optional user provided props to override the default props for the DynamoDB Table. Providing both this and existingTableInterface causes an error.

existingTableInterface?

dynamodb.ITable

Optional - existing DynamoDB table, providing both this and dynamoTableProps will cause an error. this and dynamoTableProps will cause an error.

dynamoEventSourceProps?

aws-lambda-event-sources.DynamoEventSourceProps

Optional user provided props to override the default props for DynamoDB Event Source

Pattern Properties

Name Type Description

dynamoTableInterface

dynamodb.ITable

Returns an instance of dynamodb.ITable created by the construct

dynamoTable?

dynamodb.Table

Returns an instance of dynamodb.Table created by the construct. IMPORTANT: If existingTableInterface was provided in Pattern Construct Props, this property will be undefined

lambdaFunction

lambda.Function

Returns an instance of lambda.Function created by the construct

Default settings

Out of the box implementation of the Construct without any override 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 like enable bisect on function Error, set defaults for Maximum Record Age (24 hours) & 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

Diagram showing data flow between AWS services including DynamoDB, Lambda, CloudWatch and an IAM Role

Github

Go to the Github repo for this pattern to view the code, read/create issues and pull requests and more.