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

0

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

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

2 Answers
0

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

profile picture
EXPERT
answered a year ago
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
answered a year ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions