C# API-интерфейс DynamoDB DescribeTableResponse возвращает неверные данные? - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть простая таблица DynamoDB с ключом Ha sh и индексом

Таблица:

  • Имя: банковские выписки

  • Ха sh Ключ: MTSTransactionID типа N

  • Индекс: StatementType-индекс типа S

Когда я сделать это:

DescribeTableResponse descResponse = _dynamoDbClient.DescribeTable(new DescribeTableRequest
                {TableName = "bank-statements"});

tableDescription = descResponse.Table;

затем

  • tableDescription.AttributeDefinitions.Count = 2. 2 элемента - это ключ и индекс
  • tableDescription.KeySchema. Count = 1. 1 элемент - это ключ

Затем я использую tableDescription, чтобы воссоздать таблицу, выполнив следующее:

CreateTableRequest createTableRequest = new CreateTableRequest
{
   TableName = tableDescription.TableName,
   AttributeDefinitions = tableDescription.AttributeDefinitions,
   KeySchema = tableDescription.KeySchema,
   ProvisionedThroughput = new ProvisionedThroughput
   {
      ReadCapacityUnits = tableDescription.ProvisionedThroughput.ReadCapacityUnits,
      WriteCapacityUnits = tableDescription.ProvisionedThroughput.WriteCapacityUnits
   }
 };

 CreateTableResponse response = _dynamoDbClient.CreateTable(createTableRequest);

Однако это приводит к ошибке:

Одно или несколько значений параметров были недопустимыми: количество атрибутов в KeySchema точно не соответствует количеству атрибутов, определенных в AttributeDefinitions

Это верно, но означает либо

  • возвращаемые данные неверны
  • Ошибка неверна, поскольку таблица явно не нуждается в этом straint

Что можно сделать, чтобы использовать DescribeTableResponse для повторного создания таблицы?

1 Ответ

1 голос
/ 11 февраля 2020

Проблема в том, что у вас есть ключ, который используется вашим индексом, но вы не создаете индекс. Это оставляет вас с неиспользованным ключом.

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