Я пытаюсь выполнить 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 и получаю соответствующие объекты при выполнении локально.
Трассировки стека:
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?





В классе MyObject вам необходимо иметь атрибут для хеш-ключа, который следует аннотировать с помощью аннотации DynamoDBHashKey.
Кроме того, вам необходимо указать значение хеш-ключа перед вызовом load api. По сути, load api должен получить значение по значению ключевого атрибута.
Обратитесь к ссылка на сайт для аннотаций Dynamodb.