DynamoDB 서비스 수준 API 사용 - AWS Mobile SDK

AWS Mobile SDK for Xamarin은 이제 AWS SDK for .NET에 포함됩니다. 이 안내서에서는 Xamarin용 모바일 SDK의 아카이브된 버전을 참조합니다.

DynamoDB 서비스 수준 API 사용

Dynamo 서비스 수준 API를 사용하면 테이블을 생성하고, 업데이트하고, 삭제할 수 있습니다. 또한 이 API를 사용하여 테이블의 항목에 대한 일반적인 생성, 읽기, 업데이트 및 삭제(CRUD) 작업도 수행할 수 있습니다.

DynamoDB 클라이언트 생성

DynamoDB 클라이언트를 생성하는 방법:

AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region);

CRUD 연산

항목 저장

DynamoDB 테이블에 항목을 저장하는 방법:

// Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region); // Define item attributes Dictionary<string, AttributeValue> attributes = new Dictionary<string, AttributeValue>(); // Author is hash-key attributes["Author"] = new AttributeValue { S = "Mark Twain" }; attributes["Title"] = new AttributeValue { S = "The Adventures of Tom Sawyer" }; attributes["PageCount"] = new AttributeValue { N = "275" }; attributes["Price"] = new AttributeValue{N = "10.00"}; attributes["Id"] = new AttributeValue{N="10"}; attributes["ISBN"] = new AttributeValue{S="111-1111111"}; // Create PutItem request PutItemRequest request = new PutItemRequest { TableName = "Books", Item = attributes }; // Issue PutItem request var response = await client.PutItemAsync(request);

항목 검색

항목을 검색하는 방법:

// Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region); Dictionary<string, AttributeValue> key = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "10" } } }; // Create GetItem request GetItemRequest request = new GetItemRequest { TableName = "Books", Key = key, }; // Issue request var result = await client.GetItemAsync(request); // View response Console.WriteLine("Item:"); Dictionary<string, AttributeValue> item = result.Item; foreach (var keyValuePair in item) { Console.WriteLine("Author := {0}", item["Author"]); Console.WriteLine("Title := {0}", item["Title"]); Console.WriteLine("Price:= {0}", item["Price"]); Console.WriteLine("PageCount := {0}", item["PageCount"]); }

항목 업데이트

항목 업데이트 방법:

// Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region); Dictionary<string, AttributeValue> key = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "10" } } }; // Define attribute updates Dictionary<string, AttributeValueUpdate> updates = new Dictionary<string, AttributeValueUpdate>(); // Add a new string to the item's Genres SS attribute updates["Genres"] = new AttributeValueUpdate() { Action = AttributeAction.ADD, Value = new AttributeValue { SS = new List<string> { "Bildungsroman" } } }; // Create UpdateItem request UpdateItemRequest request = new UpdateItemRequest { TableName = "Books", Key = key, AttributeUpdates = updates }; // Issue request var response = await client.UpdateItemAsync(request);

항목 삭제

항목 삭제 방법:

// Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region); Dictionary<string, AttributeValue> key = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "10" } } }; // Create DeleteItem request DeleteItemRequest request = new DeleteItemRequest { TableName = "Books", Key = key }; // Issue request var response = await client.DeleteItemAsync(request);

Query and Scan

저자가 "Mark Twain"인 모든 도서를 쿼리하고 가져오는 방법은 다음과 같습니다.

public void Query(AWSCredentials credentials, RegionEndpoint region) { using(var client = new AmazonDynamoDBClient(credentials, region)) { var queryResponse = await client.QueryAsync(new QueryRequest() { TableName = "Books", IndexName = "Author-Title-index", KeyConditionExpression = "Author = :v_Id", ExpressionAttributeValues = new Dictionary < string, AttributeValue > { { ":v_Id", new AttributeValue { S = "Mark Twain" } } } }); queryResponse.Items.ForEach((i) = > { Console.WriteLine(i["Title"].S); }); } }

아래의 스캔 코드 예제는 테이블에서 모든 도서를 반환합니다.

public void Scan(AWSCredentials credentials, RegionEndpoint region) { using(var client = new AmazonDynamoDBClient(credentials, region)) { var queryResponse = client.Scan(new ScanRequest() { TableName = "Books" }); queryResponse.Items.ForEach((i) = > { Console.WriteLine(i["Title"].S); }); } }