[php] PHP 라이브러리 S3 파일 권한 별 접근 관리

Amazon S3는 안전하고 탄력적인 파일 스토리지를 제공하는 클라우드 서비스입니다. 파일을 업로드하고 다운로드하는 것은 중요한 일이지만, 파일에 대한 접근 제어도 매우 중요합니다.

이번에는 PHP용 AWS SDK를 사용하여 Amazon S3 파일의 권한을 다양하게 설정하고, 파일에 접근하는 방법을 알아보겠습니다.

1. AWS SDK for PHP 설치

먼저, AWS SDK for PHP를 설치해야 합니다. Composer를 사용하는 경우, 다음 명령어를 실행하여 쉽게 설치할 수 있습니다.

composer require aws/aws-sdk-php

2. S3 파일 업로드 및 권한 설정

S3에 파일을 업로드하고, 해당 파일에 대한 권한을 설정해보겠습니다.

require 'vendor/autoload.php';

use Aws\S3\S3Client;

// S3 client 생성
$s3 = new S3Client([
    'version' => 'latest',
    'region' => 'us-west-2'
]);

// 파일 업로드
$result = $s3->putObject([
    'Bucket' => 'my-bucket',
    'Key' => 'my-file.jpg',
    'SourceFile' => '/path/to/my-file.jpg',
    'ACL' => 'public-read'  // 파일에 대한 권한 설정
]);

echo "파일 업로드 성공!";

'ACL' => 'public-read' 부분에서 파일에 대한 권한을 설정할 수 있습니다. 위 예제는 해당 파일을 모든 사용자가 읽을 수 있도록(public-read) 설정한 것입니다.

3. 파일 다운로드 권한 제어

파일이 업로드되면, 해당 파일에 대한 접근을 제어할 수 있어야 합니다. 아래 예제는 특정 사용자만 파일을 다운로드할 수 있도록 권한을 설정하는 방법을 보여줍니다.

require 'vendor/autoload.php';

use Aws\S3\S3Client;

// S3 client 생성
$s3 = new S3Client([
    'version' => 'latest',
    'region' => 'us-west-2'
]);

// 사인된 URL 생성
$cmd = $s3->getCommand('GetObject', [
    'Bucket' => 'my-bucket',
    'Key' => 'my-file.jpg'
]);

$request = $s3->createPresignedRequest($cmd, '+20 minutes');

// 서명된 URL 출력
echo (string) $request->getUri();

위 예제에서 createPresignedRequest 메서드를 사용하여 사전에 서명된(pre-signed) URL을 생성합니다. 이 URL을 가진 사용자만이 파일을 다운로드할 수 있습니다.

결론

이제 PHP를 사용하여 Amazon S3에서 파일을 업로드하고 권한을 설정하여 파일에 대한 접근을 보다 안전하게 제어할 수 있게 되었습니다. 파일에 대한 접근 권한을 설정함으로써, 중요한 파일들이 누구나 접근할 수 없도록 보호할 수 있습니다.

참고 자료: AWS SDK for PHP 문서