 <p>You are using incorrect syntax for batchWrite, try following</p> <pre><code>$response = $dynamoDb-&gt;batchWriteItem([ 'RequestItems' =&gt; [ 'mytable' =&gt; [ [ 'PutRequest' =&gt; [ 'Item' =&gt; [ 'id' =&gt; array('S' =&gt; '123abc'), 'value' =&gt; array('N' =&gt; '1'), ] ], 'PutRequest' =&gt; [ ///Entire PutRequest array need to be repeated not just item array/// 'Item' =&gt; [ 'id' =&gt; array('S' =&gt; '123abc'), 'value' =&gt; array('N' =&gt; '2'), ] ], ], ], ], ]); </code></pre> <p>Apart from that, the difference between single insert and multiple inserts would be the call to connect with DynamoDB, in batchPut you will send entire array at once whereas in single insert it will connect to DB each time it tries to perform any operation.</p> <p>In general, you can use Batch to process things faster.</p> <p>Here is the refernce <a href="http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.DynamoDb.DynamoDbClient.html#_batchWriteItem" rel="nofollow">link for batchWrite syntax</a></p> <p>Hope that helps.</p>