[php] PHP 라이브러리 S3 파일 다운로드 시 보안 설정
이번 포스트에서는 PHP 라이브러리를 사용하여 Amazon S3에서 파일을 다운로드 할 때의 보안 설정에 대해 알아보겠습니다.
Amazon S3에 파일 업로드하기
먼저, Amazon S3에 파일을 업로드하는 방법을 확인해보겠습니다. PHP에서 Amazon S3와 상호 작용하려면 aws/aws-sdk-php
라이브러리를 사용할 수 있습니다. 이 라이브러리는 Composer를 통해 설치할 수 있습니다.
composer require aws/aws-sdk-php
다음으로, 다음 코드를 사용하여 S3에 파일을 업로드할 수 있습니다.
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = 'your-bucket-name';
$keyName = 'file-to-upload.txt';
$pathToFile = '/path/to/local/file.txt';
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-1',
]);
try {
$result = $s3->putObject([
'Bucket' => $bucket,
'Key' => $keyName,
'SourceFile' => $pathToFile,
]);
echo "파일이 성공적으로 업로드되었습니다.\n";
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
다운로드 링크 생성 및 보안 설정
파일이 S3에 업로드되었으므로, 해당 파일을 안전하게 다운로드할 수 있는 링크를 생성해야 합니다. 이를 위해 사전 서명된 URL(pre-signed URL)을 생성하여 파일에 대한 임시 액세스 권한을 부여할 수 있습니다.
$cmd = $s3->getCommand('GetObject', [
'Bucket' => $bucket,
'Key' => $keyName
]);
$request = $s3->createPresignedRequest($cmd, '+20 minutes');
$presignedUrl = (string)$request->getUri();
echo "다운로드 링크: $presignedUrl\n";
위의 코드에서 createPresignedRequest
메서드를 사용하여 파일에 대한 pre-signed URL을 생성할 수 있습니다. 또한, +20 minutes
와 같이 유효 기간을 설정하여 보안을 강화할 수 있습니다.
이제 클라이언트에게 생성된 pre-signed URL을 제공하면, 클라이언트는 해당 URL을 사용하여 제한된 시간 동안 파일을 안전하게 다운로드할 수 있습니다.
마치며
이렇게 PHP 라이브러리를 사용하여 Amazon S3에 파일을 다운로드할 때의 보안 설정을 살펴보았습니다. 파일 다운로드에 대한 보안 요구사항에 따라 pre-signed URL의 유효 기간 및 다른 설정을 조정하여 안전한 파일 공유 시스템을 구축할 수 있습니다.