从 Lambda 安全地查询 AWS RDS

Query AWS RDS from Lambda Securely

我正在尝试将我的 Lambda 连接到 RDS,就像学习练习一样。 目前,所有资源都是通过 CloudFormation 创建的,如果可能的话,我想继续这样做。

我的问题是来自 https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html 的以下声明,其中详细说明了如何连接。

A second file contains connection information for the function.

    Example rds_config.py

    #config file containing credentials for RDS MySQL instance
    db_username = "username"
    db_password = "password"
    db_name = "ExampleDB" 

A​​WS 的声明让我觉得我应该将这些值硬编码到一个看起来不安全的文件中。我可以尝试使用环境变量,但我认为会出现同样的问题。

如果有人对如何安全地将 lambda 连接到 rds 有任何建议,我将不胜感激!!!

如果您出于任何原因不想使用环境变量,您可以让 Lambda 函数为您查询 AWS Systems Manager Parameter Store

假设您的函数被触发后,您可以查询 SSM 以 get 所需的参数,然后将其传递到您的 RDS 连接中。

请记住,如果您的 Lambda 还需要 Internet 访问(在本例中需要,因为它需要访问 SSM),您需要为其附加 2 个子网:一个私有子网和一个 public.私有将流量路由到 RDS,public 将流量路由到其他 AWS 服务/或互联网。

不过,设置环境变量最容易让您脱离实际。

编辑:如果您需要快速入门,请检查 this 回答我通过创建包含 public 和私有子网的 VPC 引导 OP。

编辑 2:好消息。 AWS 前段时间发布了 SSM 的 VPC 端点。因此,您的 Lambda 将不再需要通过互联网,您只需访问该 VPC 端点即可。您可以在 official docs

中看到它