2017-01-06 3 views
1

Das folgende ist, wie ich verbinde. Gibt es eine Möglichkeit in Lambda Umgebungsvariablen zu setzen, die nicht sichtbar sind und idealerweise mehrere Lambdas kreuzen würden? Idealerweise in einem anderen AWS-Dienst, auf den ich mit dem SDK zugreifen und über alle AWS-Dienste hinweg verwenden könnte?Wie sql Verbindungszeichenfolgen in aws Lambda verstecken?

var MYSQL  = require('mysql'); 
var AWS = require('aws-sdk'); 

exports.handler = (event, context, callback) => { 
    var connection = MYSQL.createConnection({ 
     host  : '127.0.0.1', 
     port  : '3306', 
     user  : 'myuser', 
     password : 'mypass', 
     database : 'mydb' 
}); 
connection.connect(); 
+1

Sind nicht von wem/was genau sichtbar? –

+0

Im Lambda-Funktionscode/Konfigurationsbildschirm. Ich liebe es, eine Umgebungsvariable für Benutzer und Passwort zu haben. Es würde auch die Anmeldeinformationen abstrakt halten, so dass es leicht für einen Haufen Lambdas geändert werden könnte. –

Antwort

3

Ich würde das in einer DynamoDB-Tabelle oder einem S3-Bucket speichern. Sie können dem Lambda eine IAM-Rolle zuweisen, um den Zugriff auf diese zu ermöglichen - möglicherweise schreibgeschützt.

Alternativ haben Lambda jetzt Umgebungsvariablen wie Elastic Beanstalk und Sie können es so einstellen. Sie können jedoch verschlüsselt werden, was auch eine gewisse Komplexität mit sich bringt.

+0

Wissen Sie, ob die Umwelt über Lambda oder Lambda basiert? Es sah aus wie auf einer Lambda-Basis. Wenn nicht, ist die DynamoDB Idee wahrscheinlich, wonach ich suche. Auf diese Weise kann ich ein verteiltes Berechtigungssystem wie ein 'Low-Rente-LDAP' haben. –

+0

Die Umgebungsvariablen sind pro Lambda, wie Dave in seiner Antwort sagte. Ich habe eine einfache Schlüssel/Wert-Tabelle mit einer "Umgebung" (dev, prod, etc.) verwendet, um dies zu tun. Und "Low Rent LDAP" ist ein großartiger Bandname! – stdunbar

+0

Haha 'Low Rent LDAP' wird immer bei ihren Gigs carden. Vielen Dank für die Hilfe! Wir gehen alle Lambda für unsere API, also gingen wir mit der Dynamo DB Idee. Obwohl es großartig war, die Option "Environmental Vars" in den Lambda-Dateien zu kennen, war es einfach zu überwältigend, jeden einzelnen zu ändern, wenn wir die Credits der Datenbank ändern mussten. –

2

Sie können jetzt encrypted environment variables verwenden.

Hinter den Kulissen werden sie KMS verwenden, um die Werte zu verschlüsseln und dann Ihren Lambda-Funktionen zu erlauben, sie so zu verwenden, als wären sie reiner Text im Container-Kontext.

+0

Das ist großartig. Vielen Dank für die Hilfe. Ich frage mich, ob es eine Möglichkeit gibt, wie die Umgebungsvariable über mehrere Lambdas verteilt wird oder ob sie auf einer Lambda-Basis basiert? Und wenn nicht, wenn Sie Best Practices für verteilte Kredits kennen, können Sie für mehrere Lambdas gleichzeitig aktualisieren? –

+0

@NickKiermaier: je Lambda-Basis bisher. Das kürzlich veröffentlichte Serverless-Anwendungsmodell könnte jedoch eine Automatisierung der Multi-Lambda-Konfiguration ermöglichen und unterstützt Umgebungsvariablen wie in diesem Beispiel auf github: https://github.com/awslabs/serverless-application-model/blob/master/examples/ 2016-10-31/encryption_proxy/template.yaml –

+0

Nochmals vielen Dank für die Hilfe. Wir sind noch nicht serverlos. Wir versuchen es von einem niedrigeren Level atm zu lernen, dann geben wir Serverless eine Chance. –