2017-12-18 8 views
0

I user sdk v3을 (를) &에서 s3의 파일을 검색합니다. 내가 미리 할당 된 URL을 & 생성했습니다 내 네트워크에서 잘 작동합니다. 하지만 다른 네트워크에서 URL에 액세스 할 수 없습니다. 여기 버킷 ACL을 변경하지 않고 5 분 동안 완전히 공개 URL을 만들 수있는 방법이 있나요 내 코드s3 presigned url이 (가) 내 네트워크 외부에서 작동하지 않습니다.

$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'); 

입니까? btw, 다른 네트워크에서 미리 지정된 URL에 액세스하는 동안 다음 오류가 발생합니다.

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

사전 서명 된 URL은 버킷 ACL과 관련이 없으며 개체에서 DENY 정책이 활성화되어 있지 않으면 인터넷의 어느 곳에서나 작동해야합니다. "다른 네트워크"에서 URL을 어떻게 테스트 했습니까? 인터넷상의 한 위치에서 정확히 동일한 미리 서명 된 URL *이 5 분 이내에 모두 작동했다고 말하는 것입니까? –

답변

0

공개 된 액세스 용으로 미리 지정된 URL이 생성됩니다. 내 버킷은 특정 IP에서만 액세스를 허용합니다. 그게 내가 왜 다른 네트워크에서 URL에 액세스 할 수 없는지.

필자는 내 서버 (흰색 목록에 있음)에서 다른 다운로드 서비스를 만들고 요청자에게 파일을 다운로드하는 목적으로 서비스를 제공했습니다.