[php] PHP 라이브러리 S3 파일 이동 시 충돌 처리

목차


문제점

AWS S3에 PHP 라이브러리를 사용하여 파일을 이동하려는데, 이미 동일한 이름의 파일이 존재하는 경우 충돌이 발생하는 문제가 발생했습니다.

예를 들어, file.jpgfolder1에서 folder2로 이동하려 할 때, folder2에 이미 동일한 이름의 파일이 있는 경우, 파일 이동이 실패하는 문제가 발생합니다.


해결책

이러한 충돌을 해결하기 위해 아래와 같은 방법을 사용하여 파일 이름에 유니크한 접미사를 추가할 수 있습니다.

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

$client = S3Client::factory(/*설정*/);

$sourceBucket = 'source-bucket';
$sourceKeyname = 'file.jpg';
$destinationBucket = 'destination-bucket';
$destinationKeyname = 'folder2/file.jpg';

try {
    $client->copyObject(array(
        'Bucket'     => $destinationBucket,
        'Key'        => $destinationKeyname,
        'CopySource' => urlencode($sourceBucket . '/' . $sourceKeyname)
    ));
} catch (S3Exception $e) {
    $client->copyObject(array(
        'Bucket'     => $destinationBucket,
        'Key'        => $destinationKeyname . '_' . time(),
        'CopySource' => urlencode($sourceBucket . '/' . $sourceKeyname)
    ));
}

이 코드는 copyObject로 파일을 복사할 때 충돌이 발생하면 파일 이름에 유니크한 접미사를 추가하여 복사하는 방식으로 문제를 해결합니다.


결론

PHP 라이브러리를 사용하여 AWS S3에서 파일을 이동하는 경우, 파일 이름 충돌 문제를 해결하기 위해 유니크한 이름을 가지도록 코드를 작성하여 안정적으로 파일을 이동할 수 있습니다.