gpt4 book ai didi

amazon-web-services - 添加 VPC 配置后调用 lambda 超时

转载 作者:行者123 更新时间:2023-12-04 17:16:13 25 4
gpt4 key购买 nike

我正在使用无服务器框架来创建 lambda。我创建了一个简单的 Lambda 函数,它从 mongo 实例中查询并返回响应。最初,我使用 publicIp 创建了 mongo 实例,并让 Lambda 使用 publicIP 访问该实例。它运作良好。

现在,为了提高安全性,我在 Lambda 中添加了 VPC 配置。这是我的无服务器.yml:

functions:
graphql:
handler: handler.graphql
iamRoleStatements:
- Effect: Allow
Resource: "*"
Action:
- ec2:CreateNetworkInterface
- ec2:DescribeNetworkInterfaces
- ec2:DetachNetworkInterface
- ec2:DeleteNetworkInterface
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
vpc:
securityGroupIds:
- sg-16f9e371
subnetIds:
- subnet-883a12fe
- subnet-3f7b1067
events:
- http:
path: graphql
method: post
integration: lambda
memorySize: 256
timeout: 10
cors: true
response:
headers:
Access-Control-Allow-Origin: "'*'"

添加上述配置, serverless deployment那是成功的。现在,当我尝试通过在 postman 中调用 APIGateway URL 来访问该函数时,出现超时错误。这是 postman 的截图:
Timeout error

是否添加 VPC配置 Lambda 通过公开调用它使其无法访问?我很困惑。对此的任何想法都会很棒。

最佳答案

您可以通过将 Lambda 附加到 VPC 以通过私有(private)网络传输数据库流量来做到这一点。否则,这是不必要的安全妥协,并且在 Internet 上速度较慢。

前面的答案是正确的,您现在有一个 ENI 附加到您的 Lambda 函数,这意味着它在您的 VPC 子网上有一个私有(private) IP 连接。我猜您的 MongoDB 实例也在您的 VPC 中,如果它在 Internet 上的其他地方,您应该将其保持为公共(public)连接。

一些相关信息:

  • 要与 MongoDB 实例通信,您现在需要连接到 MongoDB EC2 的私有(private) IP 地址。
  • 确保将安全组配置为与 Lambda 对话并进入 EC2。
  • 如有必要,请确保网络是可路由的。
  • API Gateway 仍然可以调用 VPC 附加的 Lambda 函数并接收响应。

  • 设计考虑

    我用于类似场景的模式组合:
  • 当您使用 API Gateway 和 Lambda 设计无服务器解决方案时,您应该遵循 单一责任负责人 ,即每个函数都做一件事并且做得很好。
  • 因此,您有一个函数(“ Controller ”)接收来自消费者的请求并负责协调流程(您也可以为此使用 Step Functions)。 Controller 没有附加 VPC,它协调许多子功能。
  • 交叉模式 (我做了这个)要从 VPC 附加资源(或通过 DirectConnect)获取信息,您有一个与 VPC 连接的 Lambda 函数。该函数有一项工作,与 VCP 资源通信(读取、写入、api 调用等)。 Controller 使用针对 VPC 资源的请求详细信息调用此 Lambda 函数,并接收响应以进一步处理信息。通过这种方式,您可以将大部分无服务器应用程序保留在 Amazon 生态系统中,因此它可以与无服务器资源(S3、DynamoDB、Kinesis、SQS 等)进行 native 对话,同时能够向全服务器世界发送请求,有点像DMZ。

  • 希望这可以帮助。

    关于amazon-web-services - 添加 VPC 配置后调用 lambda 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43962148/

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