Soweit ich weiß, ist dies der einzige Weg, um die Funktion im Moment heiß zu halten. Es kann nur teuer werden, wenn Sie viele dieser Funktionen haben.
Sie müssten selbst berechnen, wie viel Sie dafür bezahlen, dass Ihre Funktionen am Leben bleiben, wenn man bedenkt, wie viele von ihnen Sie haben, wie lange sie jedes Mal benötigen und wie viel Speicher Sie benötigen.
Aber einmal alle 20 Minuten ist so etwas wie 2000 Mal pro Monat, wenn Sie z. 128MB und sie unter 100ms beenden, dann könnten Sie ziemlich viele solcher Funktionen im 20-Minuten-Intervall am Leben erhalten und immer noch unter dem freien Tier sein - es wären 20 Sekunden pro Monat pro Funktion. Sie müssen es nicht einmal ausschalten, nachdem Sie eine größere Last erhalten haben, weil es an dieser Stelle irrelevant ist. Außerdem können Sie nie sicher sein, dass Sie die ganze Zeit über eine gleichmäßige Ladung erhalten, so dass Sie Ihren Herzschlag auch dann noch aktiv halten können.
Obwohl ich denke, dass es so billig ist, eine Funktion am Leben zu erhalten (besonders wenn Sie ein spezielles Argument haben, das sie sofort zurückbringt) und dass der Unterschied so groß ist (10 Sekunden vs. 80 ms), dann schön so gut wie jeder wird es tun - es gibt so gut wie keine Entschuldigung dafür. In diesem Fall erwarte ich, dass Amazon diese Praxis entweder bekämpfen wird (indem es es hart oder teurer macht als es derzeit ist - was kein kluger Schachzug wäre) oder es in der Zukunft unnötig machen würde. Wenn der Unterschied zwischen heißem und kaltem Start 100ms war, würde sich niemand darum kümmern. Wenn es 10 Sekunden dauert, müssen alle daran arbeiten.
Es müsste immer einen Unterschied zwischen der Ausführung eines Codes, der vor einer Sekunde ausgeführt wurde, und einem Code, der vor einem Monat ausgeführt wurde, geben, da alle im RAM gespeichert wären und viele Ressourcen verschwenden würden. aber ich sehe keinen Grund, warum dieser Unterschied nicht weniger auffällig gemacht werden oder sogar nur ein paar Schritte statt nur heißen und kalten Start haben könnte.
Danke für den Tipp. Gibt es etwas Äußeres außerhalb des Funktionscodes, das einen Start verzögern kann? Ich habe 2 nodejs lambdas, obwohl sogar von kalten Anrufen, ein (158Kb) unter ~ 1sec beginnt, während ein anderes unter VPC-Elasticache (54Kb) ungefähr 10secs dauert. Aber vielleicht hat das nur mit der Redis-Bibliothek zu tun, die geladen wird, die CPU-intensiv sein kann, und nicht das Setup selbst? – zanona