메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

PHP용 AWS SDK를 사용한 여러 객체 삭제

이 주제에서는 PHP용 AWS SDK의 클래스를 사용하여 버전이 지정되거나 지정되지 않은 Amazon S3 버킷에서 여러 객체를 삭제하는 방법을 안내합니다. 버전 관리에 대한 자세한 내용은 버전 관리 사용 단원을 참조하십시오.

참고

이미 PHP용 AWS SDK 사용 및 PHP 예제 실행의 지침에 따라 PHP용 AWS SDK가 올바르게 설치되어 있다고 가정합니다.

다음 작업은 PHP SDK 클래스를 사용하여 버전 관리 미사용 버킷에서 여러 객체를 삭제하는 방법을 안내합니다.

여러 객체 삭제(버전 관리 미사용 버킷)

1

Aws\S3\S3Client 클래스의 factory() 메서드를 사용하여 Amazon S3 클라이언트의 인스턴스를 만듭니다.

2

Aws\S3\S3Client::deleteObjects() 메서드를 실행합니다. 버킷 이름과 객체 키 배열을 파라미터로 제공해야 합니다. 최대 1,000개의 키를 지정할 수 있습니다.

다음 PHP 코드 샘플은 Amazon S3 버전 관리 미사용 버킷에서 여러 객체를 삭제하는 방법을 보여 줍니다.

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname1 = '*** Your Object Key1 ***'; $keyname2 = '*** Your Object Key2 ***'; $keyname3 = '*** Your Object Key3 ***'; $s3 = S3Client::factory(); // Delete objects from a bucket $result = $s3->deleteObjects(array( 'Bucket' => $bucket, 'Objects' => array( array('Key' => $keyname1), array('Key' => $keyname2), array('Key' => $keyname3), ) ));

다음 작업은 Amazon S3 버전이 지정된 버킷에서 여러 객체를 삭제하는 방법을 안내합니다.

여러 객체 삭제(버전 관리 사용 버킷)

1

Aws\S3\S3Client 클래스의 factory() 메서드를 사용하여 Amazon S3 클라이언트의 인스턴스를 만듭니다.

2

Aws\S3\S3Client::deleteObjects() 메서드를 실행하고 삭제하려는 객체 키의 목록과 선택적으로 객체의 버전 ID를 제공합니다.

삭제하려는 객체의 버전 ID를 지정하는 경우, Amazon S3에서는 해당 특정 객체 버전을 삭제합니다. 삭제하려는 객체의 버전 ID를 지정하지 않는 경우, Amazon S3에서는 삭제 마커를 추가합니다. 자세한 내용은 요청당 단일 객체 삭제를 참조하십시오.

다음 PHP 코드 샘플은 Amazon S3 버전 관리 사용 버킷에서 여러 객체를 삭제하는 방법을 보여 줍니다.

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $versionId1 = '*** Your Object Key Version ID1 ***'; $versionId2 = '*** Your Object Key Version ID2 ***'; $versionId3 = '*** Your Object Key Version ID3 ***'; $s3 = S3Client::factory(); // Delete object versions from a versioning-enabled bucket. $result = $s3->deleteObjects(array( 'Bucket' => $bucket, 'Objects' => array( array('Key' => $keyname, 'VersionId' => $versionId1), array('Key' => $keyname, 'VersionId' => $versionId2), array('Key' => $keyname, 'VersionId' => $versionId3), ) ));

Amazon S3에서는 삭제된 객체와 오류(권한 오류 등)로 인해 삭제할 수 없는 객체를 나타내는 응답을 반환합니다.

다음은 삭제된 객체에 대한 객체 키를 인쇄하는 PHP 코드 예제입니다. 또한 삭제되지 않은 객체 키와 관련 오류 메시지도 인쇄합니다.

Copy
echo "The following objects were deleted successfully:\n"; foreach ($result['Deleted'] as $object) { echo "Key: {$object['Key']}, VersionId: {$object['VersionId']}\n"; } echo "\nThe following objects could not be deleted:\n"; foreach ($result['Errors'] as $object) { echo "Key: {$object['Key']}, VersionId: {$object['VersionId']}\n"; }

