Запрос к DynamoDB без PrimaryKey с помощью лямбды - PullRequest
0 голосов
/ 15 мая 2018

Я хочу запросить мою DynamoDB с помощью лямбда-функции, выполняющей python.

Таблица DynamoDB (Имя: Таблица тестирования):

  • user_id (String) PrimaryKey
  • статус (строка)
  • пункт назначения (строка)

Я хочу запросить таблицу, как она есть в моем коде. Я хочу, чтобы лямбда-функция возвращала мне все user_id с атрибутом status с active .

table = dynamodb.Table('Testing-Table')
def lambda_handler(event, context):

response = table.query (
    KeyConditionExpression=Key('status').eq('active')
)

for i in response['Items']:
    print(i['user_id'],":",i['status'])

#return 'listing results'

Я также добавил новый индекс: Индексы

Я попытался создать таблицу с status в качестве первичного ключа, и мой код работал ... но ключ первичного ключа должен быть уникальным, поэтому, когда я пытаюсь создать новый элемент в своей таблице, я не могу установить статус снова активен.

При необходимости я добавлю дополнительную информацию к вопросу. Я бы поблагодарил за небольшую помощь.

- Редактировать - Мой код работает только , если status - это PrimaryKey моей таблицы.

У меня вопрос : Могу ли я сделать запрос к моей таблице DynamoDB, используя status PartitionKey вместо PrimaryKey used_id ? И самое главное ... Как это делается?

1 Ответ

0 голосов
/ 16 мая 2018

Я нашел то, что искал:

Мне нужно было добавить IndexName в мой код следующим образом.

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Testing-Table')

def lambda_handler(event, context):

response = table.query (
    IndexName='status-index',
    KeyConditionExpression=Key('status').eq('active')
)

for i in response['Items']:
    print(i['user_id'],":",i['status'])

Вот изображение результата:

Результаты

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