从Lambda安全地查询AWS RDS

时间:2019-02-28 07:05:09

标签: aws-lambda amazon-rds aws-kms

我正尝试将我的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" 

AWS正在做出的声明使我似乎应该将这些值硬编码到一个看起来不安全的文件中。我可以尝试使用环境变量,但我认为会出现同样的问题。

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

1 个答案:

答案 0 :(得分:1)

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

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

请记住,如果您的Lambda也需要Internet访问(并且在这种情况下也需要Internet访问,因为它需要访问SSM),则需要在其上附加2个子网:私有和公共。私人会将流量路由到RDS,而公众会将流量路由到其他AWS服务/或互联网。

但是,设置环境变量最容易使您动身。

编辑:如果需要快速入门,请检查this的答案,以指导我逐步创建带有公共子网和私有子网的VPC。

编辑2 :好消息。 AWS早前已经发布了SSM的VPC终端节点。因此,您的Lambda不再需要通过Internet进行访问,您只需访问该VPC端点即可。您可以在official docs

中看到它