Erstellen Sie bei Bedarf eine DynamoDB-Tabelle - AWS SDK for Java 2.x

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 Sie bei Bedarf eine DynamoDB-Tabelle

Nachdem Sie eine DynamoDbTable Instanz erstellt haben, verwenden Sie sie, um eine einmalige Erstellung einer Tabelle in DynamoDB durchzuführen.

Beispielcode für Tabelle erstellen

Im folgenden Beispiel wird eine DynamoDB-Tabelle erstellt, die auf der Customer Datenklasse basiert.

In diesem Beispiel wird eine DynamoDB-Tabelle mit dem Namen erstellt, der mit dem Klassennamen Customer identisch ist, aber der Tabellenname kann auch ein anderer sein. Wie auch immer Sie die Tabelle benennen, Sie müssen diesen Namen in weiteren Anwendungen verwenden, um mit der Tabelle arbeiten zu können. Geben Sie der table() Methode diesen Namen jedes Mal, wenn Sie ein anderes DynamoDbTable Objekt erstellen, um mit der zugrunde liegenden DynamoDB-Tabelle zu arbeiten.

Mit dem an die createTable Methode übergebenen Java-Lambda-Parameter können Sie die Tabelle anpassen. builder In diesem Beispiel wird der bereitgestellte Durchsatz konfiguriert. Wenn Sie beim Erstellen einer Tabelle die Standardeinstellungen verwenden möchten, überspringen Sie den Builder, wie im folgenden Codeausschnitt gezeigt.

customerTable.createTable();

Wenn Standardeinstellungen verwendet werden, werden keine Werte für den bereitgestellten Durchsatz festgelegt. Stattdessen ist der Abrechnungsmodus für die Tabelle auf On-Demand-Modus eingestellt.

In dem Beispiel wird auch ein verwendet, DynamoDbWaiter bevor versucht wird, den in der Antwort erhaltenen Tabellennamen auszudrucken. Die Erstellung einer Tabelle dauert einige Zeit. Wenn Sie also einen Kellner verwenden, müssen Sie keine Logik schreiben, die den DynamoDB-Dienst abfragt, um festzustellen, ob die Tabelle existiert, bevor Sie die Tabelle verwenden.

import com.example.dynamodb.Customer; import software.amazon.awssdk.core.internal.waiters.ResponseOrException; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.TableSchema; import software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse; import software.amazon.awssdk.services.dynamodb.waiters.DynamoDbWaiter;

Code

public static void createCustomerTable(DynamoDbTable<Customer> customerTable, DynamoDbClient standardClient) { // Create the DynamoDB table using the 'customerTable' DynamoDbTable instance. customerTable.createTable(builder -> builder .provisionedThroughput(b -> b .readCapacityUnits(10L) .writeCapacityUnits(10L) .build()) ); // The DynamoDbClient instance (named 'standardClient') passed to the builder for the DynamoDbWaiter is the same instance // that was passed to the builder of the DynamoDbEnhancedClient instance that we created previously. // By using the same instance, it ensures that the same Region that was configured on the standard DynamoDbClient // instance is used for other service clients that accept a DynamoDbClient during construction. try (DynamoDbWaiter waiter = DynamoDbWaiter.builder().client(standardClient).build()) { // DynamoDbWaiter is Autocloseable ResponseOrException<DescribeTableResponse> response = waiter .waitUntilTableExists(builder -> builder.tableName("Customer").build()) .matched(); DescribeTableResponse tableDescription = response.response().orElseThrow( () -> new RuntimeException("Customer table was not created.")); // The actual error can be inspected in response.exception() logger.info("Customer table was created."); } }
Anmerkung

Die Attributnamen einer DynamoDB-Tabelle beginnen mit einem Kleinbuchstaben, wenn die Tabelle aus einer Datenklasse generiert wird. Wenn der Attributname der Tabelle mit einem Großbuchstaben beginnen soll, verwenden Sie die @DynamoDbAttribute(NAME)Anmerkung und geben Sie den gewünschten Namen als Parameter an.