有沒有其他人解決了以下問題?
我已經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. 速率限制RESTful消費者
- 2. Facebook的新費率限制
- 3. 費率限制Firebase託管
- 4. 費率限制預防[Twitter4J]
- 5. 利用RxJS限制費率
- 6. 跑道創建25個電話後的項目費率限制
- 7. Rails - 費率限制模型的創建
- 8. 如何限制spring-amqp ascyn消費者的消息訂閱?
- 9. 費率限制,錯誤:'已阻止'
- 10. 費率限制急劇下降
- 11. Tweepy Hipchat API - 除了費率限制?
- 12. 條件費率限制(Nginx還是Webapp)?
- 13. 如何處理API的不同費率限制?
- 14. 如何提高Instagram網站的費率限制?
- 15. 如何觀察PHP中的費率限制?
- 16. 如何提高Google翻譯API的費率限制?
- 17. 速率限制如何限制API
- 18. 如何在使用RateGate時更改費率限制?
- 19. 如何在費率限制超過後撤銷Twitter API請求?
- 20. Twitter速率限制問題
- 21. Instagrm速率限制問題
- 22. Apache Kafka:如何找出一個話題的消費羣?
- 23. 如何配置JBoss/JMS消息速率限制/流量控制
- 24. 如何限制幀率?
- 25. 如何限制ActiveMQ JMS隊列中消費者的數量
- 26. 消費kafka話題使用logstash elasticSearch
- 27. 如何限制.net Parallel.ForEach消耗輸入的速率?
- 28. 消費者如何使用服務巴士話題?
- 29. Google+ API是否有任何小時費率限制?
- 30. 在Android上抓取Twitter Feed - 設備上的費率限制超出限制?
感謝您快速回答。當我在S3觸發lambda時嘗試瞭解決方案,但同樣的問題已經發生,因此我決定嘗試組合S3-> sns-> lambda。我會嘗試你的第一個選擇,它可能適合我。 ** P.S **我想立即處理來自S3的事件,因爲在大多數情況下,負載不是很高,但如果我理解正確,lambda不能由SQS事件觸發。只有這樣才能計劃執行lambda函數以便從SQS消耗 – nikolayandr
這是正確的 - 對於SQS,您將基本上按計劃輪詢來自lambda的SQS RecieveMessage,而不是將其插入到特定的觸發器中。這聽起來像是從你的評論中看出,SNS最大接收率對你的用例來說非常合適。希望可以幫助你! –
不幸的是,這隻適用於HTTP(s)端點。 Lambda訂戶完全不受限制。 – knrdk