AWS UnityでDynamoDBを操作する
あいさつ
どうも、はかせです。
今回は再びUnityAWSに帰り
DynamoDBを操作した話です。
(あっちこっち行ってすみません)
DynamoDBの操作
基本はDynamoDBのunitypackageを使ってやります。
サンプルがデフォルトだと動かなかったり
サンプル直しても私がAWSに疎かったりで
普通だと詰まらないようなとこで変な詰まり方をしました。
やり方はネット上に散々落ちてますし、
私が参考にしたサイトも載せておくので
サンプルの動かし方はそちらをご覧ください。
AWSSDKのバグフィックス
何も手を付けずAWSのサンプル動かすとこんなエラーが出てきます。
InvalidOperationException: Cannot override system-specified headers
簡単に言うと
WWWじゃなくてUnityWebRequest使えってことみたいです。
ただWWWを使っているのはSDKの中身なので
我々一般ピーポーが触れることはできません。
なのでSDKにUnityWebRequest使ってくれっていうのを
お願いします。
DynamoDBExample.csのStartメソッドの中身に一文追加します。
UnityInitializer.AttachToGameObject(this.gameObject); //追加 AWSConfigs.HttpClient = AWSConfigs.HttpClientOption.UnityWebRequest;
この一文を追加することでエラーが消えます。
ロールが無効?IAMの信頼関係?
※私はいまだによくわかっておりません
さてバグフィックスが終わったところでサンプルに付属してたReadMeに従って
サンプルを動かしていきました。
そしたらこんなエラーが出てきました。
Invalid identity pool configuration. Check assigned IAM roles for this pool.
直訳すると
IDプールの構成間違ってるよ。
このプールにあてがわれてるIAMロール確認してよ。
って感じですかね。
ただ構成も何もただチュートリアル通り作っただけだしなぁ
とか思いながらググっていたらなにやら
信頼関係なるものが存在する模様。
そして信頼関係についてググる・・・・
・・・・
・・・・
結論:私の頭では理解できません
こいつがどういうものなのかもつかみきれないですし、
つかめてないから必要性もイマイチわかりません・・・
しかし、信頼関係をうまいことしないとできないらしい。
なのでAWSの開発者ガイドのコードをコピペしてきました。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "信頼するIDプールのID" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }
本当はこういう「わからないけどこうすればいい」系は
好みじゃないのですが、背に腹は代えられません。
変にこだわってできませんでしたが一番ダメですからね。
そしてこいつを設定したら上記のエラーは解消され
無事DynamoDBを操作することができました。