每當新消息添加到SQS時,我都希望觸發Lambda函數。 請注意,我不想將新消息(事件)添加到SQS。如何在AWS CloudWatch中爲AWS SQS添加均勻模式
我想要做的事:
- 我的應用程序將發送消息給SQS
- 如果添加新的消息隊列獲取生成CloudWatch的事件
- CloudWatch的事件觸發拉姆達
問題:
在配置CloudWatch事件時在AWS控制檯中我沒有找到任何添加事件源的選項,即URL或我的SQS隊列的名稱。
我不確定這個用例是否有效,但請幫助我。
每當新消息添加到SQS時,我都希望觸發Lambda函數。 請注意,我不想將新消息(事件)添加到SQS。如何在AWS CloudWatch中爲AWS SQS添加均勻模式
我想要做的事:
問題:
在配置CloudWatch事件時在AWS控制檯中我沒有找到任何添加事件源的選項,即URL或我的SQS隊列的名稱。
我不確定這個用例是否有效,但請幫助我。
我會建議改變你的方法。
您的應用程序應該向publish
發送一條消息給現有的SNS主題。您的SQS和Lambda應該比subscribe
更適合此SNS主題。
Application -> publish -> SNS_TOPIC
-> SQS is notified
-> Lambda is notified
SQS不支持作爲AWS Lambda函數的直接事件源。如果您的用例需要排隊系統的屬性,則可以使用「cron-job」類型的Lambda函數runs on a schedule從隊列中接收消息,並調用您的worker Lambda函數以響應收到的每條消息。這種方法的問題在於,即使在您不期望消息的期間,您也必須不斷地進行SQS調查,這會導致不必要的成本。
最簡單的方法是使用SNS代替。創建主題,向該主題發佈事件,而不是將消息添加到SQS隊列,並讓您的Lambda函數訂閱該SNS主題。每次將消息發佈到該SNS主題時,它都會被調用。有這種方法在這裏的教程:
http://docs.aws.amazon.com/lambda/latest/dg/with-sns-example.html
貌似也沒辦法,我可以直接觸發拉姆達爲每SQS消息。正如你所建議的,如果我創建SQS偵聽器來輪詢隊列,並且每當新消息觸發lambda時。它是否可行,因爲即使SQS中沒有消息,它也需要在EC2實例上增加24X7。我在迴避SNS,因爲它不適合我們的整體架構。 –
'我在避免SNS,因爲它不適合我們的整體架構。「 - 也許你應該重新考慮你的架構。 – MaiKaY