前提・実現したいこと
unity上でAWSのDynamoを利用したチャット機能を実装したい
発生している問題・エラーメッセージ
AWS dynamoDBを利用して、Cognito認証後、Table.LoadTableAsyncでテーブルに接続した後で
updateで毎フレームクエリを発行した所、readCapacityUnitが上がっているとCloudWatchから通知がきました。
よくあるチャットアプリのように単純なdynamoDBに対して書き込みがあったかポーリングをしたかっただけなのですが、capacityunitを使わず、書き込みがあったかどうかだけ検査する方法はありますでしょうか?
よろしくお願いいたします。
該当のソースコード
C#
1 void Start(){ 2 UnityInitializer.AttachToGameObject(this.gameObject); 3 AWSConfigs.HttpClient = AWSConfigs.HttpClientOption.UnityWebRequest; // 4 var credentials = new CognitoAWSCredentials(idpool, region); 5 adc = new AmazonDynamoDBClient(credentials, region); 6 Table.LoadTableAsync(adc,"Chat",(loadTableResult)=>{ 7 if(loadTableResult.Exception != null){ 8 return; 9 } 10 else{ 11 _dynamo = loadTableResult.Result; 12 } 13 }); 14 _request = new QueryRequest 15 { 16 TableName = "Chat"//, 17 , ReturnConsumedCapacity = "TOTAL" 18 , Limit = 20 19 , KeyConditions = new Dictionary<string, Condition>(){{ 20 "RoomId",new Condition(){ 21 ComparisonOperator = ComparisonOperator.EQ, 22 AttributeValueList = new List<AttributeValue>(){new AttributeValue { S = roomkey }} 23 } 24 }, 25 { 26 "ChatId", new Condition(){ 27 ComparisonOperator = "GT", 28 AttributeValueList = new List<AttributeValue>(){ new AttributeValue { S = speaker + "#" + DateTime.MinValue.ToString() } 29 } 30 } 31 } 32 } 33 }; 34 } 35 private void FixedUpdate(){ 36 adc.QueryAsync(_request, (result) =>{ 37 var cnt = result.Response.Items.Count; 38 if (!cnt.Equals(0)){ 39 foreach (var item in result.Response.Items){ 40 //何かの処理 41 } 42 43 var last = result.Response.Items.Count - 1; 44 var lastkey = result.Response.Items[last]; 45 lastkey.Remove("ExpireDate"); 46 lastkey.Remove("Remerk"); 47 _request.ExclusiveStartKey = lastkey; 48 } 49 }); 50 }
試したこと
CloudWatchで監視したところ、FixedUpdateが動いて間、キャパシティが上昇していた。
補足情報(FW/ツールのバージョンなど)
テーブル名はChatです。
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/17 14:06