2017-12-18 255 views
0

我用戶sdk v.3存儲&從s3中檢索文件。我已經生成了預定網址&,它可以在我的網絡中正常工作。但我無法訪問其他網絡的網址。 這裏是我的代碼s3預先登記的網址無法在我的網絡外工作

$sharedConfig = [ 
    'version'  => 'latest', 
     'region'  => 'eu-west-1', 
     'credentials' => [ 
      'key' => '...', 
      'secret' => '...' 
     ] 
]; 

$sdk = new Aws\Sdk($sharedConfig); 

$s3Client = $sdk->createS3(); 

$object = [ 
    'Bucket' => 'test.bucket', 
    'Key'  => 'icon.png' 
]; 

$cmd = $s3Client->getCommand('GetObject',$object); 
$request = $s3Client->createPresignedRequest($cmd, '+5 minutes'); 

有沒有什麼辦法讓網址完全公開的5分鐘內沒有改變鬥ACL?順便說一句,我在嘗試從其他網絡訪問預先註冊的url時遇到以下錯誤。

<Error> 
<Code>AccessDenied</Code> 
<Message>Access Denied</Message> 
<RequestId>A793BD3D8DF125E5</RequestId> 
<HostId> 
1nV37sDXfKGEkHuiDGY9I8TNZllIL8jDQabC4vlpuAtSDllOay3qGglf9Y/EW6wFILnfAszG/YM= 
</HostId> 
</Error> 
+1

預簽名的URL與存儲桶ACL無關,只要在對象上沒有任何活動的DENY策略,它就可以在Internet上的任何地方工作。你是如何測試「其他網絡」的網址的?您是否說*完全相同的預簽名網址*在5分鐘的時間內都在互聯網上的一個位置工作,而不是另一個位置? –

回答

0

Presigned網址供公衆查閱生成。但我的存儲桶只允許從特定的IP訪問。這就是爲什麼我無法從任何其他網絡訪問網址。

我通過在我的服務器上創建另一個下載服務(這是白名單)並將該文件下載到請求者來完成我的任務。