[php] PHP 라이브러리 S3 파일 업로드 시 자동 압축

웹 애플리케이션에서 파일을 Amazon S3에 업로드하고자 할 때, 파일을 자동으로 압축하여 저장하면 저장 공간을 절약하고 전송 시간을 단축할 수 있습니다. 이 글에서는 PHP 라이브러리를 사용하여 S3에 파일을 업로드할 때 파일을 자동으로 압축하는 방법에 대해 알아보겠습니다.

1. AWS SDK for PHP 설치

먼저, AWS SDK for PHP를 사용하여 S3에 파일을 업로드하기 위해 해당 SDK를 설치해야 합니다. Composer를 사용하여 다음 명령어로 AWS SDK를 설치합니다.

composer require aws/aws-sdk-php

2. 파일 업로드 및 압축

PHP에서는 ZipArchive 라이브러리를 사용하여 파일을 압축할 수 있습니다. 다음은 AWS SDK를 사용하여 S3에 파일을 업로드하고 파일을 자동으로 압축하여 저장하는 예제 코드입니다.

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

// AWS S3 연결 설정
$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1',
    'credentials' => [
        'key'    => 'YOUR_AWS_ACCESS_KEY_ID',
        'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
    ],
]);

// 파일 경로
$filePath = '/path/to/file.txt';

// 압축 파일명
$zipFileName = 'file.zip';

// ZipArchive 인스턴스 생성
$zip = new ZipArchive();
$zip->open($zipFileName, ZipArchive::CREATE);
$zip->addFile($filePath);

// 압축 파일 업로드
try {
    $result = $s3->putObject([
        'Bucket' => 'your-bucket',
        'Key'    => 'compressed/'.$zipFileName,
        'Body'   => fopen($zipFileName, 'r'),
    ]);
    echo "압축 파일이 성공적으로 업로드되었습니다.";
} catch (S3Exception $e) {
    echo "파일 업로드 중 오류가 발생했습니다: " . $e->getMessage();
}

// 압축 해제
$zip->close();
unlink($zipFileName); // 임시 파일 삭제

3. 결론

위의 예제 코드를 통해 PHP를 사용하여 S3에 파일을 업로드하고 압축하는 방법을 살펴보았습니다. 파일을 압축하여 업로드하면 전송 시간을 단축하고 저장 공간을 절약할 수 있으며, 이는 대량의 파일을 다루는 웹 애플리케이션에서 유용한 기능입니다.

참고 문헌: