我是亚马逊 AWS 和 Glacier 的新手。我正在尝试编写一个基于 WPF Windows 的 C# 客户端,它将我的存档备份数据上传到冰川云。但是,API 参考似乎没有提供取消命令。只能上传、下载、列出。
我想要做的是使用 TPL 异步运行每个上传操作(对于大文件可能需要 1 小时或更长时间)。但是我希望上传是可取消的,.NET 4.5 会很好地支持,但 Amazon API 不支持。
有没有办法做到这一点?
谢谢。
我是亚马逊 AWS 和 Glacier 的新手。我正在尝试编写一个基于 WPF Windows 的 C# 客户端,它将我的存档备份数据上传到冰川云。但是,API 参考似乎没有提供取消命令。只能上传、下载、列出。
我想要做的是使用 TPL 异步运行每个上传操作(对于大文件可能需要 1 小时或更长时间)。但是我希望上传是可取消的,.NET 4.5 会很好地支持,但 Amazon API 不支持。
有没有办法做到这一点?
谢谢。
在Amazon Glacier(以及Amazon S3以及顺便说一句)中处理您的场景的推荐方法是通过Multipart Upload 分段上传档案,请参阅在 Amazon Glacier 中上传档案:
根据您上传的数据大小,Amazon Glacier 提供以下选项:
分批上传大型档案(分段上传) — 在一次操作中,您可以上传 1 字节到最大 4 GB 大小的档案。但是,我们鼓励 Amazon Glacier 客户使用分段上传来上传大于 100 MB 的档案。[...] [强调我的]
分段上传档案— 使用分段上传 API,您可以上传大型档案,最大约为 40,000 GB (10,000 * 4 GB)。
分部分上传大型档案(分段上传)提供了后者的详细信息,特别是关于完整(或中止)分段上传:
上传所有存档部分后,您可以使用完整的操作。[...]
如果您中止分段上传,则无法使用该分段上传 ID 上传更多分段。与中止的分段上传相关的任何部分消耗的所有存储空间都将被释放。如果任何部分上传正在进行中,即使在您中止之后,它们仍然可以成功或失败。 [强调我的]
因此,您仍然无法中止正在进行的部分的上传,因此所需的用户体验和/或减少网络带宽的关键是选择足够小的部分大小。
根据您的用例,您可能还想查看List Multipart Uploads (GET multipart-uploads):
此分段上传操作列出指定保管库的正在进行的分段上传。正在进行的分段上传是由发起分段上传 (POST multipart-uploads)请求启动但尚未完成或中止的分段上传。[...]