Aws lambda 从DynamoDB获取按时间戳排序的数据

Aws lambda 从DynamoDB获取按时间戳排序的数据,aws-lambda,amazon-dynamodb,Aws Lambda,Amazon Dynamodb,我在DynamoDB表中有附加的数据结构。to是分区键,from是排序键。我使用以下Python Lambda函数来检索我的所有数据。我目前面临的问题是,响应结果没有按时间戳从新到旧排序 def lambda_handler(event, context): response = table.scan() return { 'statusCode': 200, 'body': response['Items'] } DynamoDB表格

我在DynamoDB表中有附加的数据结构。to是分区键,from是排序键。我使用以下Python Lambda函数来检索我的所有数据。我目前面临的问题是,响应结果没有按时间戳从新到旧排序

def lambda_handler(event, context):
    response = table.scan()

    return {
        'statusCode': 200,
        'body': response['Items']
    }
DynamoDB表格结构

+-----------+-----------+------------+---------------+-----------+
|    to     |   from    |   medium   |  messageBody  | timestamp |
+-----------+-----------+------------+---------------+-----------+
| 123456789 | 1234:4321 | somemedium | Hello World 1 |  23422523 |
| 123456789 | 9876:4321 | somemedium | Hello World 2 |  23432529 |
| 123456789 | 4565:3213 | somemedium | Hello World 3 |  23467839 |
| 123456789 | 4565:3323 | somemedium | Hello World 4 |  23533789 |
+-----------+-----------+------------+---------------+-----------+
更新:

import boto3
from boto3.dynamodb.conditions import Key

import logging
import json
import decimal


## Set logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)

## Set DynamoDB
dynamodb = boto3.resource("dynamodb")
table = dynamodb.Table("MyTable")

logger.info(f"CREATED NEW ITEM IN DYANMODB")

def lambda_handler(event, context):
    response = table.query(
        IndexName='to-timestamp-index',
        KeyConditionExpression=Key('to').eq(12345)
    )

    return {
        'statusCode': 200,
        'body': response['Items']
    }
您使用的是table.scan,它不保证任何订购。可以使用时间戳作为排序/范围键创建新的二级索引。之后,使用查询而不是扫描该辅助索引来检索按范围键排序的结果


相关问题

Hi Rubbal,我用Python调整了我的代码,请参见更新。但是,我始终收到错误消息:参数验证失败:\n参数KeyConditionExpression的无效类型,值:,类型:,有效类型:,。你知道为什么吗?我想我现在用KeyConditionExpression=Key'to解决了这个问题。eq12345,