web-dev-qa-db-ja.com

DynamoDBからアイテムを取得する際の「指定されたキー要素がスキーマと一致しません」エラー

これは、テーブルパーティションキーの設定です enter image description here

テーブルの内容 enter image description here

テーブルからアイテムを取得しようとすると、このエラーが出力されます

botocore.exceptions.ClientError:GetItem操作の呼び出し時にエラーが発生しました(ValidationException):指定されたキー要素がスキーマと一致しません

これは私のコードです

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('testDynamodb')
response = table.get_item(Key={'userId': "user2873"})
item = response['Item']
print(item)

何か案は?ありがとう。

21
Keoros

テーブルスキーマには、ハッシュキーとソートキーの両方が定義されています。 DynamoDB GetItemを使用する場合は、両方を指定する必要があります。 documentation からの抜粋です。

主キーの場合、すべての属性を指定する必要があります。たとえば、単純な主キーでは、パーティションキーの値を指定するだけで済みます。複合プライマリキーの場合、パーティションキーとソートキーの両方に値を指定する必要があります。

あなたの例を考えると、get_itemパラメータは次のようになります。

response = table.get_item(Key={'userId': "user2873", 'createdAt': "1489376547"})
35
xtx

動作するもう1つのことは、次のコードです。

from boto3.dynamodb.conditions import Key

result = table.query(
        KeyConditionExpression=Key('userId').eq('user2873')
    )
10
user754036