Если вы все еще ищете соответствующий ответ в 2019+, с AWS SDK для PHP 3.x и, в частности, «2006-03-01» с композитором, мне помогло следующее
...
/**
* Download a file
*
* @param string $object_key
* @param string $file_name
* @return void
*/
function download($object_key, $file_name = '') {
if ( empty($file_name) ) {
$file_name = basename($file_path);
}
$cmd = $s3->getCommand('GetObject', [
'Bucket' => '<aws bucket name>',
'Key' => $object_key,
'ResponseContentDisposition' => "attachment; filename=\"{$file_name}\"",
]);
$signed_url = $s3->createPresignedRequest($cmd, '+15 minutes') // \GuzzleHttp\Psr7\Request
->getUri() // \GuzzleHttp\Psr7\Uri
->__toString();
header("Location: {$signed_url}");
}
download('<object key here>', '<file name for download>');
ПРИМЕЧАНИЕ. Это решение для тех, кто хотел бы избежать проблем, которые могут возникнуть при использовании прокси-сервера загрузки через свои серверы с помощью прямой ссылки для загрузки из AWS.