예 1: Multi-Object Delete(버전 관리 미사용 버킷)

다음 PHP 코드 예제는 deleteObjects() 메서드를 사용하여 버전 관리 미사용 버킷에서 여러 객체를 삭제합니다.

이 예제에서는 다음 작업을 수행합니다.

  1. Aws\S3\S3Client::putObject() 메서드를 사용하여 객체 몇 개를 생성합니다.

  2. Aws\S3\S3Client::listObjects() 메서드를 사용하여 객체 목록을 나열하고 생성한 객체의 키를 가져옵니다.

  3. Aws\S3\S3Client::deleteObjects() 메서드를 사용하여 버전이 지정되지 않은 삭제를 수행합니다.

이 가이드의 PHP 예제 실행에 대한 자세한 내용은 PHP 예제 실행 단원을 참조하십시오.

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // 1. Create a few objects. for ($i = 1; $i <= 3; $i++) { $s3->putObject(array( 'Bucket' => $bucket, 'Key' => "key{$i}", 'Body' => "content {$i}", )); } // 2. List the objects and get the keys. $keys = $s3->listObjects(array('Bucket' => $bucket)) ->getPath('Contents/*/Key'); // 3. Delete the objects. $result = $s3->deleteObjects(array( 'Bucket' => $bucket, 'Objects' => array_map(function ($key) { return array('Key' => $key); }, $keys), ));

예 2: Multi-Object Delete(버전 관리 사용 버킷)

다음 PHP 코드 예제는 deleteObjects() 메서드를 사용하여 버전이 지정된 버킷에서 여러 객체를 삭제합니다.

이 예제에서는 다음 작업을 수행합니다.

  1. Aws\S3\S3Client::putBucketVersioning() 메서드를 사용하여 버킷에 버전 관리를 활성화합니다.

  2. Aws\S3\S3Client::putObject() 메서드를 사용하여 몇 가지 버전의 객체를 생성합니다.

  3. Aws\S3\S3Client::listObjectVersions() 메서드를 사용하여 객체 버전의 목록을 나열하고 생성한 객체 버전의 키와 버전 ID를 가져옵니다.

  4. 가져온 키 및 버전 ID와 함께 Aws\S3\S3Client::deleteObjects() 메서드를 사용하여 버전이 지정된 삭제를 수행합니다.

  5. Aws\S3\S3Client::putBucketVersioning() 메서드를 사용하여 버킷에 버전 관리를 비활성화합니다.

이 가이드의 PHP 예제 실행에 대한 자세한 내용은 PHP 예제 실행 단원을 참조하십시오.

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // 1. Enable object versioning for the bucket. $s3->putBucketVersioning(array( 'Bucket' => $bucket, 'Status' => 'Enabled', )); // 2. Create a few versions of an object. for ($i = 1; $i <= 3; $i++) { $s3->putObject(array( 'Bucket' => $bucket, 'Key' => $keyname, 'Body' => "content {$i}", )); } // 3. List the objects versions and get the keys and version IDs. $versions = $s3->listObjectVersions(array('Bucket' => $bucket)) ->getPath('Versions'); // 4. Delete the object versions. $result = $s3->deleteObjects(array( 'Bucket' => $bucket, 'Objects' => array_map(function ($version) { return array( 'Key' => $version['Key'], 'VersionId' => $version['VersionId'] ); }, $versions), )); echo "The following objects were deleted successfully:\n"; foreach ($result['Deleted'] as $object) { echo "Key: {$object['Key']}, VersionId: {$object['VersionId']}\n"; } echo "\nThe following objects could not be deleted:\n"; foreach ($result['Errors'] as $object) { echo "Key: {$object['Key']}, VersionId: {$object['VersionId']}\n"; } // 5. Suspend object versioning for the bucket. $s3->putBucketVersioning(array( 'Bucket' => $bucket, 'Status' => 'Suspended', ));

관련 리소스

이 페이지에서: