【问题标题】:AWS How add internet access to lambda after add default vpcAWS 如何在添加默认 vpc 后向 lambda 添加 Internet 访问
【发布时间】:2021-12-26 22:56:24
【问题描述】:

最初我有一个连接到 rds 中的数据库的 lambda 函数。现在我想改变我连接到数据库的方式,并通过 rds 代理来完成。

我已经创建了rds代理并分配了默认自带的vpc、子网和安全组。

最初我的 lambda 没有关联任何 vpc,但为了使用 rds 代理,我必须使用与 rds 代理相同的安全组。

现在,当将 lambda 关联到 rds 代理 vpc 时,lambda 失去了互联网访问权限。

我已尝试按照他们在此链接https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/ 中描述的步骤进行操作,但这是不可能的,我对网络了解不多:(

我目前的设置如下:

VPC:
  ID: vpc-123
  IPv4 CIDR: 172.31.0.0/16
  Main route table:
    ID: route-table-123
    Routes (Destination -> Target):
      172.31.0.0/16 -> local
      0.0.0.0/0 -> igw-123
  Main network ACL:
    ID: acl-123
    Inbound rules (Rule number,Type,Protocol,Port range,Source,Allow/Deny):
      100,All Trafic,All,All,0.0.0.0/0,Allow
      *,All Trafic,All,All,0.0.0.0/0,Deny
    Outbound rules (Rule number,Type,Protocol,Port range,Source,Allow/Deny):
      100,All Trafic,All,All,0.0.0.0/0,Allow
      *,All Trafic,All,All,0.0.0.0/0,Deny
Subnet1:
  IPv4 CIDR: 172.31.0.0/20
  Route table: route-table-123
  Network ACL: acl-123
  VPC: vpc-123
Subnet2:
  IPv4 CIDR: 172.31.16.0/20
  Route table: route-table-123
  Network ACL: acl-123
  VPC: vpc-123
Subnet3:
  IPv4 CIDR: 172.31.32.0/20
  Route table: route-table-123
  Network ACL: acl-123
  VPC: vpc-123

目前 lambda 已经关联了 vpc、subnet1、subnet2 和 subnet3。

按照此链接https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/ 中的步骤,我在每个步骤中都执行了以下操作:

  1. 我使用以下值创建了一个新子网:
VPC: vpc-123
Name: public-subnet
Availability Zone: No Preference
IPv4 CIDR block: 172.31.48.0/20
  1. 创建一个互联网网关并将其附加到您的 Amazon VPC: 在这一步中我什么也没做,因为 vpc 已经通过它的主路由表有一个与之关联的互联网网关

  2. 创建一个 NAT 网关:我创建了一个具有以下值的 NAT 网关:

Name: nat-gateway-public
Subnet: public-subnet
Connectivity type: Public
Elastic IP allocation ID: Click on button "Allocate Elastic IP"
  1. 创建两个自定义路由表 - 一个用于您的公共子网,一个用于您的私有子网:在这一步中,我为公共子网创建了一个路由表,因为现有子网有自己的路由表,新路由的值表格如下:
Name: route-table-public
VPC: vpc-123
Routes (Destination, Target)
  172.31.0.0/16, local
  0.0.0.0/0, nat-gateway-public

我还修改了公共子网 (public-subnet),将其与创建的新路由表 (route-table-public) 相关联。

  1. 验证您的网络 ACL 是否允许来自您的 Lambda 函数的出站请求,并根据需要允许入站流量:在这一步中我什么也没做,因为 ACL (acl-123) 允许所有入站和出站流量。

最后我编辑了我的 lambda 的网络配置并将新子网关联到它,但 lambda 仍然无法访问互联网。

知道我做错了什么吗?

【问题讨论】:

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


    【解决方案1】:

    我做错了两件事:

    第一:

    为公共子网创建路由表时,目标应该是 Internet 网关,而不是 NAT 网关。在我的配置中应该是这样的(第 4 步):

    Name: route-table-public
    VPC: vpc-123
    Routes (Destination, Target)
      172.31.0.0/16, local
      0.0.0.0/0, igw-123
    

    第二:

    需要编辑现有私有子网(route-table-123)的路由表,我更改了目的地为 0.0.0.0/0 的路由,我更改了 Target,从 igw-123 更改为 nat-gateway-public。

    Main route table:
    ID: route-table-123
    Routes (Destination -> Target):
      172.31.0.0/16 -> local
      0.0.0.0/0 -> nat-gateway-public
    

    有了这个我的 lambda 已经可以上网了 :)

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 2022-07-08
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 2018-12-25
      • 2023-01-24
      • 2016-05-27
      相关资源
      最近更新 更多