2016-12-14 144 views
4

我正在使用AWS Lambda函數處理隊列中的消息,它工作正常。但是當消息可用或在SQS隊列中添加時,我需要執行此Lambda函數。在SQS隊列中存在消息時觸發AWS中的Lambda函數

是否可以基於SQS隊列觸發Lambda函數。請提出一種方法來實現此目標。

回答

13

不直接支持從SQS隊列中調用Lambda函數。你可以在這裏看到可用的觸發列表:http://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html

可能的解決方案:

  1. 更換SQS隊列室壁運動或DynamoDB。兩者都可以在更新時觸發Lambda函數。
  2. 在SQS之前注入SNS。 SNS可以添加項目到SQS 觸發Lambda函數。

如果你並不需要近實時處理,這兩個選項也有效:

  1. 創建CloudWatch的事件規則將觸發每N分鐘(如每分鐘)的lambda函數。
  2. 爲您的SQS隊列創建CloudWatch警報,查看ApproximateNumberOfMessagesVisible參數。此警報應該發佈到SNS主題,這反過來會觸發Lambda功能。
+0

請您詳細解釋一下這個方法:「在SQS之前注入SNS,SNS可以添加項目到SQS並觸發Lambda函數」 – Team

+1

您可以發佈到SNS主題思想SNS API。 SNS會將消息扇出到多個端點。 –

+0

我在這個AWS中做得不好,因爲我只是在這裏開始工作。你能幫我詳細解釋 – Team