Я использую .Net Core вместе с Amazon .NET SDK для загрузки и извлечения вещей из S3. Я использую структуру папок в S3, которая включает в себя вставку пустого каталога с несколькими подкаталогами.
Позже я вставляю файлы в эти каталоги и перемещаю их. Теперь мне нужно полностью удалить каталог.
Я могу удалить все содержимое каталога с помощью
await client.DeleteObjectAsync(bucketName, keyName, null).ConfigureAwait(false);
где я перебираю все файлы, которые хочу удалить в данном сегменте. Тем не менее, это всегда оставляет меня с пустой структурой папок, в S3 я вижу, что он имеет содержимое 0 байт, но я не хочу разбирать тысячи пустых папок, чтобы найти те, которые действительно имеют данные.
Есть ли способ удалить пустую папку из S3 с помощью AWS .NET SDK?
Обновление:
Я могу удалить все, что хочу в папке, кроме самой папки.
using (IAmazonS3 client = new AmazonS3Client(awsCreds, Amazon.RegionEndpoint.USEast1))
{
try
{
DeleteObjectsRequest deleteRequest = new DeleteObjectsRequest();
ListObjectsRequest listRequest = new ListObjectsRequest
{
BucketName = bucketName,
Prefix = prefix,
//Marker = prefix,
};
ListObjectsResponse response = await client.ListObjectsAsync(listRequest).ConfigureAwait(false);
// Process response
foreach (S3Object entry in response.S3Objects)
{
deleteRequest.AddKey(entry.Key);
}
deleteRequest.BucketName = bucketName;
var response2 = await client.DeleteObjectsAsync(deleteRequest).ConfigureAwait(false);
return true;
}
catch (AmazonS3Exception amazonS3Exception)
{
if (amazonS3Exception.ErrorCode != null
&& (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId", StringComparison.Ordinal)
|| amazonS3Exception.ErrorCode.Equals("InvalidSecurity", StringComparison.Ordinal)))
{
logger.LogError("AwsS3Service.DeleteFileFromBucket Error - Check the provided AWS Credentials.");
}
else
{
logger.LogError($"AwsS3Service.DeleteFileFromBucket Error - Message: {amazonS3Exception.Message}");
}
}
}
При этом удаляется все содержимое выбранного мной каталога, а также все подкаталоги. Но основной каталог остается, есть ли способ удалить этот основной каталог.