PHP S3Client 연동 및 listObjectVersions 사용하기

보람·2022년 9월 1일
0

Laravel

목록 보기
4/4

AWS s3 파일을 들어가보면 버전이라는 탭이 있고 해당 파일의 변경 내역을 차례대로 확인 할 수 있다.

특정 기간 전에 업로드 된 버전 중에 가장 최근 버전을 얻어야할 일이 생겨서 찾아보니

AWS에서 S3Client->listObjectVersions 라는 함수를 제공하고 있었다!

해당 함수는 지정한 파일이 존재한다면 버전별로 모든 목록을 획득할 수 있는 함수였다.

비슷한 함수로는

  • ListObjectsV2 : 요청 조건에 따른 파일 목록 획득

순서는!!

  • S3Client 연결
  • listObjectVersions() 함수 호출
  • 원하는 데이터 획득하도록 로직 작성

각 순서별로 함수를 작성하였다.

S3Client 연결

  • 관련 composer : aws/aws-sdk-php
$client = new S3Client([
            'version' => 'latest',
            'region' => '입력하기',
            'credentials' => [
                'key' => '입력하기',
                'secret' => '입력하기',
            ],
        ]);

listObjectVersions() 함수 호출

$versions = $client->listObjectVersions([
            'Bucket' => '입력하기',
            'Prefix' => '파일경로 or 경로',
        ]);

이렇게 하면 해당 파일 or 경로에 대한 모든 버전 목록이 획득된다!

원하는 데이터 획득하도록 로직 작성

LastModified 라는 값이 존재하는데
ListObjectsV2() 함수는 Query에 조건을 추가해서 함수 호출시 함께 보낼 수가 있는데
listObjectVersions() 함수는 나오지 않는다!(못 찾은 걸수도ㅜㅜ)

LastModified 이 값을 이용해서 비교를 통해 원하는 값을 얻어냈다!

$info = collect($versions['Versions'])->sortByDesc('LastModified')->where(
            'LastModified',
            '<=',
            Carbon::parse($timestamp)
        )->first();

내가 원하는 값은 특정 시간 전에 생성된 버전 중에 가장 최근 버전이었기에 위 코드를 이용하여 획득하였다.

profile
백엔드 개발자

0개의 댓글