У меня супер простая таблица DynamoDB:
CurrencyExchange:
Type: AWS::DynamoDB::Table
Properties:
TableName: 'MyTable'
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: 'RDate'
AttributeType: 'S'
KeySchema:
- AttributeName: 'RDate'
KeyType: HASH
GlobalSecondaryIndexes:
- IndexName: DateIndex
KeySchema:
- AttributeName: 'RDate'
KeyType: HASH
Projection:
ProjectionType: ALL
И все, что я хочу сделать, это найти самое высокое значение ключа. У меня нет значения запроса для использования в качестве условия, поэтому я попытался с
$iteratorParameters = [
'TableName' => 'MyTable',
'Limit' => 1,
'IndexName' => 'DateIndex',
'ScanIndexForward' => true
];
$result = DynamoDbFacade::query($iteratorParameters);
но я получаю
{
"__type":"com.amazon.coral.validate#ValidationException",
"message":"Either the KeyConditions or KeyConditionExpression parameter must be specified in the request."
}
Я могу использовать KeyConditions
с одним из этих операторов [IN, NULL, BETWEEN, LT, NOT_CONTAINS, EQ, GT, NOT_NULL, NE, LE, BEGINS_WITH, GE, CONTAINS]
но если я сделаю
$iteratorParameters = [
'TableName' => 'MyTable',
'Limit' => 1,
'KeyConditions' => [
'RDate' => [
'ComparisonOperator' => 'NOT_NULL'
],
],
'IndexName' => 'DateIndex',
'ScanIndexForward' => true
];
$result = DynamoDbFacade::query($iteratorParameters);
Я получаю
{
"__type":"com.amazon.coral.validate#ValidationException",
"message":"Attempted conditional constraint is not an indexable operation"
}
Как правильно найти максимальное значение ключа?