2017-07-24 65 views
2

我寫了一個通過s3存儲桶的putObject事件觸發的lambda函數。我正在修改對象發佈上傳的標題,下載對象,並用適當的標題重新上傳。但是因爲函數本身使用putObject來重新加載對象,所以lambda觸發自己。如何避免lambda觸發器遞歸調用

回答

1

三個選項:

  • 使用不同的API來上傳你的變化比你有一個事件之一。也就是說,如果您的lambda是由PUT觸發的,那麼之後使用POST來修改內容(由於POST由於AFAIK不太受支持,所以這可能不是一個選項)。

  • 跟蹤使用情況並在處理程序開始時有一個小警戒線,如果對文件所做的唯一更改是短路。如果您無法以編程方式檢測您設置的標題,則可能需要一個小型發電機表或類似的工具來跟蹤您已觸摸的文件。這會讓你立即放棄,只收取最低100毫秒的費用。

  • 重組您的項目以擁有「攝取」存儲桶和輸出存儲桶。未經處理的是放入前者,進行修改,然後放入後者。這具有許多優點。首先,你不會因目前的情況而結束,所以這是一個加分。第二個是你沒有任何進程使用這些修改過的文件,可能會拖動一個未修改的版本。第三,您可以更好地瞭解流程 - 如果出現問題,很容易看出哪些批次的文件經歷了哪個流程。

總的來說,我建議選擇3,你,但我知道,在我的懶惰時刻,我可能會嘗試選擇1種或2

無論哪種方式,祝你好運。