

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

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

# DynamoDB를 사용한 데이터 저장 및 검색
<a name="getting-started-store-retrieve-data"></a>

 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)는 속도가 빠르고 확장성이 뛰어나며 비용 효과적인 비 관계형 데이터베이스 서비스입니다. DynamoDB는 기존 데이터 스토리지의 확장성 제한을 없애면서도 낮은 지연 시간과 예측 가능한 성능을 유지합니다.

다음 자습서에서는 DynamoDB에 객체를 저장하는 앱에 DynamoDB 객체 지속성 모델을 통합하는 방법을 설명합니다.

## 프로젝트 설정
<a name="project-setup"></a>

### 사전 조건
<a name="prerequisites"></a>

이 자습서를 시작하기 전에 [.NET 및 Xamarin용 AWS Mobile SDK 설정](setup.md)의 지침을 모두 완료해야 합니다.

### DynamoDB 테이블 생성
<a name="create-a-dynamodb-table"></a>

DynamoDB 데이터베이스에서 데이터를 읽고 쓰려면 먼저 테이블을 생성해야 합니다. 테이블을 생성할 때 기본 키를 지정해야 합니다. 기본 키는 해시 속성과 범위 속성(선택 사항) 두 가지로 구성됩니다. 기본 및 범위 속성의 사용 방식에 대한 자세한 내용은 [테이블 작업](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html)을 참조하세요.

1. [DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb/home)로 이동하여 **테이블 생성**을 클릭합니다. [Create Table] 마법사가 표시됩니다.

1. 아래와 같이 테이블 이름, 기본 키 유형(해시) 및 해시 속성 이름("ID")을 지정하고 **계속**을 클릭합니다.  
![\[DynamoDB table creation interface showing table name, primary key type, and hash attribute configuration.\]](http://docs.aws.amazon.com/ko_kr/mobile/sdkforxamarin/developerguide/images/create-table.png)

1. 다음 화면의 편집 필드는 비워 둔 상태에서 **계속**을 클릭합니다.

1. **읽기 용량 단위** 및 **쓰기 용량 단위**의 기본값을 수락하고 **계속**을 클릭합니다.

1. 다음 화면의 **알림 보내기:** 텍스트 상자에 이메일 주소를 입력하고 **계속**을 클릭합니다. 검토 화면이 표시됩니다.

1. **생성**을 클릭합니다. 테이블이 생성되는 데 몇 분 정도 걸릴 수 있습니다.

### DynamoDB에 대한 권한 설정
<a name="set-permissions-for-dynamodb"></a>

자격 증명 풀이 Amazon DynamoDB에 액세스할 수 있으려면 자격 증명 풀의 역할을 수정해야 합니다.

1. [Identity and Access Management 콘솔](https://console.aws.amazon.com/iam/home)로 이동하여 왼쪽 창에서 **역할**을 클릭합니다. 자격 증명 풀 이름을 검색합니다(자격 증명당 인증된 사용자 및 인증되지 않은 사용자에 대해 하나씩 2개의 역할이 생성됨).

1. 인증되지 않은 사용자의 역할을 클릭하고(자격 증명 풀 이름에 "unauth"가 추가됨) **역할 정책 생성**을 클릭합니다.

1. **정책 생성기**를 클릭하고 **선택**을 클릭합니다.

1. **권한 편집** 페이지에서 다음 그림과 같이 설정을 입력합니다. DynamoDB 테이블의 Amazon 리소스 이름(ARN)은 `arn:aws:dynamodb:us-west-2:123456789012:table/Books`와 비슷하며 테이블이 위치한 리전, 소유자의 AWS 계정 번호 및 `table/Books` 형식의 테이블 이름으로 구성됩니다. ARN 지정에 대한 자세한 내용은 [DynamoDB의 Amazon 리소스 이름](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingIAMWithDDB.html#ARN_Format)을 참조하세요.  
![\[Edit Permissions page for Amazon DynamoDB with Allow effect and ARN input field.\]](http://docs.aws.amazon.com/ko_kr/mobile/sdkforxamarin/developerguide/images/edit-permissions-dynamodb.png)

1. **설명문 추가**를 클릭하고 **다음 단계**를 클릭합니다. 마법사가 앞서 생성한 구성을 표시합니다.

1. **정책 적용**을 클릭합니다.

### 프로젝트에 DynamoDB용 NuGet 패키지 추가
<a name="add-nuget-package-for-dynamodb-to-your-project"></a>

[.NET 및 Xamarin용 AWS Mobile SDK 설정](setup.md) 내 지침의 4단계를 따라 DynamoDB NuGet 패키지를 프로젝트에 추가합니다.

## AmazonDynamoDBClient 초기화
<a name="initialize-amazondynamodbclient"></a>

초기화된 Amazon Cognito 자격 증명 공급자 및 리전을 `AmazonDynamoDB` 생성자로 전달한 다음 클라이언트를 DynamoDBContext로 전달합니다.

```
var client = new AmazonDynamoDBClient(credentials,region);
DynamoDBContext context = new DynamoDBContext(client);
```

## 클래스 생성
<a name="create-a-class"></a>

테이블에 행을 기록하려면 행 데이터를 보관할 클래스를 정의합니다. 클래스는 행의 속성 데이터를 보관하는 속성도 포함해야 하며, 콘솔에서 생성된 DynamoDB 테이블에 매핑됩니다. 다음 클래스 선언은 그러한 클래스를 예시합니다.

```
[DynamoDBTable("Books")]
public class Book
{
    [DynamoDBHashKey]    // Hash key.
    public int Id { get; set; }
    public string Title { get; set; }
    public string ISBN { get; set; }
    public int Price { get; set; }
    public string PageCount { get; set; }
    public string Author{ get; set; }
}
```

## 항목 저장
<a name="save-an-item"></a>

항목을 저장하려면 먼저 객체를 생성합니다.

```
Book songOfIceAndFire = new Book()
{
    Id=1,
    Title="Game Of Thrones",
    ISBN="978-0553593716",
    Price=4,
    PageCount="819",
    Author="GRRM"
};
```

그런 다음 저장합니다.

```
context.Save(songOfIceAndFire);
```

행을 업데이트하려면 위와 같이 `DDTableRow` 클래스의 인스턴스를 수정하고 `AWSDynamoObjectMapper.save()`를 호출합니다.

## 항목 검색
<a name="retrieve-an-item"></a>

기본 키를 사용하여 항목을 검색합니다.

```
Book retrievedBook = context.Load<Book>(1);
```

## 항목 업데이트
<a name="update-an-item"></a>

항목 업데이트 방법:

```
Book retrievedBook = context.Load<Book>(1);
retrievedBook.ISBN = "978-0553593716";
context.Save(retrievedBook);
```

## 항목 삭제
<a name="delete-an-item"></a>

항목 삭제 방법:

```
Book retrievedBook = context.Load<Book>(1);
context.Delete(retrievedBook);
```

Xamarin 애플리케이션에서 DynamoDB에 액세스하는 방법에 대한 자세한 내용은 [Amazon DynamoDB](dynamodb.md)를 참조하세요.