[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의 멀티파트 업로드를 수행해 보세요.