【问题标题】:Amazon S3 check if file is fully uploadedAmazon S3 检查文件是否已完全上传
【发布时间】:2016-06-08 03:55:21
【问题描述】:

我有两个服务,一个以异步方式上传到 S3,第二个服务是一个后处理器,它对上传的文件进行一些额外的处理。

我遇到的问题是第二个服务请求文件太快,然后S3客户端认为文件存在,因为密钥存在,但整个文件还没有上传,所以抛出异常.

如果我执行阻止上传,它会起作用,但性能很差。

有什么方法可以检查到 S3 的文件是否已完全上传?

【问题讨论】:

  • “S3 客户端认为文件存在是因为密钥存在” 您可能需要更仔细地检查这一点。在上传完成之前,密钥不存在,除非,如果您正在覆盖现有对象 - 上传到 S3 是原子的,因此在上传成功完成之前,新对象的密钥不存在。
  • 能否请您向我们展示您的部分代码,也请告诉我们正在发生的异常。也许这是一个不同的问题。

标签: .net amazon-web-services amazon-s3


【解决方案1】:

在你的key name前加上temp,上传完成后重命名为原始文件名,这样你的下一个服务会检查原始文件名,如果原始文件存在则执行操作。

【讨论】:

  • 值得注意:s3中的rename或mv其实是在执行copy+delete
【解决方案2】:

如果您使用 AWS S3 控制台在您的存储桶上启用 S3 事件,则会发送一个文件创建完成事件来告诉您上传何时完成。事件可能会发布到 SNS、SQS 或 AWS Lamba。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2018-08-01
    • 2021-08-14
    • 2013-09-09
    • 2013-05-18
    • 2012-06-29
    • 2020-06-14
    相关资源
    最近更新 更多