DynamoDB InvalidOperationException на AWS - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь выполнить LoadAsync для DynamoDB.

        var clientConfig = new AmazonDynamoDBConfig
        {

            RegionEndpoint = RegionEndpoint.USEast1
        };
        var client = new AmazonDynamoDBClient(clientConfig);
        var context = new DynamoDBContext(client);            
        return await context.LoadAsync<MyObject>(MyObjectIDString);

Когда я публикую в Beanstalk и вызываю конечную точку, я получаю InvalidOperationException:

"Должен быть определен один хеш-ключдля таблицы MyObject "

Таблица существует и имеет значения, все отлично работает, когда выполняется локально из Visual Studio.Я вижу таблицу в консоли AWS и получаю соответствующие объекты при локальном выполнении.

Stacktrace:

   at Amazon.DynamoDBv2.DataModel.DynamoDBContext.MakeKey(Object hashKey, Object rangeKey, ItemStorageConfig storageConfig, DynamoDBFlatConfig flatConfig)\\r\\n   
    at Amazon.DynamoDBv2.DataModel.DynamoDBContext.LoadHelper[T](Object hashKey, Object rangeKey, DynamoDBOperationConfig operationConfig, Boolean isAsync)\\r\\n  
    at Amazon.DynamoDBv2.DataModel.DynamoDBContext.<>c__DisplayClass99_0`1.<LoadAsync>b__0()\\r\\n  

    at Amazon.Runtime.Internal.AsyncRunner.<>c__DisplayClass1_2`1.<Run>b__1()\\r\\n--- End of stack trace from previous location where exception was thrown ---\\r\\n 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\\r\\n   
    at Amazon.Runtime.Internal.AsyncRunner.<>c__DisplayClass1_0`1.<<Run>b__0>d.MoveNext()\\r\\n--- End of stack trace from previous location where exception was thrown ---\\r\\n 

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\\r\\n   
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\\r\\n   
    at Eprate.Common.DynamoLayer.DynamoLayer.<GetShow>d__1.MoveNext() in C:\\\\Users\\\\flarp\\\\Source\\\\Repos\\\\EprateGit\\\\Common\\\\DynamoLayer\\\\DynamoLayer.cs:line 38\\r\\n--- End of stack trace from previous location where exception was thrown ---\\r\\n 

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\\r\\n   
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\\r\\n   
    at Eprate.API.Controllers.ShowController.<GetShow>d__0.MoveNext() in C:\\\\Users\\\\flarp\\\\Source\\\\Repos\\\\EprateGit\\\\API\\\\Controllers\\\\ShowController.cs:line 24",

Есть ли у вас какие-либо указания относительно того, как это исследовать?Нужно ли делать что-то другое при развертывании на AWS?Что-то о полномочиях или роли IAM?

1 Ответ

0 голосов
/ 26 мая 2018

В классе MyObject вам необходимо иметь атрибут для ключа хеша, который должен аннотироваться с помощью аннотации DynamoDBHashKey.

Кроме того, вам необходимо заполнить значение ключа хеша перед вызовом API загрузки.,В основном, загрузка api должна получить значение по значению ключевого атрибута.

См. Ссылку для аннотаций DynamodB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...