有沒有其他人解決了以下問題?
我已經SNS話題充滿事件從S3並有其訂閱關於這一主題,當事件的千都投入到這個話題,lambda函數,是因爲超過併發的限制節流lambda函數 。
我不希望爲併發執行請求增加限制,但我會減少主題中的併發消耗,但是我沒有找到如何執行此操作的信息。謝謝。如何限制話題的消費率?
5
A
回答
5
關於SNS幾個選項:
1)SNS最大接收速率
設置SNS Maximum Receive Rate。這將抑制發送給訂閱者的SNS消息,但如果您有太多消息以致它們在被處理之前將被丟棄,則這可能不是一個好選擇。從文檔:
您可以設置每秒,亞馬遜SNS 通過設置最大發送到訂閱端點的消息的最大數量的接收速率 設置。亞馬遜SNS將等待遞送的消息保存爲 達1小時。放置超過一小時的消息將被丟棄。
如果您一次只能獲得數千個事件,那麼將Lambda的default concurrent execution limit的最大接收率設置爲'100'可能值得一試。
正如@kndrk所指出的那樣,此限制目前僅適用於SNS主題的HTTP/HTTPS訂戶。要解決此問題,您可以expose your lambda function via AWS API Gateway並將該端點訂閱到SNS主題,而不是直接將lambda函數訂閱。從SQS
Subscribe an SQS queue to the SNS topic和處理消息從隊列中,而不是直接從SNS主題
2)過程。 SQS ReceiveMessage的一次調用一次只能處理10條消息,因此您可以更輕鬆地進行調節。
還值得一提的是,你可以發佈S3 Events directly to AWS Lambda。
相關問題
- 1. 費率限制預防[Twitter4J]
- 2. 費率限制Firebase託管
- 3. Rails - 費率限制模型的創建
- 4. 費率限制急劇下降
- 5. 條件費率限制(Nginx還是Webapp)?
- 6. 費率限制,錯誤:'已阻止'
- 7. 如何提高Instagram網站的費率限制?
- 8. 速率限制如何限制API
- 9. 如何限制ActiveMQ JMS隊列中消費者的數量
- 10. Apache Kafka:如何找出一個話題的消費羣?
- 11. 消費kafka話題使用logstash elasticSearch
- 12. 如何限制.net Parallel.ForEach消耗輸入的速率?
- 13. 在Android上抓取Twitter Feed - 設備上的費率限制超出限制?
- 14. 在Heroku上託管的網站的Twitter費率限制
- 15. Google Drive Rest APi - 如何提高每個用戶的費率限制?
- 16. Google API的用戶費率限制和服務帳戶
- 17. 如何獲得消費羣和主題
- 18. C++ - SDL:限制幀率問題
- 19. 卡夫卡中的同一主題的消費者數量是否有限制?
- 20. 如何限制KeyDown動作頻率
- 21. 如何限制記錄頻率?
- 22. 如何限制FFMpeg CPU使用率?
- 23. 如何重啓消費和消費被拒絕的消息
- 24. 如何獲取消費者組的最後消費抵消?
- 25. Logback SMTPAppender限制率
- 26. 命中率限制
- 27. 在WCF數據服務中,如何限制消費者可見的實體?
- 28. 速率限制算法限制請求
- 29. 多的消費者從同一主題的消費
- 30. Dailymotion API的速率限制
感謝您快速回答。當我在S3觸發lambda時嘗試瞭解決方案,但同樣的問題已經發生,因此我決定嘗試組合S3-> sns-> lambda。我會嘗試你的第一個選擇,它可能適合我。 ** P.S **我想立即處理來自S3的事件,因爲在大多數情況下,負載不是很高,但如果我理解正確,lambda不能由SQS事件觸發。只有這樣才能計劃執行lambda函數以便從SQS消耗 – nikolayandr
這是正確的 - 對於SQS,您將基本上按計劃輪詢來自lambda的SQS RecieveMessage,而不是將其插入到特定的觸發器中。這聽起來像是從你的評論中看出,SNS最大接收率對你的用例來說非常合適。希望可以幫助你! –
不幸的是,這隻適用於HTTP(s)端點。 Lambda訂戶完全不受限制。 – knrdk