2017-02-05 7 views
1

Ich benutze AWS Lambda und kann die Alias-Funktion verwenden, um auf mehrere Code-Promotion-Stufen zu verweisen, die wir haben (z.B. dev, qa, prod usw.). Ich habe den Alias ​​den gleichen Namen wie Bühnen eingerichtet. Die meisten dieser Funktionen werden von S3 oder SNS ausgelöst, die für jede Stufe eine andere Instanz haben.Amazon Lambda - Alias ​​spezifische Umgebungsvariablen

Wie kann ich eine Alias-basierte Umgebungsvariable einrichten, so dass die Funktion die spezifischen Informationen erhalten kann. Das env vars-Setup in der Basisfunktion (normalerweise dev) wird auf alle Aliasnamen übertragen, die für die Bereitstellung nicht funktionieren.

Ich weiß, wie Stage-Variablen in API-Gateway zu verwenden, aber die aktuelle Verwendung ist nicht über Gateway.

Jede Hilfe wird

Antwort

3

Ich glaube nicht, gibt es einen Weg zu erreichen, was Sie versuchen, zu schätzen, Thx werden. Sie müssten drei Versionen Ihrer Lambda-Funktion jeweils mit den richtigen Umgebungsvariablen veröffentlichen und jeden Ihrer Aliase auf die korrekte Version der Funktion verweisen.

Sie könnten die Beschreibungsfelder verwenden, um die Versionen zu beschreiben, bevor Sie die Aliase auf sie richten, um die Änderungen besser verständlich zu machen.

+1

Danke für die Antwort. Ich wollte nur sicherstellen, dass ich hier nichts verpasse. Ich habe es genau so, wie Sie es vorgeschlagen haben, aber das Problem besteht darin, den Code synchron zu halten, da wir noch keine Automatisierung haben. Es wird sehr schöne Ergänzung zu den AWS Lambda Imho sein. – psuhas

+1

Es ist witzig, wie die AWS-Dokumentation zu Versionierung und Aliasing von Lambdas ihren primären Anwendungsfall hat, einen Alias ​​für jede Umgebung zu haben und von einem zum anderen zu promoten, aber keine umgebungsspezifischen Variablen. Sobald Sie Umgebungsvariablen einführen müssen, fällt Aliasing und Versionierung vollständig aus. – duhseekoh

2

ich es auch interessant finden diese für Aliase nicht Teil des Plans ist aber tun Sie den Kontext in Ihrem Code zur Verfügung haben - Context.InvokedFunctionArn

Ich denke, die MINDSET ist, dass Sie anrufen können, zum Beispiel , ein S3-Bucket und ein Präfix von TEST oder DEV oder PROD (basierend auf Kontext InvokedFunctionArn wissen Sie, welcher Alias). Angesichts dieses Kontextes und der Sicherheit basierend auf dem ARN können Sie Bucket-Richtlinien/IAM verwenden, um Ihre TEST-ARN einzuschränken. Sie können nur TEST s3-Präfix-Dateien erreichen. Das löst Sicherheit zwischen Umgebungen.

HINWEIS: Ich stimme mit diesem Modell nicht überein und denke, dass Umgebungsvariablen in den Aliasen enthalten sein sollten, und wenn nicht im Alias ​​angegeben, greifen sie auf die Version zurück.

Obwohl dies funktioniert, ist die Komplexität um zusätzliche Bedingungen auf Präfix, etc. oft falsch konfiguriert - Eine separate Bucket scheint viel sicherer und entspricht der Serverless Application Model Dokumentation besser.

Verwandte Themen