AWS Lambda接收AmazonMQ RabbitMQ消息[AWS Lambda教程-AWS SAM系列]

AWS Lambda可以和多种数据源做集成,几乎全部的AWS托管服务都可以方便的触发Lambda的运行,详情请看Using AWS Lambda with other services。一般就海外用户而言在AWS上用MQ触发Lambda运行的场景以AWS SQS占绝大多数,但是在中国国内我们喜欢使用Kafka、RabbitMQ、ActiveMQ等开源MQ,这时我们也可以方便的让AWS Lambda和上述的3种开源的MQ集成。其中Amazon MQ是AWS托管的MQ产品,能支持RabbitMQ和ActiveMQ。本文以Amazon MQ中的RabbitMQ为例,介绍Amazon MQ和AWS Lambda的集成。

AmazonMQ和AWS Lambda的集成,我们需要仔细的了解网络配置,在本文中我的Lamdba和RabbiMQ都放在私有子网里面,并为私有子网设置了NAT网关,允许它们通过NAT访问互联网

创建AmazonMQ RabbitMQ

提前在AWS Secrets Manager中保存RabbitMQ访问密码

这里我们直接设置username和password的值,方便后续lambda和RabbitMQ的集成有权限。

创建AmazonMQ RabbitMQ

在AmazonMQ控制台选择RabbitMQ。 只是测试使用,我们可以选择单节点即可,生产环境建议选择集群模式,提示MQ整体的性能和可用性。 我们可以自由选择RabbitMQ的实例的规格和账户密码,账户密码需要和前面保存在AWS Secrets Manager中的一致。 这里我们设置RabbitMQ的可访问性,对AWS Lambda而言RabbitMQ的private和public模式都可以正常的触发Lambda的运行。这里为了方便我们可以选择public,这样我们可以直接访问RabbitMQ的控制台。 创建后我们需要等一段时间直到RabbitMQ就绪 ... RabbitMQ就绪后我们就可以继续和AWS Lambda集成了 我们登陆RabbitMQ的控制台,并创建一个queue来接收消息并触发Lambda运行,名称我自己设置为lambda-poc-queue

集成AWS Lambda和RabbitMQ

我们需要提前找到RabbitMQ的ARN 我们需要提前找到AWS Secrets Manager的ARN

然后我们在AWS SAM中设置好事件触发源,这里我们可以填入前面知道的RabbitMQ ARN、AWS Secrets Manager ARN和Queue名称 最后我们直接发布即可,发布成功后会看到Lambda的触发源中,RabbitMQ的state: EnabledActivate trigger: Yes,这时说明RabbitMQ和lambda的集成已经成功了。

测试

我们可以直接在RabbitMQ中发送文字消息 等待片刻会发现这个消息触发了Lambda执行,Lamdba接收到了消息内容并运行了。其中data内容看起来是乱码了,实际上没问题,MQ传过来的内容是Base64编码后的 ,使用的时候Base64解码即可。

到这里全部的开发就完成了,详细的代码请看amazon-mq-rabbitmq-demo

参考

相关推荐
派星26 分钟前
Jetson Orin Nano连接CSI摄像头并实现Gstreamer推流
人工智能·后端
欧雷殿1 小时前
跨设备自动化:家庭 AI 工作台的首个小目标
后端·agent·aiops
SsunmdayKT2 小时前
前后端项目部署与运行机制全流程详解
前端·后端
Reart2 小时前
从0解构tinyWeb项目--(Day:10)
前端·后端·架构
SamDeepThinking2 小时前
程序员如何接受工作内容毫无意义?
java·后端·程序员
_Evan_Yao2 小时前
一文搞懂:AI编程辅助工具——从GitHub Copilot到通义灵码,不同人群如何驾驭AI编程助手?
人工智能·后端·copilot·ai编程
木雷坞2 小时前
边缘视频分析节点断网恢复排查记录
后端
2301_771717213 小时前
最近在刷牛客:使用Spring AOP实现性能监控时
java·后端·spring
Java水解3 小时前
深入浅出多包架构(Monorepo)
后端
手握风云-3 小时前
Spring AI:让大模型住进 Spring 生态(四)
java·后端·spring