AWS amazondynamodb documentation change
Summary
Updated SDK code examples for Java, JavaScript, and Python to demonstrate creating DynamoDB tables with warm throughput settings. Added new JavaScript v3 and Python Boto3 examples, improved code structure with helper methods, and added API reference links.
Security assessment
The changes focus on operational aspects of DynamoDB throughput configuration (capacity planning and cost optimization). There's no evidence of security vulnerability fixes, security incident references, or new security features like encryption/IAM. Warm throughput relates to performance/cost management, not security controls.
Diff
diff --git a/amazondynamodb/latest/developerguide/create-table-warm-throughput.md b/amazondynamodb/latest/developerguide/create-table-warm-throughput.md index cfd84d0d2..2059f9b44 100644 --- a//amazondynamodb/latest/developerguide/create-table-warm-throughput.md +++ b//amazondynamodb/latest/developerguide/create-table-warm-throughput.md @@ -155,0 +156,5 @@ Java +**SDK for Java 2.x** + + +Create DynamoDB table with warm throughput setting using AWS SDK for Java 2.x. + @@ -157 +161,0 @@ Java - import software.amazon.awscdk.services.dynamodb.ProjectionType; @@ -159 +163 @@ Java - import software.amazon.awssdk.services.dynamodb.model.CreateTableResponse; + import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition; @@ -160,0 +165,2 @@ Java + import software.amazon.awssdk.services.dynamodb.model.CreateTableResponse; + import software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndex; @@ -163 +168,0 @@ Java - import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput; @@ -165,2 +170 @@ Java - import software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndex; - import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition; + import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput; @@ -169 +172,0 @@ Java - ... @@ -171,2 +174 @@ Java - public static WarmThroughput buildWarmThroughput(final Long readUnitsPerSecond, - final Long writeUnitsPerSecond) { + public static WarmThroughput buildWarmThroughput(final Long readUnitsPerSecond, final Long writeUnitsPerSecond) { @@ -178,2 +180,25 @@ Java - private static AttributeDefinition buildAttributeDefinition(final String attributeName, - final ScalarAttributeType scalarAttributeType) { + + /** + * Builds a ProvisionedThroughput object with the specified read and write capacity units. + * + * @param readCapacityUnits The read capacity units + * @param writeCapacityUnits The write capacity units + * @return A configured ProvisionedThroughput object + */ + public static ProvisionedThroughput buildProvisionedThroughput( + final Long readCapacityUnits, final Long writeCapacityUnits) { + return ProvisionedThroughput.builder() + .readCapacityUnits(readCapacityUnits) + .writeCapacityUnits(writeCapacityUnits) + .build(); + } + + /** + * Builds an AttributeDefinition with the specified name and type. + * + * @param attributeName The attribute name + * @param scalarAttributeType The attribute type + * @return A configured AttributeDefinition + */ + private static AttributeDefinition buildAttributeDefinition( + final String attributeName, final ScalarAttributeType scalarAttributeType) { @@ -185,2 +210,9 @@ Java - private static KeySchemaElement buildKeySchemaElement(final String attributeName, - final KeyType keyType) { + + /** + * Builds a KeySchemaElement with the specified name and key type. + * + * @param attributeName The attribute name + * @param keyType The key type (HASH or RANGE) + * @return A configured KeySchemaElement + */ + private static KeySchemaElement buildKeySchemaElement(final String attributeName, final KeyType keyType) { @@ -192,15 +224,36 @@ Java - public static void createDynamoDBTable(DynamoDbClient ddb, - String tableName, - String partitionKey, - String sortKey, - String miscellaneousKeyAttribute, - String nonKeyAttribute, - Long tableReadCapacityUnits, - Long tableWriteCapacityUnits, - Long tableWarmReadUnitsPerSecond, - Long tableWarmWriteUnitsPerSecond, - String globalSecondaryIndexName, - Long globalSecondaryIndexReadCapacityUnits, - Long globalSecondaryIndexWriteCapacityUnits, - Long globalSecondaryIndexWarmReadUnitsPerSecond, - Long globalSecondaryIndexWarmWriteUnitsPerSecond) { + + /** + * Creates a DynamoDB table with the specified configuration including warm throughput settings. + * + * @param ddb The DynamoDB client + * @param tableName The name of the table to create + * @param partitionKey The partition key attribute name + * @param sortKey The sort key attribute name + * @param miscellaneousKeyAttribute Additional key attribute name for GSI + * @param nonKeyAttribute Non-key attribute to include in GSI projection + * @param tableReadCapacityUnits Read capacity units for the table + * @param tableWriteCapacityUnits Write capacity units for the table + * @param tableWarmReadUnitsPerSecond Warm read units per second for the table + * @param tableWarmWriteUnitsPerSecond Warm write units per second for the table + * @param globalSecondaryIndexName The name of the GSI to create + * @param globalSecondaryIndexReadCapacityUnits Read capacity units for the GSI + * @param globalSecondaryIndexWriteCapacityUnits Write capacity units for the GSI + * @param globalSecondaryIndexWarmReadUnitsPerSecond Warm read units per second for the GSI + * @param globalSecondaryIndexWarmWriteUnitsPerSecond Warm write units per second for the GSI + */ + public static void createDynamoDBTable( + final DynamoDbClient ddb, + final String tableName, + final String partitionKey, + final String sortKey, + final String miscellaneousKeyAttribute, + final String nonKeyAttribute, + final Long tableReadCapacityUnits, + final Long tableWriteCapacityUnits, + final Long tableWarmReadUnitsPerSecond, + final Long tableWarmWriteUnitsPerSecond, + final String globalSecondaryIndexName, + final Long globalSecondaryIndexReadCapacityUnits, + final Long globalSecondaryIndexWriteCapacityUnits, + final Long globalSecondaryIndexWarmReadUnitsPerSecond, + final Long globalSecondaryIndexWarmWriteUnitsPerSecond) { @@ -211,2 +264,5 @@ Java - final AttributeDefinition miscellaneousKeyAttributeDefinition = buildAttributeDefinition(miscellaneousKeyAttribute, ScalarAttributeType.N); - final AttributeDefinition[] attributeDefinitions = {partitionKeyAttribute, sortKeyAttribute, miscellaneousKeyAttributeDefinition}; + final AttributeDefinition miscellaneousKeyAttributeDefinition = + buildAttributeDefinition(miscellaneousKeyAttribute, ScalarAttributeType.N); + final AttributeDefinition[] attributeDefinitions = { + partitionKeyAttribute, sortKeyAttribute, miscellaneousKeyAttributeDefinition + }; @@ -220,4 +276,2 @@ Java - final ProvisionedThroughput provisionedThroughput = ProvisionedThroughput.builder() - .readCapacityUnits(tableReadCapacityUnits) - .writeCapacityUnits(tableWriteCapacityUnits) - .build(); + final ProvisionedThroughput provisionedThroughput = + buildProvisionedThroughput(tableReadCapacityUnits, tableWriteCapacityUnits); @@ -227,2 +281,5 @@ Java - final KeySchemaElement globalSecondaryIndexSortKeyElement = buildKeySchemaElement(miscellaneousKeyAttribute, KeyType.RANGE); - final KeySchemaElement[] gsiKeySchema = {globalSecondaryIndexPartitionKeyElement, globalSecondaryIndexSortKeyElement}; + final KeySchemaElement globalSecondaryIndexSortKeyElement = + buildKeySchemaElement(miscellaneousKeyAttribute, KeyType.RANGE); + final KeySchemaElement[] gsiKeySchema = { + globalSecondaryIndexPartitionKeyElement, globalSecondaryIndexSortKeyElement + }; @@ -231 +288 @@ Java - .projectionType(String.valueOf(ProjectionType.INCLUDE)) + .projectionType(PROJECTION_TYPE_INCLUDE) @@ -234,4 +291,4 @@ Java - final ProvisionedThroughput gsiProvisionedThroughput = ProvisionedThroughput.builder() - .readCapacityUnits(globalSecondaryIndexReadCapacityUnits) - .writeCapacityUnits(globalSecondaryIndexWriteCapacityUnits) - .build(); + + final ProvisionedThroughput gsiProvisionedThroughput = + buildProvisionedThroughput(globalSecondaryIndexReadCapacityUnits, globalSecondaryIndexWriteCapacityUnits); + @@ -239 +296,3 @@ Java - final WarmThroughput gsiWarmThroughput = buildWarmThroughput(globalSecondaryIndexWarmReadUnitsPerSecond, globalSecondaryIndexWarmWriteUnitsPerSecond); + final WarmThroughput gsiWarmThroughput = buildWarmThroughput( + globalSecondaryIndexWarmReadUnitsPerSecond, globalSecondaryIndexWarmWriteUnitsPerSecond); + @@ -249 +308,2 @@ Java - final WarmThroughput tableWarmThroughput = buildWarmThroughput(tableWarmReadUnitsPerSecond, tableWarmWriteUnitsPerSecond); + final WarmThroughput tableWarmThroughput = + buildWarmThroughput(tableWarmReadUnitsPerSecond, tableWarmWriteUnitsPerSecond); @@ -260 +320 @@ Java - CreateTableResponse response = ddb.createTable(request); + final CreateTableResponse response = ddb.createTable(request); @@ -263,0 +324,108 @@ Java + + + * For API details, see [CreateTable](https://docs.aws.amazon.com/goto/SdkForJavaV2/dynamodb-2012-08-10/CreateTable) in _AWS SDK for Java 2.x API Reference_. + + + + +JavaScript + + +**SDK for JavaScript (v3)** + + +Create DynamoDB table with warm throughput setting using AWS SDK for JavaScript. + + + import { DynamoDBClient, CreateTableCommand } from "@aws-sdk/client-dynamodb"; + + export async function createDynamoDBTableWithWarmThroughput( + tableName, + partitionKey, + sortKey, + miscKeyAttr, + nonKeyAttr, + tableProvisionedReadUnits, + tableProvisionedWriteUnits, + tableWarmReads, + tableWarmWrites, + indexName, + indexProvisionedReadUnits,