View a markdown version of this page

Erstellen einer neuen DynamoDB-Tabelle mit einem höheren Warmdurchsatz - Amazon DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen einer neuen DynamoDB-Tabelle mit einem höheren Warmdurchsatz

Sie können die Werte für den Warmdurchsatz beim Erstellen Ihrer DynamoDB-Tabelle anpassen, indem Sie die folgenden Schritte ausführen. Diese Schritte gelten auch für die Erstellung einer globalen Tabelle oder eines sekundären Index.

So erstellen Sie eine DynamoDB-Tabelle und passen die Werte für den Warmdurchsatz über die Konsole an:

  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die DynamoDB-Konsole unter. https://console.aws.amazon.com/dynamodb/

  2. Wählen Sie Tabelle erstellen aus.

  3. Wählen Sie einen Tabellennamen, einen Partitionsschlüssel und einen Sortierschlüssel (optional) aus.

  4. Wählen Sie unter Tabelleneinstellungen die Option Einstellungen anpassen aus.

  5. Wählen Sie im Feld Warmdurchsatz die Option Warmdurchsatz erhöhen aus.

  6. Passen Sie die Leseeinheiten pro Sekunde und die Schreibeinheiten pro Sekunde an. Diese beiden Einstellungen definieren den maximalen Durchsatz, den die Tabelle sofort verarbeiten kann.

  7. Fügen Sie weitere Tabellendetails hinzu und wählen Sie dann Tabelle erstellen aus.

