我需要移動重命名AWS S3存儲中的對象。Amazon Web Services S3中的線程安全文件重命名
我發現的所有解決方案都需要複製後再刪除。然而,這兩個文件都存在很短的時間,我不認爲這是線程安全的。
有沒有辦法以線程安全的方式做到這一點?
代碼使用Java AWS SDK在Scala中。
編輯: 羅布,感謝您的答覆,我相信我明白,代碼正在做,但讓我覺得我問了錯誤的問題。
而不是特定的AWS功能,讓我用我正在嘗試完成的內容來描述它。
我有一個定期從外部接收文件的S3目錄。我有多個進程需要「處理」這些文件,並且每個文件只能處理一次。
在過去,作爲一種便宜的處理方式,我使用重命名來移動文件或將其標記爲處理。如果重命名成功,則該進程知道它擁有該文件並將繼續處理。如果因爲源文件不存在而失敗,那麼它會嘗試目錄中的下一個文件。
我所需要的是一種方式,最好是僅限於S3,這將允許多個進程在文件上工作,同時確保每個文件只處理一次。
在下面您的解決方案,因爲「發現」和「刪除」是分開的方法,並且刪除該文件不存在,並沒有失敗,我不知道我怎麼看這兩個過程不能簡單地(以最壞的情況)都與另一個完全一致。
文件移動可能是錯誤的解決方案,而我對AWS的經驗不足使我無法看到完成此任務的更好方法。
謝謝,我可能會問錯了問題。請參閱我上面的編輯。 –
再次感謝。我會研究事件。我們有一個監視工作目錄中的文件的過程,所以如果它們太老了(一個線程死亡沒有完成或清理),我們會收到這個問題的通知。由於這應該是非常罕見的,手動將文件移回到目錄對我們來說是一個好的解決方案。 –