Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用适用于 PHP 的 AWS 开发工具包删除多个对象

本主题将指导您完成使用适用于 PHP 的 AWS 开发工具包中的类从受版本控制和不受版本控制的 Amazon S3 存储桶中删除多个对象的过程。有关版本控制的更多信息,请参阅使用版本控制

注意

本主题假定您已按照 使用适用于 PHP 的 AWS 开发工具包和运行 PHP 示例 的说明执行操作,并正确安装了 适用于 PHP 的 AWS 开发工具包。

以下任务将指导您完成使用 PHP 开发工具包类从不受版本控制的存储桶中删除多个对象的过程。

删除多个对象 (不受版本控制的存储桶)

1

使用 Aws\S3\S3Clientfactory() 方法创建 Amazon S3 客户端的实例。

2

执行 Aws\S3\S3Client::deleteObjects() 方法。您需要提供存储桶名称和对象键的数组以作为参数。您可以最多指定 1000 个键。

以下 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\S3Clientfactory() 方法创建 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:多对象删除 (不受版本控制的存储桶)

下面的 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:多对象删除 (启用了版本的存储桶)

下面的 PHP 代码示例使用 deleteObjects() 方法从受版本控制的存储桶中删除多个对象。

该示例将执行以下操作:

  1. 使用 Aws\S3\S3Client::putBucketVersioning() 方法对存储桶启用版本控制。

  2. 使用 Aws\S3\S3Client::putObject() 方法创建对象的几个版本。

  3. 使用 Aws\S3\S3Client::listObjectVersions() 方法列出对象版本并获取已创建对象版本的键和版本 ID。

  4. 通过将 Aws\S3\S3Client::deleteObjects() 方法与检索到的键和版本 ID 一起使用,执行受版本控制的删除。

  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', ));

相关资源

本页内容: