本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
視需要建立 DynamoDB 資料表
建立DynamoDbTable
執行個體之後,請使用它在 DynamoDB 中執行資料表的一次性建立。
建立資料表範例程式碼
下列範例會根據Customer
資料類別建立 DynamoDB 資料表。
此範例會建立名為 Customer
的 DynamoDB 資料表,其名稱與類別名稱相同,但資料表名稱可以是其他名稱。無論您為資料表命名什麼,都必須在其他應用程式中使用此名稱,才能使用資料表。每當您建立另一個DynamoDbTable
物件時,請將此名稱提供給 table()
方法,以便使用基礎 DynamoDB 資料表。
builder
傳遞至 createTable
方法的 Java lambda 參數可讓您自訂資料表
customerTable.createTable();
使用預設設定時,不會設定佈建輸送量的值。而是將資料表的計費模式設定為隨需 。
此範例也會在嘗試列印回應中接收的資料表名稱DynamoDbWaiter
之前,使用 。建立資料表需要一些時間。因此,使用等候者表示您不需要編寫輪詢 DynamoDB 服務的邏輯,即可在使用資料表之前查看資料表是否存在。
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;
代碼
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."); } }
注意
從資料類別產生 DynamoDB 資料表的屬性名稱時,開頭會是小寫字母。如果您想要資料表的屬性名稱以大寫字母開頭,請使用 @DynamoDbAttribute(NAME)註釋,並提供您想要作為參數的名稱。