繁体   English   中英

Lambda in VPC访问RDS

[英]Lambda in VPC access RDS

我正在尝试制作一个 lambda,它将按计划关闭 RDS 实例。 我把我的 lambda 放在我的 VPC 中,因为我认为它不需要 Inte.net 访问。 但是,我正在尝试使用 boto3 访问实例,但出现错误。

rds = boto3.client('rds')
dbs = rds.describe_db_instances()

def lambda_handler(event, context):
    try:
        # get all of the db instances
        for db in dbs['DBInstances']:
            print ("%s@%s:%s %s") % (
            db['MasterUsername'],
            db['Endpoint']['Address'],
            db['Endpoint']['Port'],
            db['DBInstanceStatus'])

except Exception as e:
    print(e)

但是,当 boto3 尝试连接 RDS 时,出现此错误。

[ERROR] ConnectTimeoutError: Connect timeout on endpoint URL: "https://rds.us-east- 
2.amazonaws.com/"

在我看来,这就像 boto3 试图在 inte.net 上调用 URL。 分不清是lambda出不来VPC还是怎么的。 有没有办法只到达 AWS 内部并到达实例?

如果您出于额外的安全性(或其他原因)确实希望您的 Lambda 在 VPC 中,我可以想到两种连接到 RDS 的选项:1)使其能够访问公共 inte.net; 或 2) 使其在不离开 AWS 网络的情况下连接到 RDS。 您甚至可以根据您的用例使用两者(我将在稍后解释差异)。

对于这两种解决方案,首先您需要确定哪个su.net安全组链接到您的 lambda:

拉姆达屏幕

解决方案 1. 将弹性 IP 关联到 Lambda 的网络接口

接下来,go 到 EC2 服务,在Network & Security下找到Public IPs菜单。 为每个su.net分配一个IP(上例中有两个su.net)。

Go 到网络接口菜单,找到附加到您的 lambda 的.network 接口(相同的 su.net 和安全组)。

网络接口

在每个操作菜单中关联公共 IP:

操作菜单

关联知识产权

解决方案 2. 为 RDS 创建 VPC 端点

Go 到控制台中的 VPC Service,打开Virtual private cloud下的Endpoints菜单选项。 单击顶部的创建端点按钮。

VPC 端点

选择您要连接的 AWS 服务(例如 RDS、S3、Secrets Manager),select 您的 lambda 所在的 VPC:

创建端点 1

Select su.nets(基于 AZ)和安全组您的 lambda 链接到:

创建端点 2

为您的 Lambda 需要访问的每个 AWS 服务执行此操作(例如 RDS、S3 等)。

解释和如何选择一个

您的 Lambda 在 VPC 内时无法访问 public inte.net,因此您无法从外部服务/API 获取数据,其中包括大多数 AWS 服务,因为连接是通过 public inte.net 建立的。

解决方案 1 将使您的 Lambda 能够再次访问 public inte.net,这很方便。

解决方案 2 将使您的 Lambda 能够在不离开 AWS 网络的情况下连接到 AWS 服务,从而减少延迟并提高安全性。

如果您的 lambda 只需要访问 RDS 和一些其他 AWS 服务,您可以使用解决方案 2 go。如果您的 lambda 需要访问外部 API(与 AWS 无关),您需要解决方案 1,但即使在那种情况下您也可以混合使用它们并使用解决方案 2 以获得更好的安全性和减少延迟,因此您可以同时使用两者。

不应将 AWS Lambda function 附加到 VPC,因为它不需要访问 VPC 中的任何资源。

对 Amazon RDS 服务进行的 API 调用被发送到 Internet 上的终端节点,而不是 VPC 内。 然后,Amazon RDS 服务将打开/关闭数据库。

通过为 Lambda function 指定 VPC,它将直接访问 Internet,并且调用将成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM