title: How to update item using expression syntax for dynamodb on a table with both hash and range
body: <p>I believe this should work, but it doesn't:</p>
  
  <pre><code>$response = $client-&gt;updateItem(array(
    'TableName' =&gt; 'ximoIsThisYou',
    'KeyConditionExpression' =&gt; 'rep_num = :v_hash and record_created = :v_range',
    'ExpressionAttributeValues' =&gt;  array (
    ':v_hash'  =&gt; array('S' =&gt; $rep_num),
    ':v_range' =&gt; array('N' =&gt; $record_created),
    ':val1' =&gt; array('S' =&gt; '447747')
    ),
    'UpdateExpression' =&gt; 'set vimeo_id = :val1',
    'ReturnValues' =&gt; 'ALL_NEW'
  ));
  </code></pre>
  
  <p>I get this error:</p>
  
  <pre><code>Uncaught Aws\DynamoDb\Exception\ValidationException: 
  AWS Error Code: ValidationException, Status Code: 400, 
  AWS Request ID: UOPKLQER1MI3ANF48PU92IAC3VVV4KQNSO5AEMVJF66Q9ASUAAJG, 
  AWS Error Type: client, 
  AWS Error Message: 1 validation error detected: Value null at 'key' failed to satisfy constraint: Member must not be null, 
  User-Agent: aws-sdk-php2/2.8.2 Guzzle/3.9.3 curl/7.35.0 PHP/5.5.9-1ubuntu4.11
  </code></pre>
  
  <p>This however does work:</p>
  
  <pre><code>$response = $client-&gt;query(array(
    'TableName' =&gt; 'ximoIsThisYou',
    'KeyConditionExpression' =&gt; 'rep_num = :v_hash and record_created = :v_range',
    'ExpressionAttributeValues' =&gt;  array (
    ':v_hash'  =&gt; array('S' =&gt; $rep_num),
    ':v_range' =&gt; array('N' =&gt; $record_created)
    ),
  ));
  </code></pre>