DeletingMultipleObjectsUsingPHPSDK

Deleting Multiple Objects Using the AWS SDK for PHP

This topic shows how to use classes from version 3 of the AWS SDK for PHP to delete multiple objects from versioned and non-versioned Amazon S3 buckets. For more information about versioning, see Using Versioning.

This topic assumes that you are already following the instructions for Using the AWS SDK for PHP and Running PHP Examples and have the AWS SDK for PHP properly installed.

Example Deleting Multiple Objects from a Non-Versioned Bucket
The following PHP example uses the deleteObjects() method to delete multiple objects from a bucket that is not version-enabled.
For information about running the PHP examples in this guide, see Running PHP Examples.

<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
$bucket = '*** Your Bucket Name ***';
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-1'
]);
// 1. Create a few objects.
for ($i = 1; $i <= 3; $i++) {
$s3->putObject([
'Bucket' => $bucket,
'Key' => "key{$i}",
'Body' => "content {$i}",
]);
}
// 2. List the objects and get the keys.
$keys = $s3->listObjects([
'Bucket' => $bucket
]) ->getPath('Contents/*/Key');
// 3. Delete the objects.
$s3->deleteObjects([
'Bucket' => $bucket,
'Delete' => [
'Objects' => array_map(function ($key) {
return ['Key' => $key];
}, $keys)
],
]);

Example Deleting Multiple Objects from a Version-enabled Bucket
The following PHP example uses the deleteObjects() method to delete multiple objects from a version-enabled bucket.
For information about running the PHP examples in this guide, see Running PHP Examples.

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

Related Resources