amazon-web-services - rds集群 - rds是什么




AWS Lambda可以连接到RDS mySQL数据库并更新数据库吗? (3)

我只是想从我的lambda函数更新数据库。 是否可以通过指定IAM角色和访问策略来访问RDS?

你不能。 您需要提供数据库URL /用户名/密码才能连接。 如果Lambda位于私有子网中,则可能需要在同一VPC中运行Lambda。 请参阅下面的指示。

我可以使用mysql客户端连接到mysql数据库。但是当我尝试lambda时,我无法做到这一点。

这是严格的不,不! 除非您确实需要,否则不应从Internet访问您的RDS。 尝试在私有子网中运行它并相应地配置其他AWS服务。

如果您正在获取从Lambda资源获取资源的超时,我可以获得两分钱

  1. 默认情况下,Lambda具有Internet访问权限,可以访问在线资源。
  2. Lambda无法访问VPC私有子网中的服务。
  3. 要连接到私有子网中的服务,您需要运行lambda是私有子网。 为此,您需要转到“网络”部分并配置VPC,子网和安全组。
  4. 但请注意,执行此操作时,您将无法访问Internet。 如果仍需要Internet访问,则必须在公有子网中启动NAT网关或NAT实例,并配置从私有子网到此NAT的路由。
  5. 当我尝试从我的lambda连接私有子网中的RDS时,我遇到了这个问题。 由于我使用KMS加密某些环境变量,而解密部分需要Internet访问,因此我必须使用NAT网关。

更多细节 - http://docs.aws.amazon.com/lambda/latest/dg/vpc.html#vpc-internet

如何从AWS Lambda连接到postgres RDS

我正在尝试将AWS Lambda函数连接到RDS mysql数据库。
我只是想从我的lambda函数更新数据库。 是否可以通过指定IAM角色和访问策略来访问RDS?
我可以使用mysql客户端连接到mysql数据库。但是当我尝试lambda时,我无法做到这一点。 这是我的代码。

console.log('Loading function');
var doc = require('dynamodb-doc');
var dynamo = new doc.DynamoDB();
var mysql = require('mysql');
exports.handler = function(event, context) {
    //console.log('Received event:', JSON.stringify(event, null, 2));  
    var operation = event.operation;
    delete event.operation;
    switch (operation) {
        case 'create':
            var conn = mysql.createConnection({
                host: 'lamdatest.********.rds.amazonaws.com', // RDS endpoint 
                user: 'user', // MySQL username 
                password: 'password', // MySQL password 
                database: 'rdslamda'
            });
            conn.connect();
            console.log("connecting...");
            conn.query('INSERT INTO login (name,password) VALUES("use6","password6")', function(err, info) {
                console.log("insert: " + info.msg + " /err: " + err);
            });
            console.log("insert values in to database");
            break;
        case 'read':
            dynamo.getItem(event, context.done());
            break;

        default:
            context.fail(new Error('Unrecognized operation "' + operation + '"'));

    }
    context.succeed();
};

是。 您可以从AWS Lambda访问MySql RDS数据库。

您可以使用node-mysql库。

但是,有一个很大的警告。

AWS Lambda(当前)无法访问VPC内的私有子网。 因此,为了让AWS Lambda访问您的RDS数据库,它必须是可公开访问的,这可能会给您带来安全风险。

更新(2015-10-30) :AWS Lambda宣布即将推出的VPC支持( 截至re:Invent 2015 ),因此这将不再是一个问题。

更新(2015-11-17) :AWS Lambda仍然没有VPC支持。

更新(2016-02-11) :AWS Lambda现在可以访问VPC资源:

https://aws.amazon.com/blogs/aws/new-access-resources-in-a-vpc-from-your-lambda-functions/

要实现此功能,您的Lambda函数将实际在子网中的VPC内执行。 一些注意事项具有此功能:

  • VPC子网需要足够的可用IP地址来处理Lambda的扩展
  • 如果您的Lambda功能需要Internet访问,那么它指定的VPC子网将需要Internet网关或NAT

试试这个教程: http://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.htmlhttp://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html

在本教程中,您将执行以下操作:

在默认的Amazon VPC中启动Amazon RDS MySQL数据库引擎实例。

在MySQL实例中,您将创建一个包含示例表(Employee)的数据库(ExampleDB)。

创建Lambda函数以访问ExampleDB数据库,创建表(Employee),添加一些记录,并从表中检索记录。

手动调用Lambda函数并验证查询结果。







aws-lambda