aws вкладываемый элемент в Dynam Dynamb с вложенным json без определения дочерних типов атрибутов - PullRequest
0 голосов
/ 10 февраля 2020

Я делаю вызов DynamoDB, используя AWS CLI. У меня есть json структура, которая содержит еще один json объект. Я храню этот объект для долгосрочного вызова, и мне не нужно запрашивать или иным образом получать к нему доступ, кроме как извлекать его нетронутым для использования в последующих приложениях. Из исследования видно, что при использовании put-item с json объектами вы должны определить тип атрибута для каждой пары ключей, без исключений. Нет ли способа сохранить вложенный объект как строковый тип или иным образом избежать определения атрибутов для каждой пары?

В качестве примера предположим, что это моя (упрощенная) структура json: (это может быть неправильное использование скобок, я предполагаю, что AWS может ожидать)

{
    "stack_loc": {
        "S": "dir/structure"
    },
    "last_updated": {
        "S": "20200210_1042"
    },
    "payload": [
        {
            "cluster_name": "cluster01",
            "namespace": "alex-1"
        }
    ]
}

Я хочу закончить столбцом в моей таблице с именем payload, который содержит точную структуру, показанную в приведенном выше значении полезной нагрузки (включая {} скобки и кавычки). Я бы надеялся, что команда, подобная приведенной ниже, сработает:

aws dynamodb put-item --table-name stack_info --item {"stack_loc": {"S": "dir/structure"},"last_updated": {"S": "20200210_1042"},"payload": [{"cluster_name":"cluster01","namespace":"alex-1"}]}

, но это дает мне многочисленные ошибки (по одной для каждой пары ключей) о типе, например так:

Parameter validation failed:
Invalid type for parameter Item.payload.M.cluster_name, value: cluster01, type: <class 'str'>, valid types: <class 'dict'>

My идеальное значение в столбце полезной нагрузки будет выглядеть так:

{"cluster_name":"cluster01","namespace":"alex-1"}

Я не хочу устанавливать тип атрибута для имени кластера, пространства имен и т. д. c. Я не заинтересован в том, чтобы хранить его в качестве данных для поиска, я просто хочу сохранить список пар ключей для использования в другом месте. Какие у меня варианты?

...