Skip navigation links

@Stability(value=Experimental)

Package software.amazon.awscdk.services.dynamodb

Amazon DynamoDB Construct Library

See: Description

Package software.amazon.awscdk.services.dynamodb Description

Amazon DynamoDB Construct Library


Stability: Experimental

This is a developer preview (public beta) module. Releases might lack important features and might have future breaking changes.

This API is still under active development and subject to non-backward compatible changes or removal in any future version. Use of the API is not recommended in production environments. Experimental APIs are not subject to the Semantic Versioning model.


Here is a minimal deployable DynamoDB table definition:

import dynamodb = require('@aws-cdk/aws-dynamodb');
 
 const table = new dynamodb.Table(this, 'Table', {
   partitionKey: { name: 'id', type: dynamodb.AttributeType.String }
 });
 

Keys

When a table is defined, you must define it's schema using the partitionKey (required) and sortKey (optional) properties.

Billing Mode

DynamoDB supports two billing modes:

import dynamodb = require('@aws-cdk/aws-dynamodb');
 
 const table = new dynamodb.Table(this, 'Table', {
   partitionKey: { name: 'id', type: dynamodb.AttributeType.String },
   billingMode: dynamodb.BillingMode.PayPerRequest
 });
 

Further reading: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.

Configure AutoScaling for your table

You can have DynamoDB automatically raise and lower the read and write capacities of your table by setting up autoscaling. You can use this to either keep your tables at a desired utilization level, or by scaling up and down at preconfigured times of the day:

Auto-scaling is only relevant for tables with the billing mode, PROVISIONED.

const readScaling = table.autoScaleReadCapacity({ minCapacity: 1, maxCapacity: 50 });
 
 readScaling.scaleOnUtilization({
   targetUtilizationPercent: 50
 });
 
 readScaling.scaleOnSchedule('ScaleUpInTheMorning', {
   schedule: appscaling.Schedule.cron({ hour: '8', minute: '0' }),
   minCapacity: 20,
 });
 
 readScaling.scaleOnSchedule('ScaleDownAtNight', {
   schedule: appscaling.Schedule.cron({ hour: '20', minute: '0' }),
   maxCapacity: 20
 });
 

Further reading: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html https://aws.amazon.com/blogs/database/how-to-use-aws-cloudformation-to-configure-auto-scaling-for-amazon-dynamodb-tables-and-indexes/

Amazon DynamoDB Global Tables

Please see the @aws-cdk/aws-dynamodb-global package here.

Skip navigation links

Copyright © 2019. All rights reserved.