get_item из динамод с питоном - PullRequest
0 голосов
/ 15 ноября 2018

Этот вопрос меня сейчас тихо убивает. Я пытаюсь выучить Python, Lambda и Dynamodb.

Python выглядит потрясающе, я могу подключиться к MySQL, используя обычный сервер MySQL, такой как Xampp, цель - научиться работать с Dynamodb, но я не могу получить get_items из Dynamodb. Это действительно бьет меня по голове и уже занимает последние два дня.

Посмотрел тонны фильмов на YouTube и прочитал документацию по aws.

Любые подсказки, что я делаю неправильно. Мой код до сих пор;

import json
import boto3
from boto3.dynamodb.conditions import Key, Attr

#always start with the lambda_handler
def lambda_handler(event, context):

    # make the connection to dynamodb
    dynamodb = boto3.resource('dynamodb')

    # select the table
    table = dynamodb.Table("html_contents")

    # get item from database
    items = table.get_item(Key={"id": '1'})

Куда бы я ни посмотрел, я вижу, что должен делать это так. Но я продолжаю получать следующую ошибку

{errorMessage=An error occurred (ValidationException) when calling the GetItem operation: The provided key element does not match the schema, errorType=ClientError, stackTrace=[["\/var\/task\/lambda_function.py",16,"lambda_handler","\"id\": '1'"],["\/var\/runtime\/boto3\/resources\/factory.py",520,"do_action","response = action(self, *args, **kwargs)"],["\/var\/runtime\/boto3\/resources\/action.py",83,"__call__","response = getattr(parent.meta.client, operation_name)(**params)"],["\/var\/runtime\/botocore\/client.py",314,"_api_call","return self._make_api_call(operation_name, kwargs)"],["\/var\/runtime\/botocore\/client.py",612,"_make_api_call","raise error_class(parsed_response, operation_name)"]]}

Моя структура базы данных.

enter image description here

Мои настройки DynamoDb Имя таблицы html_contents Идентификатор первичного ключа раздела (номер) Основной ключ сортировки - Восстановление на определенный момент времени ОТКЛЮЧЕНО Шифрование ОТКЛЮЧЕНО Время жизни атрибута DISABLEDManage TTL Статус таблицы Актив

Что я здесь не так делаю? Я начинаю думать, что что-то не так с конфигурацией aws.

Заранее спасибо.

Wesley

1 Ответ

0 голосов
/ 15 ноября 2018

Thats to @ ippi.

Это были цитаты, которые я использую.

table.get_item(Key={"id": '1'})

должно быть

table.get_item(Key={"id": 1})

Поскольку я использую число, а не строку.Надеюсь, что это поможет следующему человеку (ам) с той же проблемой.

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