aws-iot-lambda-dynamodb

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_iot_lambda_dynamodb
|
![]() |
@aws-solutions-constructs/aws-iot-lambda-dynamodb
|
![]() |
software.amazon.awsconstructs.services.iotlambdadynamodb
|
This AWS Solutions Constructs pattern implements an AWS IoT topic rule, an AWS Lambda function and Amazon DynamoDB table with the least privileged permissions.
Here is a minimal deployable pattern definition in TypeScript:
import { IotToLambdaToDynamoDBProps, IotToLambdaToDynamoDB } from '@aws-solutions-constructs/aws-iot-lambda-dynamodb'; const props: IotToLambdaToDynamoDBProps = { lambdaFunctionProps: { code: lambda.Code.fromAsset(`${__dirname}/lambda`), runtime: lambda.Runtime.NODEJS_12_X, handler: 'index.handler' }, iotTopicRuleProps: { topicRulePayload: { ruleDisabled: false, description: "Processing of DTC messages from the AWS Connected Vehicle Solution.", sql: "SELECT * FROM 'connectedcar/dtc/#'", actions: [] } } }; new IotToLambdaToDynamoDB(this, 'test-iot-lambda-dynamodb-stack', props);
Initializer
new IotToLambdaToDynamoDB(scope: Construct, id: string, props: IotToLambdaToDynamoDBProps);
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.
|
iotTopicRuleProps |
iot.CfnTopicRuleProps
|
User provided props to override the default props |
dynamoTableProps? |
dynamodb.TableProps
|
Optional user provided props to override the default props for DynamoDB Table |
tablePermissions? |
string
|
Optional table permissions to be granted to the Lambda function. One of the following
options may be specified: All , Read , ReadWrite , or Write .
|
Pattern Properties
Name | Type | Description |
---|---|---|
dynamoTable |
dynamodb.Table
|
Returns an instance of the DynamoDB table created by the pattern. |
iotTopicRule |
iot.CfnTopicRule
|
Returns an instance of the IoT topic rule created by the pattern. |
lambdaFunction |
lambda.Function
|
Returns an instance of the Lambda function created by the pattern. |
Default settings
Out-of-the-box implementation of this pattern without any overrides will set the following defaults:
Amazon IoT Rule
-
Configure least privilege access IAM role for Amazon IoT.
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.
-
Set environment variables:
-
AWS_NODEJS_CONNECTION_REUSE_ENABLED
(for Node 10.x and higher functions)
-
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.
Architecture

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