我正在使用无服务器框架来创建 lambda。我创建了一个简单的 Lambda 函数,它从 Mongo 实例进行查询并返回响应。最初,我使用 publicIp 创建了 Mongo 实例,并让 Lambda 使用 publicIP 访问该实例。效果很好。
现在,为了提高安全性,我将VPC配置添加到Lambda中。这是我的无服务器.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 来访问该函数时,出现超时错误。这是邮递员的屏幕截图:
是否添加专有网络配置Lambda 通过公开调用使其不可访问?
当您在 VPC 内创建 lambda 函数时,lambda 函数的弹性网络接口仅分配一个私有 IP 地址。但要连接到互联网上的资源,您需要一个公共 IP 地址。如果您的 mongo 实例是通过互联网访问的,您的 lambda 函数将无法连接到它。
您需要设置 NAT 网关才能访问 lambda 函数的互联网。转到以下链接并在“Lambda 函数的 Internet 访问”主题下查看以查看步骤。
http://docs.aws.amazon.com/lambda/latest/dg/vpc.html http://docs.aws.amazon.com/lambda/latest/dg/vpc.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)