Проблема с типом данных списка DynamoDB

Согласно этому документу, DynamoDB поддерживает типы карт (M) и списков (L), но когда я пытаюсь создать таблицу с типом (L), я получаю сообщение об ошибке:

ValidationException (клиент): 1 обнаружена ошибка проверки: значение 'L' в 'attributeDefinitions.2.member.attributeType' не удовлетворяет ограничению: элемент должен удовлетворять заданному значению перечисления: [B, N, S]

Это происходит после добавления ThreadReplyIds Атрибут для таблицы информации:

[
    'AttributeDefinitions' => [
        [
            'AttributeName' => 'UserId',
            'AttributeType' => 'N',
        ],
        [
            'AttributeName' => 'ThreadReplyIds', // <<---
            'AttributeType' => 'L',
        ],
        [
            'AttributeName' => 'Title',
            'AttributeType' => 'S',
        ],
    ],
    'KeySchema' => [
        [
            'AttributeName' => 'UserId',
            'KeyType' => 'HASH',
        ],
        [
            'AttributeName' => 'Title',
            'KeyType' => 'RANGE',
        ],
    ],
    'ProvisionedThroughput' => [
        'ReadCapacityUnits' => 5,
        'WriteCapacityUnits' => 5,
    ],
    'TableName' => 'Thread',
]

Моя цель - сохранить список или набор целочисленных значений для ThreadReplyIds, Что я делаю неправильно?

1 ответ

Решение

Сначала я подумал, что это может быть версия SDK, которую вы используете. Но после некоторого прочтения документации кажется, что при создании таблицы AttributeType для любого AttributeDefinition может быть только одним из 'S|N|B' (что означает 'String', 'Number' или 'Binary'). Ссылка: PHP SDK DynamoDB AttributeDefinition.

Это имеет смысл, поскольку вы все равно не можете использовать List в своей KeySchema. Поэтому нет необходимости определять атрибут для вашего списка при создании таблицы. Вы всегда можете добавить этот атрибут к любым данным, которые вы хотите, при добавлении или обновлении элементов в таблице после ее создания. Смотрите здесь: PHP SDK DynamoDB PutItem

Другие вопросы по тегам