连接一个Lambda函数到一个S3存储桶,同时连接到VPC,以便查询到私有的RDS数据库。

0

【以下的问题经过翻译处理】 我正在创建一个Lambda函数,通过POST请求接收参数,包括一个对象(CSV文件),我需要根据它的内容访问和执行一系列查询到私有RDS。

如果Lambda函数没有关联VPC,我可以访问S3存储桶,但在这种情况下,我无法访问私有RDS。此外,我已经检查了安全组、路由表,并且有互联网网关。我也已经检查了IAM策略,允许从任何存储桶中列出和读取数据。

2 回答
0

【以下的回答经过翻译处理】 这是非常常见的情况。作为最佳实践,您应该在VPC内创建Lambda,这样您可以访问RDS。要从VPC内的Lambda函数中访问S3,请使用VPC终端节点。

profile picture
专家
已回答 5 个月前
0

您好,

您可以将您的Lambda建立或是更改设定于RDS所在之VPC内,此时因为Lambda与RDS皆在同一虚拟网域即可进行资料库的连接。而您可同时设定至S3之端点(Endpoint),即VPC内一个虚拟的装置,可以允许 Amazon VPC 中的执行个体与服务之间进行通信,而不会对网路流量造成可用性风险或频宽限制。所以在此状况中,即可使Lambda连结S3储存桶的内容。详细的作法如下:

  1. 在创建Lambda时设定指定VPC参数
    您可至Lambda控制台中,在建立函数(create function)的时候请点击下方的进阶设定(advance settings),即可选择您RDS所在的VPC。

  2. 设定S3之Endpoint 在AWS中Endpoint有两种类型,分别为网关端点(Gateway endpoints)与接口端点(Interface endpoints)。两者作法上主要的差异是接口端点是透过AWS PrivateLink 连接到服务。而网关端点则是透过设定VPC之路由表将流量导到特定的服务。在这两种端点下,您的网络流量仍保留在 AWS 网络中。另目前网关端点无需另行收费,所以以下提供网关端点的设定步骤文档[1]

  3. 您可至步骤一设定之Lambda中进行S3读写资料的测试

[1] 创建网关端点

AWS
Ling_L
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则