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

0

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

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

2 Antworten
0

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

profile picture
EXPERTE
beantwortet vor einem Jahr
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
beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen