2016-06-07 81 views
0

我有兩個服務,一個以異步方式上傳到S3,第二個服務是後處理器,它對上傳的文件執行一些額外的處理。亞馬遜S3檢查文件是否完全上傳

我遇到的問題是在第二個服務中請求文件太快時,S3客戶端認爲該文件存在,因爲該鍵存在,但整個文件尚未上傳,因此出現異常拋出。

它工作,如果我執行阻止上傳,但表現是非常糟糕的。

有沒有辦法檢查到S3的文件是否已完全上傳?

+2

*「S3 Client認爲文件存在是因爲密鑰存在」*您可能想要仔細檢查一下。在上傳完成之前,密鑰並不存在,除非你覆蓋現有的對象 - 上傳到S3是原子的,所以新對象的密鑰在上傳完成後才能存在。 –

+0

你能告訴我們你的代碼的一部分,也請告訴我們發生的異常。也許這是一個不同的問題。 – etalon11

回答

0

用temp前綴您的密鑰名稱,然後在上傳完成後將其重命名爲原始文件名,以便您的下一個服務將檢查原始文件名並在原始文件存在時執行操作。

0

如果您使用AWS S3控制檯在存儲桶上啓用S3事件,則會發送文件創建完成事件以告訴您何時上載完成。這些事件可能會發布到SNS,SQS或AWS Lamba。