问题描述:
在使用AWS .Net Core SDK中的AmazonS3.DeleteObjects方法时,如果其中某些要删除的对象不存在,则该方法将无任何提示地静默失败。这会导致开发者在不清楚删除操作的实际效果时,无法追踪和恢复该错误。
解决方案:
我们可以通过捕获AmazonS3ResponseException异常来解决这个问题,并使用此异常的错误信息来确定哪些对象未能删除。例如,我们可以通过以下代码示例来查找获得的异常中要删除的对象:
try
{
var deleteObjectsRequest = new DeleteObjectsRequest
{
BucketName = "example-bucket",
Objects = new List
var response = await s3Client.DeleteObjectsAsync(deleteObjectsRequest);
} catch (AmazonS3ResponseException ex) { var errorResponse = ex.Response; Console.WriteLine($"Response error code: {errorResponse.StatusCode}"); Console.WriteLine($"Response error message: {errorResponse.ErrorMessage}"); Console.WriteLine($"Failed object keys: {string.Join(',', ex.DeleteErrors.Select(e => e.Key))}"); }
通过此代码示例,我们可以获取AmazonS3ResponseException异常,并使用其中的错误信息来检测哪些对象无法被删除。此外,我们还可以使用DeleteErrors属性来确定哪些对象未能成功删除。这样,我们就可以更好地进行错误排除和恢复操作。