lambdaからDynamoDB内にある条件に一致したデータを取り出したい。

0

lambdaで指定したDynamoDBのテーブルから条件に一致した行だけを抜き出すため、以下のようなスクリプトを利用しています。

DynamoDBには指定した条件に一致した情報が登録があるにもかかわらず、lambdaでは"No matching item found."がプリント出力されてしまいます。

    query_kwargs = {
        "KeyConditionExpression": Key("userId").eq(userId) ,
        "FilterExpression": Key("recordId").eq(recordId)& Key("event_type").eq(event_type),
    }
    response_event = dynamodb_my_Table.query(**query_kwargs)
    print(response_event)
    if response_event['Items']:
        print(response_event)
    else:
        print("No matching item found.")

なにか解決策があればご教示いただけますと幸いです。よろしくお願いいたします。

yuuka_u
質問済み 2ヶ月前603ビュー
1回答
1

まずは以下の条件だけでレコードが取得できるか確認した方がよいと思います。

"KeyConditionExpression": Key("userId").eq(userId)

ここから徐々に条件を増やしていくのはいかがでしょうか?

"FilterExpression"はパーティションキー、ソートキーは使えないみたいなので注意してください。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/query.html

A FilterExpression does not allow key attributes. You cannot define a filter expression based on a partition key or a sort key.

profile picture
エキスパート
回答済み 2ヶ月前
profile picture
エキスパート
レビュー済み 2ヶ月前
  • @Riku Kobayashiさん、いつもご回答ありがとうございます。 細かく確認することは必要そうですね。 色々試してみます。 アドバイスありがとうございました。参考にさせていただきます。

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