 <p>'Key' in the <code>getCommand</code> array is the name/path to the file you want to generate a pre-signed URL for, not your AWS key :)</p> <pre><code>$cmd = $s3Client-&gt;getCommand('GetObject', [ 'Bucket' =&gt; 'my-bucket-name', 'Key' =&gt; 'path/to/file.txt', // or just file.txt if it's in the root of the bucket ]); </code></pre>