从亚马逊 S3 存储桶中异步删除所有文件
Deleting all file asynchronsly from amazon S3 bucket
我想删除特定 S3 存储桶中的所有文件。这些文件存在于 S3 存储桶内名为“test”的文件夹中。我不知道如何循环删除 S3 存储桶中的所有文件。我不确定我可以将哪些参数传递给 DeleteObjectsAsync 以删除文件。这是我在阅读了一些在线 AWS 文档后得到的:
using (var client = new AmazonS3Client(_configuration["AwsAccesKey"].ToString(), _configuration["AwsSecretKey"].ToString()))
{
var request = new ListObjectsRequest
{
BucketName = _configuration["AwsBucketName"].ToString()
};
var response = await client.ListObjectsAsync(request);
foreach (var entry in response.S3Objects)
{
await client.DeleteObjectsAsync(request, entry.Key);
}
}
return View();
用户一直要求我在单击前面的按钮时删除所有文件end.This不依赖于持续时间。
如有任何帮助,我们将不胜感激。
DeleteObjectsAsync 方法除外 DeleteObjectsRequest,它应包含您要删除的对象的所有键。
你的代码应该是这样的:
var request = new ListObjectsRequest
{
BucketName = "bucketname"
};
var response = await client.ListObjectsAsync(request);
var keys = new List<KeyVersion>();
foreach (var item in response.S3Objects)
{
// Here you can provide VersionId as well.
keys.Add(new KeyVersion { Key = item.Key });
}
var multiObjectDeleteRequest = new DeleteObjectsRequest()
{
BucketName = "bucketname",
Objects = keys
};
var deleteObjectsResponse = await client.DeleteObjectsAsync(multiObjectDeleteRequest);
重要的是要注意 ListObjectsAsync returns 最多 1000 个对象。 DeleteObjectsRequest 最多删除 1000 个对象。
您可以在这里阅读更多内容:https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-multiple-objects.html
以下是递归删除特定 S3 存储桶中所有文件的完整代码:
public async Task<IActionResult> DeleteAll()
{
using (var client = new AmazonS3Client(_configuration["AwsAccesKey"].ToString(), _configuration["AwsSecretKey"].ToString()))
{
var request = new ListObjectsRequest
{
BucketName = _configuration["AwsBucketName"].ToString()
};
var response = await client.ListObjectsAsync(request);
foreach (var entry in response.S3Objects)
{
await client.DeleteObjectAsync(_configuration["AwsBucketName"].ToString(), entry.Key);
}
}
return View();
}
我想删除特定 S3 存储桶中的所有文件。这些文件存在于 S3 存储桶内名为“test”的文件夹中。我不知道如何循环删除 S3 存储桶中的所有文件。我不确定我可以将哪些参数传递给 DeleteObjectsAsync 以删除文件。这是我在阅读了一些在线 AWS 文档后得到的:
using (var client = new AmazonS3Client(_configuration["AwsAccesKey"].ToString(), _configuration["AwsSecretKey"].ToString()))
{
var request = new ListObjectsRequest
{
BucketName = _configuration["AwsBucketName"].ToString()
};
var response = await client.ListObjectsAsync(request);
foreach (var entry in response.S3Objects)
{
await client.DeleteObjectsAsync(request, entry.Key);
}
}
return View();
用户一直要求我在单击前面的按钮时删除所有文件end.This不依赖于持续时间。
如有任何帮助,我们将不胜感激。
DeleteObjectsAsync 方法除外 DeleteObjectsRequest,它应包含您要删除的对象的所有键。
你的代码应该是这样的:
var request = new ListObjectsRequest
{
BucketName = "bucketname"
};
var response = await client.ListObjectsAsync(request);
var keys = new List<KeyVersion>();
foreach (var item in response.S3Objects)
{
// Here you can provide VersionId as well.
keys.Add(new KeyVersion { Key = item.Key });
}
var multiObjectDeleteRequest = new DeleteObjectsRequest()
{
BucketName = "bucketname",
Objects = keys
};
var deleteObjectsResponse = await client.DeleteObjectsAsync(multiObjectDeleteRequest);
重要的是要注意 ListObjectsAsync returns 最多 1000 个对象。 DeleteObjectsRequest 最多删除 1000 个对象。
您可以在这里阅读更多内容:https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-multiple-objects.html
以下是递归删除特定 S3 存储桶中所有文件的完整代码:
public async Task<IActionResult> DeleteAll()
{
using (var client = new AmazonS3Client(_configuration["AwsAccesKey"].ToString(), _configuration["AwsSecretKey"].ToString()))
{
var request = new ListObjectsRequest
{
BucketName = _configuration["AwsBucketName"].ToString()
};
var response = await client.ListObjectsAsync(request);
foreach (var entry in response.S3Objects)
{
await client.DeleteObjectAsync(_configuration["AwsBucketName"].ToString(), entry.Key);
}
}
return View();
}