title: Error InvalidParameterType: Expected params.Item['pid'] to be a structure in DynamoDB
body: <p>Note: all these are happening on the local instance of DynamoDB.</p>
  
  <p>This is the code that I've used to create a table from the DynamoDB Shell:</p>
  
  <pre><code>var params = {
      TableName: "TABLE-NAME",
      KeySchema: [
          { AttributeName: "pid", 
            KeyType: "HASH"
          }
      ],
      AttributeDefinitions: [
          { AttributeName: "pid",
            AttributeType: "S"
          }
      ],
      ProvisionedThroughput: {
          ReadCapacityUnits: 1,
          WriteCapacityUnits: 1
      }
  };
  
  
  dynamodb.createTable(params, function(err, data) {
      if (err)
          console.log(JSON.stringify(err, null, 2));
      else
          console.log(JSON.stringify(data, null, 2));
  });
  </code></pre>
  
  <p>This is the function that is being called to add elements into the DB (in node.js):</p>
  
  <pre><code>function(request, response) {
    params = {
      TableName: 'TABLE-NAME',
      Item: {
        pid: 'abc123'
      }
    };
    console.log(params);
    dynamodb.putItem(params, function(err, data) {
      if (err)
        console.log(JSON.stringify(err, null, 2));
      else
        console.log(JSON.stringify(data, null, 2));
    });
  }
  </code></pre>
  
  <p>The output that I get is:</p>
  
  <pre><code>{ TableName: 'TABLE-NAME',
    Item: { pid: 'abc123' } }   // THIS IS PARAMS
  {
    "message": "There were 7 validation errors:\n* InvalidParameterType: Expected params.Item['pid'] to be a structure\n* UnexpectedParameter: Unexpected key '0' found in params.Item['pid']\n* UnexpectedParameter: Unexpected key '1' found in params.Item['pid']\n* UnexpectedParameter: Unexpected key '2' found in params.Item['pid']\n* UnexpectedParameter: Unexpected key '3' found in params.Item['pid']\n* UnexpectedParameter: Unexpected key '4' found in params.Item['pid']\n* UnexpectedParameter: Unexpected key '5' found in params.Item['pid']",
    "code": "MultipleValidationErrors",
    "errors": [
      {
        "message": "Expected params.Item['pid'] to be a structure",
        "code": "InvalidParameterType",
        "time": "2015-11-26T15:51:33.932Z"
      },
      {
        "message": "Unexpected key '0' found in params.Item['pid']",
        "code": "UnexpectedParameter",
        "time": "2015-11-26T15:51:33.933Z"
      },
      {
        "message": "Unexpected key '1' found in params.Item['pid']",
        "code": "UnexpectedParameter",
        "time": "2015-11-26T15:51:33.933Z"
      },
      {
        "message": "Unexpected key '2' found in params.Item['pid']",
        "code": "UnexpectedParameter",
        "time": "2015-11-26T15:51:33.933Z"
      },
      {
        "message": "Unexpected key '3' found in params.Item['pid']",
        "code": "UnexpectedParameter",
        "time": "2015-11-26T15:51:33.933Z"
      },
      {
        "message": "Unexpected key '4' found in params.Item['pid']",
        "code": "UnexpectedParameter",
        "time": "2015-11-26T15:51:33.934Z"
      },
      {
        "message": "Unexpected key '5' found in params.Item['pid']",
        "code": "UnexpectedParameter",
        "time": "2015-11-26T15:51:33.934Z"
      }
    ],
    "time": "2015-11-26T15:51:33.944Z"
  }
  </code></pre>
  
  <p>I don't understand why or how it is getting keys 0, 1, 2, 3, 4 and 5 when they aren't present on being printed in the previous line.</p>
  
  <p>Also, how do I fix the error <code>Expected params.Item['pid'] to be a structure</code>? I have declared it as a string and am trying to store a string!</p>
  
  <p>Other notes:
  The same code that I've used in the function works just fine when I run it on the shell. I have also included the aws-sdk and have configured it as required:</p>
  
  <pre><code>var AWS = require('aws-sdk');
  AWS.config.region = 'us-east-1';
  AWS.config.endpoint = 'http://localhost:8000/'
  var dynamodb = new AWS.DynamoDB();
  </code></pre>