4

我正在开发一个针对亚马逊 S3 的系统。我正在使用 S3 的 .NET SDK 在 C# 中执行此操作。

我想一次将多个文件上传到 S3,但如果任何一个文件失败,我希望所有文件都失败。我可以这样做吗?如何?

SDK 的 TransferUtility.UploadDirectory 是否对目录进行原子上传,如果目录中的任何文件上传失败,那么它们都会失败?

如果它不进行原子上传,那么我需要有代码自己管理它;如何使用 TransferUtility.UploadDirectory 了解哪些文件成功以及哪些文件失败?

感谢您的任何帮助或指导。

4

2 回答 2

0

好吧,似乎 TransferUtility 方法是提供很少反馈的相当高级的辅助类型方法,并且 UploadDirectory 不包含任何原子性逻辑(对于多个文件,S3 也没有,这是真正需要发生的良好原子性)。

因此,需要某种类型的最终一致性队列来确保事情得以完成。S3 原子处理的多文件上传机制将非常方便,也许他们正在研究它,但他们目前似乎没有这个功能。

于 2011-05-04T22:25:22.393 回答
0

不,你不能这样做。S3 不提供任何用于多对象上传的 API。您可以做的最好的事情是在您的客户端中实现这一点(如果一次上传失败,请删除所有已上传的对象),但这当然不是原子的。

于 2011-09-10T23:01:43.063 回答