Das folgende AWS CLI Beispiel zeigt Ihnen, wie Sie eine DynamoDB-Tabelle mit benutzerdefinierten Warmdurchsatzwerten erstellen.

  1. Führen Sie die create-table-Operation aus, um die folgende DynamoDB-Tabelle zu erstellen.

    aws dynamodb create-table \ --table-name GameScores \ --attribute-definitions AttributeName=UserId,AttributeType=S \ AttributeName=GameTitle,AttributeType=S \ AttributeName=TopScore,AttributeType=N \ --key-schema AttributeName=UserId,KeyType=HASH \ AttributeName=GameTitle,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10 \ --global-secondary-indexes \ "[ { \"IndexName\": \"GameTitleIndex\", \"KeySchema\": [{\"AttributeName\":\"GameTitle\",\"KeyType\":\"HASH\"}, {\"AttributeName\":\"TopScore\",\"KeyType\":\"RANGE\"}], \"Projection\":{ \"ProjectionType\":\"INCLUDE\", \"NonKeyAttributes\":[\"UserId\"] }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": 50, \"WriteCapacityUnits\": 25 },\"WarmThroughput\": { \"ReadUnitsPerSecond\": 1987, \"WriteUnitsPerSecond\": 543 } } ]" \ --warm-throughput ReadUnitsPerSecond=12345,WriteUnitsPerSecond=4567 \ --region us-east-1
  2. Sie erhalten eine ähnliche Antwort wie die folgende. Ihre WarmThroughput-Einstellungen werden als ReadUnitsPerSecond und WriteUnitsPerSecond angezeigt. Status lautet UPDATING, wenn der Wert für den Warmdurchsatz aktualisiert wird, und ACTIVE, wenn der neue Warmdurchsatzwert festgelegt wird.

    { "TableDescription": { "AttributeDefinitions": [ { "AttributeName": "GameTitle", "AttributeType": "S" }, { "AttributeName": "TopScore", "AttributeType": "N" }, { "AttributeName": "UserId", "AttributeType": "S" } ], "TableName": "GameScores", "KeySchema": [ { "AttributeName": "UserId", "KeyType": "HASH" }, { "AttributeName": "GameTitle", "KeyType": "RANGE" } ], "TableStatus": "CREATING", "CreationDateTime": 1730241788.779, "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "ReadCapacityUnits": 20, "WriteCapacityUnits": 10 }, "TableSizeBytes": 0, "ItemCount": 0, "TableArn": "arn:aws:dynamodb:us-east-1:XXXXXXXXXXXX:table/GameScores", "TableId": "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "GlobalSecondaryIndexes": [ { "IndexName": "GameTitleIndex", "KeySchema": [ { "AttributeName": "GameTitle", "KeyType": "HASH" }, { "AttributeName": "TopScore", "KeyType": "RANGE" } ], "Projection": { "ProjectionType": "INCLUDE", "NonKeyAttributes": [ "UserId" ] }, "IndexStatus": "CREATING", "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "ReadCapacityUnits": 50, "WriteCapacityUnits": 25 }, "IndexSizeBytes": 0, "ItemCount": 0, "IndexArn": "arn:aws:dynamodb:us-east-1:XXXXXXXXXXXX:table/GameScores/index/GameTitleIndex", "WarmThroughput": { "ReadUnitsPerSecond": 1987, "WriteUnitsPerSecond": 543, "Status": "UPDATING" } } ], "DeletionProtectionEnabled": false, "WarmThroughput": { "ReadUnitsPerSecond": 12345, "WriteUnitsPerSecond": 4567, "Status": "UPDATING" } } }

Die folgenden SDK-Beispiele zeigen Ihnen, wie Sie eine DynamoDB-Tabelle mit benutzerdefinierten Werden für den Warmdurchsatz erstellen.

Java
SDK für Java 2.x

Erstellen Sie mithilfe von AWS SDK for Java 2.x eine DynamoDB-Tabelle mit Warmdurchsatz-Einstellung.

import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition; import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest; import software.amazon.awssdk.services.dynamodb.model.CreateTableResponse; import software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndex; import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement; import software.amazon.awssdk.services.dynamodb.model.KeyType; import software.amazon.awssdk.services.dynamodb.model.Projection; import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput; import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; import software.amazon.awssdk.services.dynamodb.model.WarmThroughput; public static WarmThroughput buildWarmThroughput(final Long readUnitsPerSecond, final Long writeUnitsPerSecond) { return WarmThroughput.builder() .readUnitsPerSecond(readUnitsPerSecond) .writeUnitsPerSecond(writeUnitsPerSecond) .build(); } /** * 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) { return AttributeDefinition.builder() .attributeName(attributeName) .attributeType(scalarAttributeType) .build(); } /** * 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) { return KeySchemaElement.builder() .attributeName(attributeName) .keyType(keyType) .build(); } /** * 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) { // Define the table attributes final AttributeDefinition partitionKeyAttribute = buildAttributeDefinition(partitionKey, ScalarAttributeType.S); final AttributeDefinition sortKeyAttribute = buildAttributeDefinition(sortKey, ScalarAttributeType.S); final AttributeDefinition miscellaneousKeyAttributeDefinition = buildAttributeDefinition(miscellaneousKeyAttribute, ScalarAttributeType.N); final AttributeDefinition[] attributeDefinitions = { partitionKeyAttribute, sortKeyAttribute, miscellaneousKeyAttributeDefinition }; // Define the table key schema final KeySchemaElement partitionKeyElement = buildKeySchemaElement(partitionKey, KeyType.HASH); final KeySchemaElement sortKeyElement = buildKeySchemaElement(sortKey, KeyType.RANGE); final KeySchemaElement[] keySchema = {partitionKeyElement, sortKeyElement}; // Define the provisioned throughput for the table final ProvisionedThroughput provisionedThroughput = buildProvisionedThroughput(tableReadCapacityUnits, tableWriteCapacityUnits); // Define the Global Secondary Index (GSI) final KeySchemaElement globalSecondaryIndexPartitionKeyElement = buildKeySchemaElement(sortKey, KeyType.HASH); final KeySchemaElement globalSecondaryIndexSortKeyElement = buildKeySchemaElement(miscellaneousKeyAttribute, KeyType.RANGE); final KeySchemaElement[] gsiKeySchema = { globalSecondaryIndexPartitionKeyElement, globalSecondaryIndexSortKeyElement }; final Projection gsiProjection = Projection.builder() .projectionType(PROJECTION_TYPE_INCLUDE) .nonKeyAttributes(nonKeyAttribute) .build(); final ProvisionedThroughput gsiProvisionedThroughput = buildProvisionedThroughput(globalSecondaryIndexReadCapacityUnits, globalSecondaryIndexWriteCapacityUnits); // Define the warm throughput for the Global Secondary Index (GSI) final WarmThroughput gsiWarmThroughput = buildWarmThroughput( globalSecondaryIndexWarmReadUnitsPerSecond, globalSecondaryIndexWarmWriteUnitsPerSecond); final GlobalSecondaryIndex globalSecondaryIndex = GlobalSecondaryIndex.builder() .indexName(globalSecondaryIndexName) .keySchema(gsiKeySchema) .projection(gsiProjection) .provisionedThroughput(gsiProvisionedThroughput) .warmThroughput(gsiWarmThroughput) .build(); // Define the warm throughput for the table final WarmThroughput tableWarmThroughput = buildWarmThroughput(tableWarmReadUnitsPerSecond, tableWarmWriteUnitsPerSecond); final CreateTableRequest request = CreateTableRequest.builder() .tableName(tableName) .attributeDefinitions(attributeDefinitions) .keySchema(keySchema) .provisionedThroughput(provisionedThroughput) .globalSecondaryIndexes(globalSecondaryIndex) .warmThroughput(tableWarmThroughput) .build(); final CreateTableResponse response = ddb.createTable(request); System.out.println(response); }
JavaScript
SDK für JavaScript (v3)

Erstellen Sie eine DynamoDB-Tabelle mit Warmdurchsatz-Einstellung mithilfe von AWS SDK für JavaScript.

import { DynamoDBClient, CreateTableCommand } from "@aws-sdk/client-dynamodb"; export async function createDynamoDBTableWithWarmThroughput( tableName, partitionKey, sortKey, miscKeyAttr, nonKeyAttr, tableProvisionedReadUnits, tableProvisionedWriteUnits, tableWarmReads, tableWarmWrites, indexName, indexProvisionedReadUnits, indexProvisionedWriteUnits, indexWarmReads, indexWarmWrites, region = "us-east-1" ) { try { const ddbClient = new DynamoDBClient({ region: region }); const command = new CreateTableCommand({ TableName: tableName, AttributeDefinitions: [ { AttributeName: partitionKey, AttributeType: "S" }, { AttributeName: sortKey, AttributeType: "S" }, { AttributeName: miscKeyAttr, AttributeType: "N" }, ], KeySchema: [ { AttributeName: partitionKey, KeyType: "HASH" }, { AttributeName: sortKey, KeyType: "RANGE" }, ], ProvisionedThroughput: { ReadCapacityUnits: tableProvisionedReadUnits, WriteCapacityUnits: tableProvisionedWriteUnits, }, WarmThroughput: { ReadUnitsPerSecond: tableWarmReads, WriteUnitsPerSecond: tableWarmWrites, }, GlobalSecondaryIndexes: [ { IndexName: indexName, KeySchema: [ { AttributeName: sortKey, KeyType: "HASH" }, { AttributeName: miscKeyAttr, KeyType: "RANGE" }, ], Projection: { ProjectionType: "INCLUDE", NonKeyAttributes: [nonKeyAttr], }, ProvisionedThroughput: { ReadCapacityUnits: indexProvisionedReadUnits, WriteCapacityUnits: indexProvisionedWriteUnits, }, WarmThroughput: { ReadUnitsPerSecond: indexWarmReads, WriteUnitsPerSecond: indexWarmWrites, }, }, ], }); const response = await ddbClient.send(command); console.log(response); return response; } catch (error) { console.error(`Error creating table: ${error}`); throw error; } } // Example usage (commented out for testing) /* createDynamoDBTableWithWarmThroughput( 'example-table', 'pk', 'sk', 'gsiKey', 'data', 10, 10, 5, 5, 'example-index', 5, 5, 2, 2 ); */
  • Einzelheiten zur API finden Sie CreateTablein der AWS SDK für JavaScript API-Referenz.

Python
SDK für Python (Boto3)

Erstellen Sie eine DynamoDB-Tabelle mit Warmdurchsatz-Einstellung mithilfe von AWS SDK für Python (Boto3).

from boto3 import client from botocore.exceptions import ClientError def create_dynamodb_table_warm_throughput( table_name, partition_key, sort_key, misc_key_attr, non_key_attr, table_provisioned_read_units, table_provisioned_write_units, table_warm_reads, table_warm_writes, gsi_name, gsi_provisioned_read_units, gsi_provisioned_write_units, gsi_warm_reads, gsi_warm_writes, region_name="us-east-1", ): """ Creates a DynamoDB table with a warm throughput setting configured. :param table_name: The name of the table to be created. :param partition_key: The partition key for the table being created. :param sort_key: The sort key for the table being created. :param misc_key_attr: A miscellaneous key attribute for the table being created. :param non_key_attr: A non-key attribute for the table being created. :param table_provisioned_read_units: The newly created table's provisioned read capacity units. :param table_provisioned_write_units: The newly created table's provisioned write capacity units. :param table_warm_reads: The read units per second setting for the table's warm throughput. :param table_warm_writes: The write units per second setting for the table's warm throughput. :param gsi_name: The name of the Global Secondary Index (GSI) to be created on the table. :param gsi_provisioned_read_units: The configured Global Secondary Index (GSI) provisioned read capacity units. :param gsi_provisioned_write_units: The configured Global Secondary Index (GSI) provisioned write capacity units. :param gsi_warm_reads: The read units per second setting for the Global Secondary Index (GSI)'s warm throughput. :param gsi_warm_writes: The write units per second setting for the Global Secondary Index (GSI)'s warm throughput. :param region_name: The AWS Region name to target. defaults to us-east-1 """ try: ddb = client("dynamodb", region_name=region_name) # Define the table attributes attribute_definitions = [ {"AttributeName": partition_key, "AttributeType": "S"}, {"AttributeName": sort_key, "AttributeType": "S"}, {"AttributeName": misc_key_attr, "AttributeType": "N"}, ] # Define the table key schema key_schema = [ {"AttributeName": partition_key, "KeyType": "HASH"}, {"AttributeName": sort_key, "KeyType": "RANGE"}, ] # Define the provisioned throughput for the table provisioned_throughput = { "ReadCapacityUnits": table_provisioned_read_units, "WriteCapacityUnits": table_provisioned_write_units, } # Define the global secondary index gsi_key_schema = [ {"AttributeName": sort_key, "KeyType": "HASH"}, {"AttributeName": misc_key_attr, "KeyType": "RANGE"}, ] gsi_projection = {"ProjectionType": "INCLUDE", "NonKeyAttributes": [non_key_attr]} gsi_provisioned_throughput = { "ReadCapacityUnits": gsi_provisioned_read_units, "WriteCapacityUnits": gsi_provisioned_write_units, } gsi_warm_throughput = { "ReadUnitsPerSecond": gsi_warm_reads, "WriteUnitsPerSecond": gsi_warm_writes, } global_secondary_indexes = [ { "IndexName": gsi_name, "KeySchema": gsi_key_schema, "Projection": gsi_projection, "ProvisionedThroughput": gsi_provisioned_throughput, "WarmThroughput": gsi_warm_throughput, } ] # Define the warm throughput for the table warm_throughput = { "ReadUnitsPerSecond": table_warm_reads, "WriteUnitsPerSecond": table_warm_writes, } # Create the DynamoDB client and create the table response = ddb.create_table( TableName=table_name, AttributeDefinitions=attribute_definitions, KeySchema=key_schema, ProvisionedThroughput=provisioned_throughput, GlobalSecondaryIndexes=global_secondary_indexes, WarmThroughput=warm_throughput, ) print(response) return response except ClientError as e: print(f"Error creating table: {e}") raise e
  • Einzelheiten zur API finden Sie CreateTablein AWS SDK for Python (Boto3) API Reference.