我可以在 VPC 中将 SNS 订阅与内部 ALB 端点一起使用吗?

Posted

技术标签:

【中文标题】我可以在 VPC 中将 SNS 订阅与内部 ALB 端点一起使用吗?【英文标题】:Can I use SNS subscription with internal ALB endpoint within the VPC? 【发布时间】:2019-10-14 17:36:47 【问题描述】:

我有一个使用 HTTP 订阅的 SNS,端点是一个应用程序负载均衡器,它被创建为 VPC 内的内部 ALB。

为了让 SNS 调用端点,我必须让端点公开可用,我不能只为 SNS 公开端点,因为我的其他用例正在 VPC 中得到解决。

有没有更好的方法来创建订阅而无需公开端点。

我现在已经公开了端点,但不能永远保持不变

有没有更好的方法来创建订阅而无需公开端点。

【问题讨论】:

【参考方案1】:

一种可能的解决方案是订阅 Lambda 函数(部署在您的 VPC 中)以将请求代理到您的内部 ALB。

请参阅Using AWS Lambda with Amazon SNS,了解您的函数将接收的事件示例。

请注意,无法像使用 HTTP/HTTPS 端点那样配置自定义 Delivery Retry Policies。相反,您将拥有基本的AWS Lambda Retry Behavior。

【讨论】:

AWS Lambda 如果部署在 VPC 中,如果需要额外的时间来分配 IP,即 ENI 连接时间在冷启动中可能需要几秒钟......这将进一步增加服务响应的延迟 您可以通过定期调用 Lambda 函数(CloudWatch 事件)来保持它的温暖。

以上是关于我可以在 VPC 中将 SNS 订阅与内部 ALB 端点一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何从私有 AWS ALB 公开 API 端点

允许从 API Gateway 到私有 ALB 的请求

在 CDK 中创建后如何获取 ALB 的 URL?

AWS SNS子脚本与lambda函数的触发器?

一个 VPC 终端节点用于 AWS 中的多项服务

从 SNS 触发 Step Function