使用 Lambda 查询没有主键的 DynamoDB

Nac*_*ris 6 python amazon-web-services amazon-dynamodb aws-lambda

我想使用运行 python 的 lambda 函数查询我的 DynamoDB。

DynamoDB 表(名称:测试表):

  • user_id(字符串)主键
  • 状态(字符串)
  • 目的地(字符串)

我想查询我的代码中的表。我希望 lambda 函数返回所有状态属性为activeuser_id

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'
Run Code Online (Sandbox Code Playgroud)

我还添加了一个新索引: 索引

我尝试创建一个以状态为主键的表,并且我的代码有效...但主键必须是唯一的,因此当我尝试在表中创建新项目时,我无法再次将状态设置为活动状态。

如果有必要,我会在问题中添加更多信息。我会感谢您的一点帮助。

--编辑--状态是我的表的主键时,我的代码才有效。

我的问题是:我可以使用状态PartitionKey 而不是 PrimaryKeyused_id查询我的 DynamoDB 表吗?最重要的是......它是如何完成的?

Nac*_*ris 10

我找到了我正在寻找的东西:

我必须像这样在我的代码中添加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'])
Run Code Online (Sandbox Code Playgroud)

这是结果的图像:

结果