[php] PHP 라이브러리 S3 멀티파트 업로드

아마존 S3에 큰 파일을 업로드할 때는 멀티파트 업로드 기능을 사용하는 것이 좋습니다. 멀티파트 업로드는 파일을 여러 조각으로 분할하여 병렬로 업로드하고, 큰 파일을 업로드할 때 안정성과 효율성을 높입니다.

이 글에서는 PHP 언어로 아마존 S3의 멀티파트 업로드를 수행하기 위한 라이브러리를 사용하는 방법에 대해 알아보겠습니다.

1. AWS SDK for PHP 설치

AWS의 PHP용 공식 SDK를 사용하여 S3 멀티파트 업로드를 수행할 수 있습니다. 먼저 Composer를 사용하여 SDK를 프로젝트에 설치해야 합니다. Composer가 설치되어 있지 않다면 Composer 공식 사이트에서 확인하고 설치하세요.

composer require aws/aws-sdk-php

위 명령을 실행하여 SDK를 설치합니다.

2. S3 멀티파트 업로드 라이브러리 활용

다음은 S3 멀티파트 업로드를 수행하는 예제 코드입니다.

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

// AWS 자격 증명 및 지역 설정
$sharedConfig = [
    'region' => 'us-east-1',
    'version' => 'latest',
];

// S3 클라이언트 생성
$s3Client = new S3Client($sharedConfig);

// 멀티파트 업로드 시작
try {
    $result = $s3Client->createMultipartUpload([
        'Bucket' => 'your-bucket-name',
        'Key'    => 'your-file-key'
    ]);
    $uploadId = $result['UploadId'];

    // 파일 조각 업로드
    $result = $s3Client->uploadPart([
        'Bucket'     => 'your-bucket-name',
        'Key'        => 'your-file-key',
        'UploadId'   => $uploadId,
        'PartNumber' => 1,
        'Body'       => fopen('your-local-file', 'r'),
    ]);
    $partETags[] = [
        'PartNumber' => 1,
        'ETag'       => $result['ETag'],
    ];

    // 나머지 파일 조각 업로드 및 완료
    // ...

    // 멀티파트 업로드 완료
    $s3Client->completeMultipartUpload([
        'Bucket'   => 'your-bucket-name',
        'Key'      => 'your-file-key',
        'UploadId' => $uploadId,
        'MultipartUpload' => [
            'Parts' => $partETags,
        ],
    ]);
} catch (AwsException $e) {
    // 에러 처리
    echo $e->getMessage();
}

위 코드에서 ‘your-bucket-name’, ‘your-file-key’, ‘your-local-file’에 각각 적절한 값을 넣어주시면 됩니다.

이제 위 예제 코드를 참고하여 PHP로 아마존 S3의 멀티파트 업로드를 수행해 보세요.