Найти наибольшее значение ключа HASH в DynamoDB с PHP - PullRequest
0 голосов
/ 04 июня 2019

У меня супер простая таблица 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"
}

Как правильно найти максимальное значение ключа?

...