2017-01-25 75 views
7

我一直在尋找這個項目,因爲讓整個系統成爲Lambda函數集合的想法看起來非常有吸引力。事實上,幾年前我寫了一些與MoonMail幾乎完全相同的軟件,而且隨着一些規格的變化,這些軟件也會有所更新。我正在評估將我的軟件移植到Lambda,或者只是調整使用MoonMail。帶無服務器的MoonMail Lambda架構

我有以下問題:

在我的測試中使用無服務器,我注意到,當我換了一個資源名稱(如DynamoDb表的名稱),並重新部署,沒有警告,舊錶和其內容被破壞。我認爲像配置文件中的額外字符這樣的簡單錯誤導致刪除數據庫上的所有數據是非常危險的。你如何處理這類問題?

關於通過SES發送電子郵件。當您達到特定帳戶的發送限制時,您如何處理限制?你做指數回退?我似乎無法在代碼庫中找到它。如果您能指出我在回購的一般區域發生這種情況,我將非常感激。

回答

5
  1. MoonMail的表名存儲在s-templates.json中。這個文件很少被觸及,因此團隊還沒有遇到這個問題,但確實危險仍然存在,我會向AWS團隊提問,如何避免通過在CF中重命名來刪除表。
  2. 它發送極限情況下的重試次數爲Cloud Watch invocation(如果我錯了,MM團隊糾正我,但99%確定我不是)。
+1

@ julian在節流問題的問候,當它超過了發送速度,我們只是保持在隊列中的電子郵件,它會自動重試直到隊列爲空(參見更多[這裏](https://github.com/microapps/MoonMail/blob/master/events/lib/send_email_service.js#L134))。如果我們達到每日限額,我們只是停止發送過程,因爲配額在第二天才恢復,但我們會在發送活動前進行一些檢查以避免發送。 – davids

5

創建DynamoDB表時,您可以設置DeletionPolicy: Retain以防止它們被Cloud Formation意外刪除。

如果您的Lambda是由SNS調用的,那麼您可能會在超過SES限制時失敗。然後,SNS將使用補償重新嘗試傳送。

3

我現在的做法是在單獨的過程中創建dynamodb。所以我的無服務器設置是隻讀的,沒有創建數據庫。因爲我不認爲我會重新創建我的分貝,往往:)