services ec2 conectar con aws amazon-web-services amazon-rds amazon-iam aws-lambda

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-

  1. Por defecto, Lambda tiene acceso a internet y puede acceder a recursos en línea.
  2. Lambda no puede acceder a los servicios que se ejecutan en la subred privada de su VPC.
  3. 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.
  4. 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.
  5. 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

Cómo conectarse a postgres RDS de AWS Lambda

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(); };


Dado que Lambda utiliza Node.js , Java y Python como un lenguaje de programación / scripting back-end, definitivamente puede usarlo para conectarse a RDS. ( Link )

Finalmente, This es la documentación sobre la especificación de Roles IAM cuando se conecta a RDS. (Ver imagen a continuación):


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.