簡體   English   中英

AWS CDK 將多個 Lambda 訂閱到同一個 SNS 隊列

[英]AWS CDK Subscribe Multiple Lambdas to Same SNS Queue

我想做這里列出的第一種方法,為了在單個 S3 存儲桶更新時觸發各種 lambda 函數運行,我會在兩者之間放置一個 SNS 隊列。

目前我將每個 Lambda 作為一個堆棧,我更願意保持這種狀態,特別是因為我有單獨的管道階段,無論如何我都需要分開。 但是,我希望能夠讓它們都共享同一個 SNS 隊列。 最好的方法是什么?

根據我的想法,最好的方法是創建一個創建主題的“sns隊列堆棧”,然后將該主題傳遞到每個 lambda 堆棧並以這種方式訂閱 lambda 函數,但我仍然不確定最好的方法部署此 sns 隊列堆棧。

關於在 CDK 中使用部署管道,這讓我最困惑。 我有多個管道階段,每個階段都有多個部署組和所述部署組中的多個 lambda 堆棧。 我應該如何添加這個堆棧以確保它被正確部署?

我的一個猜測是將它添加到所有其他堆棧之前的第一個部署組的第一個階段,然后它應該適用於所有其他階段,但我不確定這是否可行。

我們可以使用兩種方法。

單個 CDK 項目中的多個堆棧:

我們在同一個項目中有多個堆棧的單個 CDK 項目。 例如,我們有 1 個帶有 SNS 主題的堆棧,每個 lambda 及其 SNS 訂閱有 1 個堆棧。 我們可以在堆棧中使用 sns 主題名稱,如這里記錄的

const snsStack = new MySnsStack(app, 'my-sns-stack');

// each stack takes property topic as input, which behind the scenes perform cloudformation export and import.
 new MyLambdaOne(app, 'Stack2', {
  topic: snsStack.topic
});
 new MyLambdaTwo(app, 'Stack2', {
  topic: snsStack.topic
});

我們需要做的就是cdk deploy並按正確的順序安排和部署堆棧。 即 sns 堆棧首先和 lambda 堆棧的 rest 基於參考。

多個 CDK 項目:

我們每個 cdk 項目有 1 個堆棧。 所以,我們有多個 CDK 項目需要維護。 然后,我們必須使用第一個堆棧中的cfnOutput手動導出主題 Arn,並使用Fn.ImportValue在其他堆棧中導入主題 arn。 然后我們需要分別運行多個 deployes cdk deploy MySnsStackcdk deploy MyLambdaStack等。 首先是 sns 堆棧,它們的 rest 並行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM