AWS S3 임시 링크로 파일 다운로드
AWS S3 시간 제한 암호화 보안 토큰으로 임시 다운로드 링크 URL 생성방법
( Generating Temporary File Download URLs with Security Token )
- S3 권한 설정 : 파일이 존재하는 'S3 버킷의 폴더'에 별도의 보안 정책(Deny) 설정이 없어야 한다.
//-------------------------------------
$bucket = "S3버킷이름";
$path = "upload/up.zip";
$filename = "save_name.zip"; // 사용자에게 저장될 파일 이름
//-------------------------------------
- 방법 1
* 라라벨 코드
$url = \Storage::disk('s3')->temporaryUrl(
$path,
now()->addMinute(), // 다운로드 가능한 시간 설정
['ResponseContentDisposition' => 'attachment; filename ="' . $filename . '"']
);
//-------------------------------------
- 방법2
*AWS SDK 코드
$s3Client = \Storage::disk('s3')->getDriver()->getAdapter()->getClient();
$cmd = $s3Client->getCommand('GetObject', [
'Bucket' => $bucket,
'Key' => $path,
'ResponseContentDisposition' => 'attachment; filename ="' . $filename . '"',
]);
$request = $s3Client->createPresignedRequest($cmd, '+10 minutes');
$url = (string) $request->getUri();