lambda如何连接到vpc内的s3

问题描述 投票:0回答:1

我无法区分私有子网和公共子网。

我创建了一个vpc并连接了子网,并且igw也连接到了路由表。那么,该网络不是公共子网吗?

正如我预期的那样,公共网络似乎必须与外部进行通信,但是根本没有通信。

可以从aws lambda连接到RDS(vpc),但是将文件上传到s3和将消息发送到slack都发生超时。

我看过很多关于使用vpc端点的文章,但是当我尝试设置它时

Warning
When you use an endpoint, the source IP addresses from your instances in your affected subnets for accessing the AWS service in the same region will be private IP addresses, not public IP addresses. Existing connections from your affected subnets to the AWS service that use public IP addresses may be dropped. Ensure that you do n’t have critical tasks running when you create or modify an endpoint.

所以ec2当前是否与s3断开连接?然后,服务出现问题,无法设置。

在lambda vpc配置中,即使打开了安全组的所有入站,也不会建立连接。

只有一种设置NAT的方法吗?

NAT由于其成本而希望避免使用它。

我的目标是与vpc上的lambda中的rds,s3和松弛进行通信。

amazon-web-services amazon-s3 aws-lambda amazon-rds amazon-vpc
1个回答
0
投票
IGW不会执行NAT,因此如果您的计算(EC2实例或Lambda函数或其他)将流量路由到IGW,则如果发送该流量的计算实例具有公共IP,则该流量将到达Internet,并且如果发送此计算实例具有公共IP,则该流量将被丢弃。发送它的计算实例没有公共IP。

您部署到VPC中的Lambda功能如何通过互联网(例如,与Slack或S3对话)?他们必须通过NAT进行路由。通常,您将它们部署到专用子网中,并且该子网的路由表具有到公用子网中NAT设备或NAT网关的默认路由。

Lambda函数如何在不允许其访问互联网的情况下到达S3?您将Lambda函数部署到VPC专用子网中,没有提供从该子网到NAT的默认路由,而是在VPC中配置了S3 VPC端点。现在,Lambda可以私下到达S3。

Lambda函数如何到达本身在专用子网中的RDS数据库?您将Lambda功能部署到专用子网中,为Lambda配置一个安全组,然后配置RDS实例安全组以允许来自Lambda安全组的入站流量。

not部署到VPC的Lambda函数如何到达互联网? Lambda函数没有也没有公共IP,因此它们必须以某种方式路由通过NAT。但是您没有部署VPC,不要介意NAT,它如何工作? Lambda函数

is实际上已部署到VPC中,但不是您的 VPC。它是由AWS管理的VPC,并且具有NAT网关。

好,回到您的情况。您希望Lambda函数到达Slack(通过Internet),S3(通过任何可能的方式)和RDS(位于VPC的专用子网中)。这是一个具有挑战性的组合,因为尽管我们可以私下访问RDS和S3(通过内部VPC路由到RDS以及通过VPC端点到S3),但我们无法以这种方式到达Slack。或者,如果我们在VPC外部部署(通过AWS管理的VPC中的NAT),那么我们可以同时达到S3和Slack,但随后我们将无法访问私有RDS。因此,我认为您需要将Lambda部署到专用子网中,该子网需要到公共子网中NAT网关的默认路由,需要IGW,并且需要在Lambda功能上正确配置安全组,并且RDS实例,以允许从Lambda到RDS的入站访问。

此处有更多有用的信息:

mixing VPC and non-VPC Lambda functions

© www.soinside.com 2019 - 2024. All rights reserved.