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();

 

반응형
Posted by codens