はかせのラボ

私の頭の中を書いていく雑記ブログです

AWS UnityからDynamoDBの読み込み

あいさつ

どうも、はかせです。
今回はUnityでDynamoDBのデータを取得する方法です。

データを取得するための準備

まずデータを取得するために
取得するデータを表すクラスを作成します。

[DynamoDBTable("Test"),Serializable]
public class TestTable
{
    [DynamoDBHashKey]
    public string action;
    [DynamoDBProperty("info")]
    public List<string> infos;
}

色々属性値が付いていますね。
DynamoDBTableは対応するテーブルを指定します。
今回はTestという名前のテーブルが対象となっています。

DynamoDBHashKeyはプライマリキーのことです。
この属性値が付いた変数が検索などで使用するプライマリキーの値となります。

DynamoDBPropertyはプライマリキー以外の値です。
指定した名前の情報が格納されます。
また変数名を一致させることで指定なしでも同じ結果を得られます。
注意点として変数の型をDynamoDBの対応するデータと同じにしてください。
型が違うとエラー吐かれます。
(万能選手object型で吐かれたので間違いないです)

ちなみにDynamoDBHashKeyとDynamoDBPropertyは必須です。
他にも色々属性があります。詳しくは公式のリファレンスをどうぞ。
docs.aws.amazon.com

データを取得する

準備が終わったところで実際に取得してみます。
取得にはLoadAsyncメソッドを使用します。

Context.LoadAsync<TestTable>(hashKey: test.action,(res)=> 
{
     if(res.Exception == null)
     {
        test = res.Result;
        print(test.action);
        foreach(var item in test.infos)
        {
            print(item);
        }
     }
     else
     {
            print(res.Exception);
     }
});

hashKey:にはプライマリキーとして使用する値を入れます。
後半にラムダ式が登場していますが、これはコールバックです。
LoadAsyncメソッドが完了した後で自動的に呼ばれるわけですね。

resの中に結果がすべて入っていますので、
とりあえず中身を表示させてみました。
f:id:hakase0274:20190824223844p:plain

あとがき

今回はUnityでDynamoDBのデータ取得でした。
初期設定が大変だったので身構えてかかりましたが、
意外と簡単でちょっと拍子抜けしました。

やっぱり何事も最初が一番大変ってことですかね。
それでは今回はこの辺でノシ