2017-05-04 85 views
0

我試圖下載私人S3對象並將其存儲網站服務器如何下載S3對象並將其存儲在服務器上

這裏的就是我試圖

$s3 = new S3Client([ 
     'version' => 'latest', 
     'region' => 'ap-south-1', 
     'credentials' => array(
      'key' => '*****', 
      'secret' => '*******' 
     ) 
    ]); 

$command = $s3->getCommand('GetObject', array(
    'Bucket' => 'bucket_name', 
    'Key' => 'object_name_in_s3' 
    'ResponseContentDisposition' => 'attachment; filename="'.$my_file_name.'"' 
)); 

$signedUrl = $command->createPresignedUrl('+15 minutes'); 
echo $signedUrl; 

我如何保存我的服務器

回答

0

這些文件從Get an Object Using the AWS SDK for PHP

use Aws\S3\S3Client; 

$bucket = '*** Your Bucket Name ***'; 
$keyname = '*** Your Object Key ***'; 
$filepath = '*** Your File Path ***'; 

// Instantiate the client. 
$s3 = S3Client::factory(); 

// Save object to a file. 
$result = $s3->getObject(array(
    'Bucket' => $bucket, 
    'Key' => $keyname, 
    'SaveAs' => $filepath 
)); 

如果你只是想從命令行下載文件(而不是應用程序),則可以使用AWS Command-Line Interface (CLI) - 它有一個aws s3 cp命令。

代碼中的Pre-signed URL可用於授予對存儲在Amazon S3存儲桶中的私人對象的時間限制訪問權限。通常,應用程序會生成URL並將其包含在網頁中供用戶單擊並下載該對象。不需要在服務器端使用它,因爲服務器將擁有有權訪問Amazon S3中的內容的憑據。

+0

我想你的代碼,但我的目標是私人和AWS SDK是造成這樣'的https文件的簡單鏈接:// s3.ap-south-1.amazonaws.com/examle /文件/ U_zk2nMHTNVgJu1ZYQPoCdAicbjv6yl7Gw9Fr3fhKeDLtxpWSRaO4m0s.zip'它沒有生成預定網址 – Aniket

+0

這是正確的。爲什麼你想要一個預先簽名的URL?你說「我試圖下載私人S3對象並將其存儲在網站服務器上」 - 這不需要預先簽名的URL。它需要普通的AWS證書。如果您正在EC2實例上下載,則將角色分配給該實例,並自動獲取憑證。如果這不是你正在做的,請編輯你的問題並添加更多的細節(例如,網絡服務器在哪裏)。 –

相關問題