title: Condition Expression seems not to be taken into account on DynamoDB PutItem
body: <p>It's one of the first times I'm using DynamoDB and have created a table for user accounts in my system.</p>
  <p>Table definition follows:</p>
  <pre class="lang-json prettyprint-override"><code>{
      &quot;Table&quot;: {
          &quot;AttributeDefinitions&quot;: [
              {
                  &quot;AttributeName&quot;: &quot;AccountId&quot;,
                  &quot;AttributeType&quot;: &quot;B&quot;
              },
              {
                  &quot;AttributeName&quot;: &quot;Email&quot;,
                  &quot;AttributeType&quot;: &quot;S&quot;
              }
          ],
          &quot;KeySchema&quot;: [
              {
                  &quot;AttributeName&quot;: &quot;AccountId&quot;,
                  &quot;KeyType&quot;: &quot;HASH&quot;
              }
          ],
          &quot;GlobalSecondaryIndexes&quot;: [
              {
                  &quot;IndexName&quot;: &quot;EmailAddress&quot;,
                  &quot;KeySchema&quot;: [
                      {
                          &quot;AttributeName&quot;: &quot;Email&quot;,
                          &quot;KeyType&quot;: &quot;HASH&quot;
                      }
                  ],
                  &quot;Projection&quot;: {
                      &quot;ProjectionType&quot;: &quot;ALL&quot;
                  },
                  &quot;IndexStatus&quot;: &quot;ACTIVE&quot;
              }
          ]
      }
  }
  </code></pre>
  <p><sup>Some fields have been omitted for brevity.</sup></p>
  <p>I am using Rusoto DynamoDB client and this is what the <code>PutItem</code> call looks like:</p>
  <pre class="lang-rust prettyprint-override"><code>dynamodb_client.put_item(PutItemInput{
      item: account_doc.as_hashmap(),
      table_name: accounts_datastore_name,
      condition_expression: Some(&quot;attribute_not_exists(Email) and attribute_not_exists(AccountId)&quot;.to_string()),
      ..PutItemInput::default()
  });
  </code></pre>
  <p>As far as I understand, this should have the following behavior: fail the transaction if there are documents that contain <code>Email</code> with the value that I'm supplying in the new document or <code>AccountId</code> with the value I'm supplying in the new document.</p>
  <p>I've been able to submit the same document multiple times without any error from the service. The documents are all in the table.</p>
  <p>Any ideas why this condition expression is allowing documents to pass?</p>