4

Ich arbeite an einer AWS serverlosen Anwendung, ich bin neu in AWS, also korrigieren Sie bitte alle Missverständnisse in dieser Frage. Wir haben ungefähr 30 Lambda-Funktionen, die grundlegende CRUD-Operationen auf einer in RDS gehosteten SQL-Datenbank ausführen. Wir haben EntityFramework Core verwendet, um die Datenbank zu erstellen. Dies bedeutet, dass die Lambda-Funktionen zur Verwendung der Datenbank jeweils Zugriff auf die EF-Verbindungszeichenfolge benötigen. Ich wollte die Verbindungszeichenfolge nicht im Speicher lassen (sie enthält ein Klartext-Passwort), also habe ich sie in eine verschlüsselte Umgebungsvariable eingefügt.Wie kann ich problemlos Umgebungsvariablen zu mehreren Lambda-Funktionen hinzufügen?

Der einzige Weg, wie ich das herausfinden konnte, war, eine verschlüsselte Umgebungsvariable über die GUI der Lambda-Management-Konsole zu jeder Lambda-Funktion einzeln hinzuzufügen. Das war langweilig, aber es hat funktioniert. Ich habe jetzt die Lösung ein wenig geändert und wir benötigen einen anderen Satz von Lambda-Funktionen, diese benötigen Umgebungsvariablen, die sie ebenfalls hinzufügen, und ich möchte es nicht noch einmal manuell machen.

Meine Frage:

Gibt es eine einfache Möglichkeit, verschlüsselte Umgebungsvariablen (oder so ähnlich) hinzuzufügen, die durch alle meine Lambda-Funktionen zugegriffen werden kann? Gibt es eine Methode, um sie in großen Mengen hinzuzufügen? Eine höhere Variable, die ich verwenden kann?

Ich habe versucht, Informationen in der Amazon-Dokumentation (here for example) zu finden, hatte aber wenig Erfolg.

Antwort

2

Lambda ist nur um die Umgebungsvariablen bekommen, die sie braucht, und es ist nicht verantwortlich zur zentralen Verwaltung von Umgebungsvariablen.

Sie müssen Ihre Umgebungsvariablen in Ihrem Bereitstellungsprozess verarbeiten.

Wie setzen Sie derzeit Ihre 30 Lambda-Funktionen ein?

Wenn Sie CodeBuild verwenden, können Sie auf den AWS EC2-Parameterspeicher zugreifen, in dem Sie Ihre vertraulichen Umgebungsvariablen zentral speichern und verwalten können.

Andere CI/CD-Tools haben auch ihre eigene Möglichkeit, Umgebungsvariablen zentral zu verwalten.

aktualisieren:

können Sie die AWS EC2 Parameter Store programmatisch verwenden. Dies bedeutet, dass Sie Ihre gespeicherten Umgebungsvariablen während des Starts aus Ihrer Lambda-Funktion abrufen können, sodass Sie dies nicht zum Zeitpunkt der Bereitstellung durchführen müssen.

Es ist immer noch besser, wenn es in Ihrem Anwendungsfall möglich ist.

+0

Ich verwende das AWS-Toolkit für Visual Studio, es hat einen Bereitstellungs-Assistenten eingebaut. Ich werde CodeBuild untersuchen, danke! – SBaker

0

Ich würde vorschlagen, ConnectionString an der AWS-Konsole hinzuzufügen und Produktionsverbindungszeichenfolge in der Konfigurationsdatei nicht zu verwenden, um diese Art von Problemen zu vermeiden. Melden Sie sich bei der AWS-Konsole an, wechseln Sie zur Lambda-Funktion und fügen Sie eine Verbindungszeichenfolge als Umgebungsvariable hinzu. PS. Für den Fall, dass Sie mit der Syntax kämpfen werden. Wenn Ihre json Konfigurationsdatei sieht wie folgt aus:

{ 
    "Settings": 
    { 
     "ConnectionString":"", 
     "SomethingElse" 
    } 
} 

Verwenden Sie diese Syntax Verbindungszeichenfolge zu konfigurieren:

Settings__ConnectionString

+0

Danke für die Antwort. Ich mache das schon. Meine Frage: Sagen wir, ich hätte 400 Lambda-Funktionen. Müsste ich 400 Umgebungsvariablen hinzufügen, eine für jede Funktion? Das würde ewig dauern. Gibt es einen leichteren Weg? – SBaker

+0

@SBaker Ich denke, es gibt keine Möglichkeit, Einstellungen zu zentralisieren. Ich suchte auch nach dieser Lösung – OlegI

2

Ich würde dies nicht als eine Lösung eher eine Arbeit um Ihr Problem zu nennen. Sie können Ihre Umgebungsvariablen konfigurieren und in S3 Bucket speichern. Und mit S3-Client in jedem Ihrer Lambda, können Sie spezifische Variable, die Sie interessiert sind. Hope dies hilft.

Verwandte Themen