私はDynamoDBデータベースにクエリするためにLambda(Python)を使用しています。私はboto3ライブラリを使用しています、と私は、「同等」のクエリを作ることができた:AWS DynamoDB Python - boto3 Key()メソッドが認識されない(クエリ)
このスクリプトは動作します:
import boto3
from boto3.dynamodb.conditions import Key, Attr
import json
def create_list(event, context):
resource = boto3.resource('dynamodb')
table = resource.Table('Table_Name')
response = table.query(
TableName='Table_Name',
IndexName='Custom-Index-Name',
KeyConditionExpression=Key('Number_Attribute').eq(0)
)
return response
しかし、私はこれにクエリ式を変更する場合:
KeyConditionExpression=Key('Number_Attribute').gt(0)
私はエラーを取得する:
"errorType": "ClientError",
"errorMessage": "An error occurred (ValidationException) when calling the Query operation: Query key condition not supported"
この[1]リソースによると、 "GT")は、キー(の方法です。このライブラリが更新されたか、あるいは "eq"以外の他のメソッドが利用可能であるかは誰にも知られていますか?
[1] http://boto3.readthedocs.io/en/latest/reference/customizations/dynamodb.html#ref-dynamodb-conditions
--------- EDIT ----------
Iはまた、ちょうど使用して、古い方法を試みた。
response = client.query(
TableName = 'Table_Name',
IndexName='Custom_Index',
KeyConditions = {
'Custom_Number_Attribute':{
'ComparisonOperator':'EQ',
'AttributeValueList': [{'N': '0'}]
}
}
)
これは働いたが、私がしようとすると:
response = client.query(
TableName = 'Table_Name',
IndexName='Custom_Index',
KeyConditions = {
'Custom_Number_Attribute':{
'ComparisonOperator':'GT',
'AttributeValueList': [{'N': '0'}]
}
}
)
...動作しません。
これらのケースでは、EQが唯一の方法であるのはなぜですか?私はドキュメントに何が欠けているのか分かりません。私が何を考えてから
このドキュメントを参照すると仮定します。http://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Client.query – mootmoot