

 AWS Mobile SDK for Xamarin が に含まれるようになりました AWS SDK for .NET。このガイドでは、Mobile SDK for Xamarin のアーカイブバージョンについて説明します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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>

このチュートリアルを開始する前に、必ず「[AWS Mobile SDK for .NET and Xamarin をセットアップする](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)に移動し、[**テーブルの作成**] をクリックします。[テーブルの作成] ウィザードが表示されます。

1. 下に示すように、テーブル名、プライマリキーのタイプ (ハッシュ)、およびハッシュ属性名 (「Id」) を指定して、[**Continue (続行)**] をクリックします。  
![\[DynamoDB table creation interface showing table name, primary key type, and hash attribute configuration.\]](http://docs.aws.amazon.com/ja_jp/mobile/sdkforxamarin/developerguide/images/create-table.png)

1. 次の画面の編集フィールドを空白のままにして、[**続行**] をクリックします。

1. [**読み込みキャパシティーユニット**] と [**書き込みキャパシティーユニット**] のデフォルト値をそのまま使用し、[**続行**] をクリックします。

1. 次の画面で、[**通知の送信先:**] テキストボックスに E メールアドレスを入力し、[**続行**] をクリックします。レビュー画面が表示されます。

1. [**Create (作成)**] をクリックします。テーブルが作成されるまでには数分かかる場合があります。

### DynamoDB のアクセス許可を設定する
<a name="set-permissions-for-dynamodb"></a>

ID プールが Amazon DynamoDB にアクセスを可能にするには、ID プールのロールを変更する必要があります。

1. [Identity and Access Management コンソール](https://console.aws.amazon.com/iam/home)に移動し、左のペインの [**ロール**] をクリックします。ID プール名を検索します。未認証ユーザーと認証されたユーザーの 2 つのロールが表示されます。

1. 未認証ユーザーのロール (unauth を ID プール名に追加) をクリックし、[**Create Role Policy (ロールポリシーの作成)**] をクリックします。

1. [**Policy Generator**] を選択し、[**選択**] をクリックします。

1. [**アクセス許可の編集**] ページで、次の画像に示されている設定を入力します。DynamoDB テーブルの Amazon Resource Name (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/ja_jp/mobile/sdkforxamarin/developerguide/images/edit-permissions-dynamodb.png)

1. [**ステートメントを追加**] をクリックし、[**次のステップ**] をクリックします。ウィザードに、生成した設定が表示されます。

1. [**ポリシーの適用**] をクリックします。

### DynamoDB の NuGet パッケージをプロジェクトに追加する
<a name="add-nuget-package-for-dynamodb-to-your-project"></a>

「[AWS Mobile SDK for .NET and Xamarin のセットアップ](setup.md)」のステップ 4 に従って、DynamoDB NuGet パッケージをプロジェクトに追加します。

## Initialize 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)」を参照してください。