2017-04-08 4 views
0

Wäre es möglich, mit AWS Lambda unsichere Benutzerskripts auszuführen? Es sollte sein:AWS Lambda für unsichere Benutzerskripte mit node.js?

  • sollte Speicherlimit (scheint wie AWS Lambda hat es).
  • sollte Ausführung Zeitüberschreitung (scheint wie AWS Lambda hat es auch). Außerdem sollte es unmöglich sein, etwas wie setInterval(consumeLittleCpu, 500) einzurichten.
  • (wäre nett zu haben) verschiedene Skripte sollten isoliert werden.

Wäre es effizient? Wie zum Beispiel haben Sie sagen, 5000 verschiedene Skripte und jeder davon wird einmal alle 1-30 Sekunden ausgeführt?

Wie viel mehr kostet es im Vergleich zu den üblichen AWS-Instanzen? Die Genauigkeit in der Größenordnung wäre gut, wenn man sagt "es kostet Sie nicht mehr als 10-mal das gleiche bei der üblichen AWS-Instanz" wäre gut genug.

Antwort

2

Es klingt nicht wie ein sehr guter Anwendungsfall für mich.

Lambda-Container erhalten reused. Im Allgemeinen können Sie alle Funktionen nutzen, die Ihre Programmiersprache bietet, einschließlich der Timer. Sie werden zwischen den Ausführungen eingefroren, würden aber wahrscheinlich wieder verwendet werden. In einigen Sprachen können Sie den Skriptinhalt einschränken. Ich erinnere mich, dass Server mit PHP den Aufruf bestimmter Funktionen verbieten konnten, aber ich nehme an, dass Sie das nicht mit Lambda konfigurieren konnten. Wenn Sie eine echte Isolierung wünschen, müssen Sie für jedes Skript eine Lambda-Funktion einrichten. Das könnte automatisch geschehen, klingt aber immer noch nach einem Durcheinander. Wenn Sie jedes Skript isolieren, müssen Sie die Zeit berücksichtigen, die für die erste Ausführung benötigt wird, die langsam sein könnte, und die Zeit, die benötigt wird, wenn die Lambda-Funktion für eine Weile nicht aufgerufen wurde.

Lambda hat einige limits von denen einige erhöht werden können einige nicht. Sie könnten die erweiterbaren parallelen Ausführungen treffen.

Irgendwie müssten Sie Ihre Lambdas auslösen. Sie könnten Cloudwatch dafür verwenden.

Wie Sie bereits herausgefunden haben, können Sie Speicher und Ausführungszeit begrenzen. Preismäßig zahlen Sie nur das, was Sie tatsächlich verwenden, was normalerweise viel billiger ist, als Instanzen, die die meiste Zeit halb leer laufen. Wenn Sie die EC2/Elastic Beanstalk-Instanzen vollständig nutzen, wären sie günstiger.

Aktualisiert: Pricing ist $ 0,00001667 pro GB-Sekunde in 100 ms Blöcke berechnet zuzüglich einer Anfrage Gebühr von 0,20 $ pro 1 Million Anfragen nach einem großzügigen kostenlosen Tier.

+0

Vielen Dank! Können Sie mir bitte sagen, wie die Kosten-Zeit im Falle eines ** frisch gestarteten oder neugestarteten ** Containers berechnet wird? Werde ich für alle Zeit bezahlen? Container-startup + nodejs-startup + execution' oder 'nodejs-startup + execution' oder nur für die Ausführung' execution' time? –

+0

I.e. Nehmen wir an, es gibt zwei Fälle: "Skript wird 10-mal ausgeführt, einmal pro Stunde und Container wird jedes Mal von Grund auf neu gestartet und neu gestartet" und "dasselbe Skript wird 10 Mal ausgeführt, aber jetzt einmal pro Sekunde, also Container wird wiederverwendet "- sind die Kosten gleich oder unterschiedlich? –

+1

kann ich dir auf Node.js mal nicht sagen, Java braucht eine ganze Weile für die erste Anfrage. Node.js soll viel schneller starten. Sie können die Lambda-Wiederverwendung nur dann direkt beeinflussen, wenn Sie sie jedes Mal aktualisieren/löschen. Mit 10 Mal pro Stunde können Sie die Start-/Aufwärmzeit mehr oder weniger ignorieren, wenn Sie eine Funktion wiederverwenden. Das ist schon häufig. Das Beste für Sie wäre, eine der Vorlagen zu testen und die nicht auslaufende kostenlose Stufe zu verwenden. –