amazon-web-services - ec2 - connect rds mysql workbench
¿AWS Lambda puede conectarse a la base de datos mySQL de RDS y actualizar la base de datos? (4)
Solo quería actualizar la base de datos desde mi función lambda. ¿Es posible acceder a RDS especificando IAM Role y access Policy ?.
No, no puedes. Debes proporcionar DB url / username / password para conectarte. Es posible que deba ejecutar Lambda en la misma VPC si está en una subred privada. Ver mis punteros a continuación.
Puedo conectarme a mysql databse usando el cliente mysql. Pero cuando intento con lambda no puedo hacer eso.
Esto es estricto ¡No, no! Su RDS no debería ser accesible desde Internet a menos que realmente lo necesite. Intente ejecutarlo en una subred privada y configure otros servicios de AWS en consecuencia.
Dos centavos de mi parte si está obteniendo tiempos de espera accediendo a recursos de Lambda-
- Por defecto, Lambda tiene acceso a internet y puede acceder a recursos en línea.
- Lambda no puede acceder a los servicios que se ejecutan en la subred privada de su VPC.
- Para conectarse a servicios en subred privada, debe ejecutar el lambda como subred privada. Para esto, debe ir a la sección de red y configurar su VPC, subredes y grupo de seguridad.
- Sin embargo, tenga en cuenta que cuando haga esto perderá acceso a Internet. Si aún necesita acceso a Internet, deberá girar una puerta de enlace NAT o una instancia NAT en subredes públicas y configurar la ruta desde la subred privada a esta NAT.
- Me enfrenté a esto cuando estaba tratando de conectarme a RDS en una subred privada de mi lambda. Como utilicé KMS para cifrar algunas variables de entorno y la parte de descifrado requiere acceso a Internet, tuve que usar una puerta de enlace NAT.
Más detalles - http://docs.aws.amazon.com/lambda/latest/dg/vpc.html#vpc-internet
Estoy tratando de conectar la función AWS Lambda a la base de datos RDS mysql.
Solo quería actualizar la base de datos desde mi función lambda. ¿Es posible acceder a RDS especificando IAM Role y access Policy ?.
Puedo conectarme a mysql databse usando el cliente mysql. Pero cuando intento con lambda no puedo hacer eso. aquí está mi código
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();
};
Sí. Puede acceder a una base de datos MySql RDS de AWS Lambda.
Puede usar la biblioteca node-mysql
.
Sin embargo, hay una gran advertencia que lo acompaña.
AWS Lambda no (actualmente) tiene acceso a subredes privadas dentro de una VPC. Por lo tanto, para que AWS Lambda acceda a su base de datos RDS, debe ser de acceso público, lo que podría ser un riesgo de seguridad para usted.
Actualización (30-10-2015) : AWS Lambda anunció el próximo soporte de VPC (a partir de re: Invent 2015 ), por lo que esto no será un problema por mucho más tiempo.
Actualización (2015-11-17) : AWS Lambda todavía no tiene soporte de VPC.
Actualización (2016-02-11) : AWS Lambda ahora puede acceder a los recursos de VPC:
https://aws.amazon.com/blogs/aws/new-access-resources-in-a-vpc-from-your-lambda-functions/
Para lograr esta funcionalidad, su función Lambda realmente se ejecutará dentro de su VPC en una subred. Algunas advertencias vienen con esta funcionalidad:
- La subred VPC necesita suficientes direcciones IP libres para manejar la escala de Lambda
- Si su función Lambda necesita acceso a Internet, entonces su subred de VPC designada necesitará una puerta de enlace de Internet o NAT
prueba este tutorial: http://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html
En este tutorial, haces lo siguiente:
Inicie una instancia de motor de base de datos MySQL de Amazon RDS en su Amazon VPC predeterminado.
En la instancia de MySQL, crea una base de datos (ExampleDB) con una tabla de muestra (Employee) en ella.
Cree una función Lambda para acceder a la base de datos ExampleDB, cree una tabla (Employee), agregue algunos registros y recupere los registros de la tabla.
Invoca la función Lambda manualmente y verifica los resultados de la consulta.