예: AWS SDK for .NET 하위 수준 API를 사용하는 테이블 생성, 업데이트, 삭제 및 나열 - Amazon DynamoDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

예: AWS SDK for .NET 하위 수준 API를 사용하는 테이블 생성, 업데이트, 삭제 및 나열

다음 C# 코드 예제에서는 테이블(ExampleTable)을 생성하고, 업데이트하고, 삭제합니다. 그 밖에 계정에 속한 테이블을 모두 나열하고 특정 테이블에 대한 정보를 가져오기도 합니다. 테이블을 업데이트하면 할당 처리량 값이 올라갑니다. 다음 예제를 테스트하기 위한 step-by-step 지침은 을 참조하십시오.NET 코드 예시.

using System; using System.Collections.Generic; using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.Model; using Amazon.Runtime; namespace com.amazonaws.codesamples { class LowLevelTableExample { private static AmazonDynamoDBClient client = new AmazonDynamoDBClient(); private static string tableName = "ExampleTable"; static void Main(string[] args) { try { CreateExampleTable(); ListMyTables(); GetTableInformation(); UpdateExampleTable(); DeleteExampleTable(); Console.WriteLine("To continue, press Enter"); Console.ReadLine(); } catch (AmazonDynamoDBException e) { Console.WriteLine(e.Message); } catch (AmazonServiceException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } } private static void CreateExampleTable() { Console.WriteLine("\n*** Creating table ***"); var request = new CreateTableRequest { AttributeDefinitions = new List<AttributeDefinition>() { new AttributeDefinition { AttributeName = "Id", AttributeType = "N" }, new AttributeDefinition { AttributeName = "ReplyDateTime", AttributeType = "N" } }, KeySchema = new List<KeySchemaElement> { new KeySchemaElement { AttributeName = "Id", KeyType = "HASH" //Partition key }, new KeySchemaElement { AttributeName = "ReplyDateTime", KeyType = "RANGE" //Sort key } }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 5, WriteCapacityUnits = 6 }, TableName = tableName }; var response = client.CreateTable(request); var tableDescription = response.TableDescription; Console.WriteLine("{1}: {0} \t ReadsPerSec: {2} \t WritesPerSec: {3}", tableDescription.TableStatus, tableDescription.TableName, tableDescription.ProvisionedThroughput.ReadCapacityUnits, tableDescription.ProvisionedThroughput.WriteCapacityUnits); string status = tableDescription.TableStatus; Console.WriteLine(tableName + " - " + status); WaitUntilTableReady(tableName); } private static void ListMyTables() { Console.WriteLine("\n*** listing tables ***"); string lastTableNameEvaluated = null; do { var request = new ListTablesRequest { Limit = 2, ExclusiveStartTableName = lastTableNameEvaluated }; var response = client.ListTables(request); foreach (string name in response.TableNames) Console.WriteLine(name); lastTableNameEvaluated = response.LastEvaluatedTableName; } while (lastTableNameEvaluated != null); } private static void GetTableInformation() { Console.WriteLine("\n*** Retrieving table information ***"); var request = new DescribeTableRequest { TableName = tableName }; var response = client.DescribeTable(request); TableDescription description = response.Table; Console.WriteLine("Name: {0}", description.TableName); Console.WriteLine("# of items: {0}", description.ItemCount); Console.WriteLine("Provision Throughput (reads/sec): {0}", description.ProvisionedThroughput.ReadCapacityUnits); Console.WriteLine("Provision Throughput (writes/sec): {0}", description.ProvisionedThroughput.WriteCapacityUnits); } private static void UpdateExampleTable() { Console.WriteLine("\n*** Updating table ***"); var request = new UpdateTableRequest() { TableName = tableName, ProvisionedThroughput = new ProvisionedThroughput() { ReadCapacityUnits = 6, WriteCapacityUnits = 7 } }; var response = client.UpdateTable(request); WaitUntilTableReady(tableName); } private static void DeleteExampleTable() { Console.WriteLine("\n*** Deleting table ***"); var request = new DeleteTableRequest { TableName = tableName }; var response = client.DeleteTable(request); Console.WriteLine("Table is being deleted..."); } private static void WaitUntilTableReady(string tableName) { string status = null; // Let us wait until table is created. Call DescribeTable. do { System.Threading.Thread.Sleep(5000); // Wait 5 seconds. try { var res = client.DescribeTable(new DescribeTableRequest { TableName = tableName }); Console.WriteLine("Table name: {0}, status: {1}", res.Table.TableName, res.Table.TableStatus); status = res.Table.TableStatus; } catch (ResourceNotFoundException) { // DescribeTable is eventually consistent. So you might // get resource not found. So we handle the potential exception. } } while (status != "ACTIVE"); } } }