Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

テーブルの操作 : .NET

AWS SDK for .NET を使用して、テーブルの作成、更新、削除、アカウント内の全テーブルの一覧表示、特定のテーブルに関する情報収集を実行できます。

以下に、AWS SDK for .NET を使用した Amazon DynamoDB テーブルオペレーションの一般的な手順を示します。

  1. AmazonDynamoDBClient クラスのインスタンス(クライアント)を作成します。

  2. 対応するリクエストオブジェクトを作成して、オペレーションについて必要なパラメータとオプションパラメータを入力します。

    たとえば、テーブルを作成するには CreateTableRequest オブジェクトを作成し、既存のテーブルを更新するには UpdateTableRequest オブジェクトを作成します。

  3. 前述のステップで作成したクライアントから提供された適切なメソッドを実行します。

注記

このセクションの例は、同期メソッドをサポートしていないため、.NET Core には適用されません。詳細については、「AWS の .NET 用非同期 API」を参照してください。

テーブルの作成

テーブルを作成するには、テーブル名、プライマリキー、およびプロビジョニングされたスループット値を指定する必要があります。

AWS SDK for .NET 低レベル API を使用してテーブルを作成するには

  1. AmazonDynamoDBClient クラスのインスタンスを作成します。

  2. リクエスト情報を指定する CreateTableRequest クラスのインスタンスを作成します。

    テーブル名、プライマリキー、およびプロビジョニングされたスループット値を指定する必要があります。

  3. リクエストオブジェクトをパラメータとして指定して、AmazonDynamoDBClient.CreateTable メソッドを実行します。

以下の C# サンプルは、前述のステップの例です。このサンプルでは、Id をプライマリキーとして使用するテーブル (ProductCatalog)、およびプロビジョニングされたスループット値のセットを作成します。ご利用のアプリケーションの要件によっては、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 日の増減については、「DynamoDB での制限」を参照してください。

AWS SDK for .NET 低レベル API を使用してテーブルを更新するには

  1. AmazonDynamoDBClient クラスのインスタンスを作成します。

  2. リクエスト情報を指定する UpdateTableRequest クラスのインスタンスを作成します。

    テーブル名およびプロビジョニングされたスループット値を指定する必要があります。

  3. リクエストオブジェクトをパラメータとして指定して、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 を使用してテーブルを削除するには

  1. AmazonDynamoDBClient クラスのインスタンスを作成します。

  2. DeleteTableRequest クラスのインスタンスを作成し、削除するテーブル名を指定します。

  3. リクエストオブジェクトをパラメータとして指定して、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);