gpt4 book ai didi

amazon-web-services - 如何正确连接 AWS Lambda 到 VPC 中的 RDS?

转载 作者:行者123 更新时间:2023-12-04 08:02:10 25 4
gpt4 key购买 nike

我正在尝试使用 Serverless Framework 构建一个 graphQL API在 AWS-Lambda使用 Apollo-Server-Lambda等我需要使用一个不公开的 PostgreSQL RDS 实例。

当不在 VPC 中时,我可以启动并运行 lambdas 并发送回请求。我可以启动并运行 Postgres RDS 数据库并连接到 PgAdmin(在公开可用模式下)。

问题是,一旦我将 RDS Postgres 设为“非公开”并尝试让所有这些部分一起讨论,我就会失败。

我尝试了多种不同的方法。

这经常被描绘成魔术。写得很精彩https://gist.github.com/reggi/dc5f2620b7b4f515e68e46255ac042a7

我无法使用我的 lambdas 访问 Postgres。所以我的第一个问题。

我是否需要 NAT 网关来对 VPC 中的 lambdas 进行传入(入口)api 调用?
我目前的理解是,也许我的 lambda 只需要一个 NAT 网关,就可以通过 aws 或 S3 之类的东西向外调用其他 api。它是否正确?

接下来。我为我的 lambdas 创建了一个安全组,并将这个安全组添加到为 RDS 创建的安全组的入站列表中。我的理解是这就是 lambda 应该如何访问 RDS。我没有这样的运气。也许这与公共(public)或非公共(public)子网有关?也许这与我对 NAT 必要性的理解有关?

基本上,我能够获得的唯一可见性是 Lambdas 在 20 或 30 秒后超时,具体取决于我在尝试私下连接到 postgres 时的限制。 Cloudwatch 日志没有显示任何其他信息。

最后,现在😂,一旦我的开发机器“不公开”,将它连接到 Postgres 的最佳方式是什么?我在 RDS 安全组中为入站 TCP/IP 到端口 5432 到 postgres 列出了我的机器 IP,但这似乎并没有给我我希望的访问权限。我真的需要连接到 VPC 的 VPN 吗?最简单的方法是什么?

我已经完成了本教程,对 Postgres https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html 进行了基本更改

我已经阅读并考虑了这个问题的答案及更多
Allow AWS Lambda to access RDS Database

我已经使用无服务器框架进行了许多成功的完整部署,在 serverless.yml 配置上有许多变体来尝试这些选项,否则我会展示一个我认为失败的特定选项,但更广泛地说,我似乎无法准确掌握所有这些VPC、安全组、路由表等应该交互。

非常感谢任何帮助!

最佳答案

显然,Lambda 需要设置为在同一个 VPC 中运行,但我假设您已经掌握了。

你需要:

  • 创建一个安全组 (SG) 并将其与 Lambda 函数关联。
  • 现在,打开与 RDS 实例关联的 SG(不是您在上面创建的那个)。
  • 在 RDS SG 中,转到“入站”选项卡并单击“编辑”
  • 在类型列中选择“PostgreSQL”。在 Source 列中,在选择下拉列表中选择“Custom”,然后在输入文本中输入 Lambda SG ID(如果您开始输入“sg-”,它将显示您的所有 SG)。

  • 它有效吗?

    关于amazon-web-services - 如何正确连接 AWS Lambda 到 VPC 中的 RDS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48534740/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com