.NET での DynamoDB テーブルの使用
AWS SDK for .NET を使用して、テーブルの作成、更新、削除、アカウント内の全テーブルの一覧表示、特定のテーブルに関する情報収集を実行できます。
以下に示しているのは、AWS SDK for .NET を使用した Amazon DynamoDB テーブルオペレーションの一般的なステップです。
-
AmazonDynamoDBClient
クラスのインスタンス(クライアント)を作成します。 -
対応するリクエストオブジェクトを作成して、オペレーションについて必要なパラメータとオプションパラメータを入力します。
たとえば、テーブルを作成するには
CreateTableRequest
オブジェクトを作成し、既存のテーブルを更新するにはUpdateTableRequest
オブジェクトを作成します。 -
前述のステップで作成したクライアントから提供された適切なメソッドを実行します。
注記
このセクションの例は、同期メソッドをサポートしていないため、.NET Core には適用されません。詳細については、「.NET 用 AWS 非同期 API」を参照してください。
テーブルの作成
テーブルを作成するには、テーブル名、プライマリキー、およびプロビジョニングされたスループット値を指定する必要があります。
AWS SDK for .NET 低レベル API を使用してテーブルを作成するには
-
AmazonDynamoDBClient
クラスのインスタンスを作成します。 -
リクエスト情報を指定する
CreateTableRequest
クラスのインスタンスを作成します。テーブル名、プライマリキー、およびプロビジョニングされたスループット値を指定する必要があります。
-
リクエストオブジェクトをパラメータとして指定して、
AmazonDynamoDBClient.CreateTable
メソッドを実行します。
以下の C# サンプルは、前述のステップの例です。このサンプルでは、ProductCatalog
をプライマリキーとして使用するテーブル (Id
)、およびプロビジョニングされたスループット値のセットを作成します。ご利用のアプリケーションの要件によっては、UpdateTable
API を使用して、プロビジョニングされたスループット値を更新できます。
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new CreateTableRequest { TableName = tableName, AttributeDefinitions = new List<AttributeDefinition>() { new AttributeDefinition { AttributeName = "Id", AttributeType = "N" } }, KeySchema = new List<KeySchemaElement>() { new KeySchemaElement { AttributeName = "Id", KeyType = "HASH" //Partition key } }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 10, WriteCapacityUnits = 5 } }; var response = client.CreateTable(request);
DynamoDB がテーブルを作成し、そのステータスを ACTIVE
に設定するまで待機する必要があります。CreateTable
応答には、必要なテーブル情報が記載された TableDescription
プロパティが含まれます。
例
var result = response.CreateTableResult; var tableDescription = result.TableDescription; Console.WriteLine("{1}: {0} \t ReadCapacityUnits: {2} \t WriteCapacityUnits: {3}", tableDescription.TableStatus, tableDescription.TableName, tableDescription.ProvisionedThroughput.ReadCapacityUnits, tableDescription.ProvisionedThroughput.WriteCapacityUnits); string status = tableDescription.TableStatus; Console.WriteLine(tableName + " - " + status);
また、クライアントの DescribeTable
メソッドを呼び出せば、いつでもテーブル情報を収集できます。
例
var res = client.DescribeTable(new DescribeTableRequest{TableName = "ProductCatalog"});
テーブルの更新
既存のテーブルのプロビジョニングされたスループット値のみを更新できます。ご利用のアプリケーションの要件によっては、これらの値を更新する必要があります。
注記
スループットキャパシティーは、必要に応じて増やしたり、特定の制限内で減らしたりできます。スループットの 1 日の増減については、「Amazon DynamoDB のサービス、アカウント、およびテーブルのクォータ」を参照してください。
AWS SDK for .NET 低レベル API を使用してテーブルを更新するには
-
AmazonDynamoDBClient
クラスのインスタンスを作成します。 -
リクエスト情報を指定する
UpdateTableRequest
クラスのインスタンスを作成します。テーブル名およびプロビジョニングされたスループット値を指定する必要があります。
-
リクエストオブジェクトをパラメータとして指定して、
AmazonDynamoDBClient.UpdateTable
メソッドを実行します。
以下の C# サンプルは、前述のステップの例です。
例
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ExampleTable"; var request = new UpdateTableRequest() { TableName = tableName, ProvisionedThroughput = new ProvisionedThroughput() { // Provide new values. ReadCapacityUnits = 20, WriteCapacityUnits = 10 } }; var response = client.UpdateTable(request);
テーブルの削除
.NET 低レベル API を使用してテーブルを削除するには次の手順に従います。
AWS SDK for .NET 低レベル API を使用してテーブルを削除するには
-
AmazonDynamoDBClient
クラスのインスタンスを作成します。 -
DeleteTableRequest
クラスのインスタンスを作成し、削除するテーブル名を指定します。 -
リクエストオブジェクトをパラメータとして指定して、
AmazonDynamoDBClient.DeleteTable
メソッドを実行します。
以下の C# サンプルコードは、前述のステップの例です。
例
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ExampleTable"; var request = new DeleteTableRequest{ TableName = tableName }; var response = client.DeleteTable(request);
テーブルの一覧表示
AWS SDK for .NET 低レベル API を使用してアカウント内にテーブルを一覧表示するには、AmazonDynamoDBClient
のインスタンスを作成し、ListTables
メソッドを実行します。
ListTables オペレーションはパラメータを必要としません。ただし、オプションパラメータを指定できます。たとえば、ページングを使用して 1 ページあたりのテーブル名を制限する場合には、Limit
パラメータを設定できます。この場合は、以下の C# サンプルに示すように、ListTablesRequest
オブジェクトを作成し、オプションパラメータを指定する必要があります。ページサイズに加え、このリクエストでは、ExclusiveStartTableName
パラメータを設定します。最初は、ExclusiveStartTableName
は null です。だし、最初のページの結果を取り出した後に次ページの結果を取り出すには、このパラメータ値を、現在の結果の LastEvaluatedTableName
プロパティに設定する必要があります。
例
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Initial value for the first page of table names. string lastEvaluatedTableName = null; do { // Create a request object to specify optional parameters. var request = new ListTablesRequest { Limit = 10, // Page size. ExclusiveStartTableName = lastEvaluatedTableName }; var response = client.ListTables(request); ListTablesResult result = response.ListTablesResult; foreach (string name in result.TableNames) Console.WriteLine(name); lastEvaluatedTableName = result.LastEvaluatedTableName; } while (lastEvaluatedTableName != null);