【问题标题】:Using Lambda inside VPC with SNS+RDS在 VPC 中使用 Lambda 和 SNS+RDS
【发布时间】:2020-03-22 06:19:49
【问题描述】:

我想要一个 lambda 表达式,它每小时对 RDS 数据库进行一次查询,提取一些 ARN(设备令牌),然后通过 SNS 向这些设备发送通知。我的愿望是留在 VPC 内,并且由于成本原因,我想避免使用 NAT。我是否应该创建一个可以访问 SNS+RDS 的 VPC 端点(这是否称为 AWS PrivateLink?)? NAT 和 Endpoint 在计费上是否相似?在全球范围内,这是在 AWS 上实现“cron 发送通知”的正确方法吗?

没有端点,在 VPC 内部也可以访问 RDS 不是吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-rds amazon-sns amazon-vpc


    【解决方案1】:

    这完全有可能

    您的 lambda 可以在 VPC 的私有子网中运行,该子网通过网络的 3306 端口与您的 RDS 数据库通信。确保您的安全组和 NACL 规则允许这样做。

    然后,您需要为您的 SNS 服务创建一个 VPC 终端节点。确保您的路由表包含此路由。

    VPC 端点和 AWS Privatelink 的主要区别如下:

    VPC 终端节点使您能够将您的 VPC 私下连接到受支持的 AWS 服务。 SNS、Kinesis、SQS、S3、....

    而 AWS Privatelink 更多的是关于在您的 VPC 中创建您自己的应用程序并将其配置为 AWS PrivateLink 支持的服务(称为终端节点服务)。其他 AWS 委托人可以使用接口 VPC 终端节点创建从他们的 VPC 到您的终端节点服务的连接。

    VPC 端点是免费的。 Nat 网关每小时每 GB 的费用。

    【讨论】:

    • 我设法使用来自 Lambda 的 SNS 为来自 Lambda 所属的同一安全组的所有流量添加入站规则。现在 RDS 不工作了......我无法从 Lambda 访问它,也许问题是我的数据库实例是公共的?有什么解决办法吗?
    • 您是否检查过您的安全组或 NACL 设置?公共子网不应该影响它。
    • Lambda 和 RDS 应该有不同的安全组?或者我可以为同一个 SG 重复使用相同的设置入站 3306?我应该使用NACL吗?或者我可以让它们保持默认?谢谢。
    • 网络可能很棘手,您应该将您的数据库移动到私有子网中。您需要在所有安全组和 NACL 中允许 3306 和临时端口范围 1024-65535
    • 我需要保持 RDS 公开可用,这与从 VPC 中的 Lambda 访问它不兼容吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2022-12-05
    • 2020-03-22
    • 2018-10-14
    • 2020-06-14
    • 2019-07-27
    相关资源
    最近更新 更多