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.

使用适用于 .NET 的 AWS 开发工具包删除数据元

您可以从存储桶删除对象。如果您已对存储桶启用了版本控制,您也可以删除对象的特定版本。

以下任务将引导您使用 .NET 类来删除对象。

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

1

通过提供 AWS 凭证创建 AmazonS3Client 类的实例。

2

通过在 AmazonS3.DeleteObject 的实例中提供存储桶名称和对象键执行 DeleteObjectRequest 方法。

如果您没有对存储桶启用版本控制,该操作将删除对象。如果您已启用了版本控制,该操作将添加一个删除标记。有关更多信息,请参阅 每个请求删除一个对象。

下面的 C# 代码示例演示了上述步骤。

Copy
static IAmazonS3 client; client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1); DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest { BucketName = bucketName, Key = keyName }; using (client = Amazon.AWSClientFactory.CreateAmazonS3Client( accessKeyID, secretAccessKeyID)) { client.DeleteObject(deleteObjectRequest); }

删除对象的特定版本 (受版本控制的存储桶)

1

通过提供 AWS 凭证创建 AmazonS3Client 类的实例。

2

通过在 AmazonS3.DeleteObject 的实例中提供存储桶名称、对象键名称和对象版本 ID 执行 DeleteObjectRequest 方法。

DeleteObject 方法将删除对象的特定版本。

下面的 C# 代码示例演示了上述步骤。

Copy
IAmazonS3 client client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1) DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest { BucketName = bucketName, Key = keyName, VersionId = versionID }; using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1)) { client.DeleteObject(deleteObjectRequest); Console.WriteLine("Deleting an object"); }

例 1:删除对象 (不受版本控制的存储桶)

下面的 C# 代码示例将从存储桶删除对象。它不会在删除请求中提供版本 ID。如果您没有对存储桶启用版本控制,Amazon S3 将删除对象。如果您已启用了版本控制,Amazon S3 将添加一个删除标记并且不会删除对象。有关如何创建和测试有效示例的信息,请参阅 运行 Amazon S3 .NET 代码示例

Copy
using System; using Amazon.S3; using Amazon.S3.Model; namespace s3.amazon.com.docsamples { class DeleteObjectNonVersionedBucket { static string bucketName = "*** Provide a bucket name ***"; static string keyName = "*** Provide a key name ****"; static IAmazonS3 client; public static void Main(string[] args) { using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1)) { DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest { BucketName = bucketName, Key = keyName }; try { client.DeleteObject(deleteObjectRequest); Console.WriteLine("Deleting an object"); } catch (AmazonS3Exception s3Exception) { Console.WriteLine(s3Exception.Message, s3Exception.InnerException); } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } } }

例 2:删除对象 (受版本控制的存储桶)

下面的 C# 代码示例将从受版本控制的存储桶删除对象。DeleteObjectRequest 实例将指定对象键名称和版本 ID。DeleteObject 方法将从存储桶删除特定的对象版本。

要测试此示例,您必须提供存储桶名称。该代码示例将执行以下操作:

  1. 对存储桶启用版本控制功能。

  2. 向存储桶添加示例对象。作为响应,Amazon S3 将返回新添加的对象的版本 ID。您还可以通过发送 ListVersions 请求来获取对象的版本 ID。

    Copy
    var listResponse = client.ListVersions(new ListVersionsRequest { BucketName = bucketName, Prefix = keyName });
  3. 使用 DeleteObject 方法删除示例对象。DeleteObjectRequest 类将指定对象键名称和版本 ID。

有关如何创建和测试有效示例的信息,请参阅 运行 Amazon S3 .NET 代码示例

Copy
using System; using Amazon.S3; using Amazon.S3.Model; namespace s3.amazon.com.docsamples { class DeleteObjectVersion { static string bucketName = "*** Provide a Bucket Name ***"; static string keyName = "*** Provide a Key Name ***"; static IAmazonS3 client; public static void Main(string[] args) { using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1)) { try { // Make the bucket version-enabled. EnableVersioningOnBucket(bucketName); // Add a sample object. string versionID = PutAnObject(keyName); // Delete the object by specifying an object key and a version ID. DeleteObjectRequest request = new DeleteObjectRequest { BucketName = bucketName, Key = keyName, VersionId = versionID }; Console.WriteLine("Deleting an object"); client.DeleteObject(request); } catch (AmazonS3Exception s3Exception) { Console.WriteLine(s3Exception.Message, s3Exception.InnerException); } } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } static void EnableVersioningOnBucket(string bucketName) { PutBucketVersioningRequest setBucketVersioningRequest = new PutBucketVersioningRequest { BucketName = bucketName, VersioningConfig = new S3BucketVersioningConfig { Status = VersionStatus.Enabled } }; client.PutBucketVersioning(setBucketVersioningRequest); } static string PutAnObject(string objectKey) { PutObjectRequest request = new PutObjectRequest { BucketName = bucketName, Key = objectKey, ContentBody = "This is the content body!" }; PutObjectResponse response = client.PutObject(request); return response.VersionId; } } }