程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AWS CDK 将多个 Lambda 订阅到同一个 SNS 队列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决AWS CDK 将多个 Lambda 订阅到同一个 SNS 队列?

开发过程中遇到AWS CDK 将多个 Lambda 订阅到同一个 SNS 队列的问题如何解决?下面主要结合日常开发的经验,给出你关于AWS CDK 将多个 Lambda 订阅到同一个 SNS 队列的解决方法建议,希望对你解决AWS CDK 将多个 Lambda 订阅到同一个 SNS 队列有所启发或帮助;

我想执行 here 中列出的第一种方法,为了在更新单个 S3 存储桶时触发各种 lambda 函数运行,我会在两者之间放置一个 SNS 队列。

目前我将每个 Lambda 作为一个堆栈,我更愿意保持这种方式,特别是因为我有单独的管道阶段,我无论如何都需要分开。但是,我希望能够让它们都共享相同的 SNS 队列。这样做的最佳方法是什么?

根据我的想法,最好的方法是创建一个“sns 队列堆栈”来创建主题,然后将该主题传递到每个 lambda 堆栈并以这种方式订阅 lambda 函数,但我仍然不确定部署此 sns 队列堆栈的最佳方式。

关于在 CDK 中使用部署管道,这对我来说是最令人困惑的。我有多个管道阶段,每个阶段都有多个部署组和所述部署组中的多个 lambda 堆栈。我应该如何添加这个堆栈以确保它被正确部署?

我猜测我会在所有其他堆栈之前将它添加到第一个部署组的第一个阶段,然后它应该适用于每个其他阶段,但我不确定这是否是一种方式工作。

解决方法

我们可以使用两种方法。

单个 CDK 项目中的多个堆栈:

我们在同一个项目中有多个堆栈的单个 CDK 项目。例如,我们有 1 个包含 SNS 主题的堆栈,每个 lambda 及其 SNS 订阅有 1 个堆栈。我们可以在堆栈中使用 sns 主题名称,例如记录的 here

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,{
  topic: snsStack.topic
});

我们需要做的就是 cdk deploy 并且堆栈按正确的顺序排列和部署。即首先是 sns 堆栈,然后是基于引用的其余 lambda 堆栈。

多个 CDK 项目:

我们每个 cdk 项目有 1 个堆栈。所以,我们有多个 CDK 项目需要维护。然后,我们必须使用 cfnOutput 从第一个堆栈手动导出主题 Arn,并使用 Fn.ImportValue 在其他堆栈中导入主题 arn。 然后我们需要分别运行多个部署 cdk deploy MySnsStackcdk deploy MyLambdaStack 等。首先是 sns 堆栈,其余的并行。

大佬总结

以上是大佬教程为你收集整理的AWS CDK 将多个 Lambda 订阅到同一个 SNS 队列全部内容,希望文章能够帮你解决AWS CDK 将多个 Lambda 订阅到同一个 SNS 队列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。