2017-12-24 3 views
3

Ich habe einen Stapel erstellt, Lambda in VPC mit Wolkenbildung. Wenn ich versuche, den gesamten Stapel zu löschen, dauert es 40-45 Minuten.Lambda in VPC Löschung dauert mehr Zeit

Meine Iam Rolle hat die folgende Erlaubnis:

Action:        
      - ec2:DescribeInstances 
      - ec2:CreateNetworkInterface 
      - ec2:AttachNetworkInterface 
      - ec2:DescribeNetworkInterfaces 
      - ec2:DeleteNetworkInterface 
      - ec2:DetachNetworkInterface 
      - ec2:ModifyNetworkInterfaceAttribute 
      - ec2:ResetNetworkInterfaceAttribute 
      - autoscaling:CompleteLifecycleAction 
      - iam:CreateRole 
      - iam:CreatePolicy 
      - iam:AttachRolePolicy 
      - iam:PassRole 
      - lambda:GetFunction 
      - lambda:ListFunctions 
      - lambda:CreateFunction 
      - lambda:DeleteFunction 
      - lambda:InvokeFunction 
      - lambda:GetFunctionConfiguration 
      - lambda:UpdateFunctionConfiguration 
      - lambda:UpdateFunctionCode 
      - lambda:CreateAlias 
      - lambda:UpdateAlias 
      - lambda:GetAlias 
      - lambda:ListAliases 
      - lambda:ListVersionsByFunction 
      - logs:FilterLogEvents 
      - cloudwatch:GetMetricStatistics 

Wie die Löschzeit des Stapels zu verbessern?

+1

Die VPC kann nicht gelöscht werden, bis die Subnetze gelöscht werden können, und das kann nicht passieren, bis Lambda alle Container beendet und die ENIs freigibt, die es für sie beansprucht hat. Kurz vor dem Löschen dieser ENIs - von denen ich annehme, dass sie die Ursache für den Überfall sind, und die Sie vielleicht manuell in der Konsole löschen könnten, um zu sehen, ob es hilft - weiß ich nicht, dass Sie den Prozess beschleunigen können. .. aber lass uns sehen ob jemand andere Gedanken hat. –

+0

Hallo Michael, das Problem ist nicht mit dem Löschen von VPC, ist das Löschen des Lambda in benutzerdefinierten VPC bereitgestellt. Der Fehler, den ich sehe, ist hält ** CloudFormation wartet auf NetworkInterfaces, die mit der Lambda-Funktion verbunden sind aufgeräumt. ** Nach 45 Minuten sehe ich den gesamten Stapel gelöscht wird, aber nur gesucht, wenn es Lösungen gibt wickle es bald auf oder diese Verzögerung wird erwartet? –

Antwort

4

Wenn eine Lambda-Funktion in Ihrer VPC ausgeführt wird, wird eine Elastic Network Interface (ENI) erstellt, um dem Netzwerk Zugriff zu gewähren. Sie können sich ein ENI als virtuelle NIC vorstellen. Es verfügt über eine MAC-Adresse und mindestens eine private IP-Adresse und ist an jede Ressource angeschlossen, die mit dem VPC-Netzwerk verbunden ist und innerhalb der VPC eine IP-Adresse hat (EC2-Instanzen, RDS-Instanzen, ELB, ALB, NLB, EFS, etc.).

Obwohl es nicht explizit dokumentiert zu sein scheint, werden diese Interfaces, wie sie von Lambda verwendet werden, anscheinend 1: 1 auf Container abgebildet (Spekulation). Lambda schließt Container nicht unmittelbar nach der Ausführung der Funktion, da sie sie möglicherweise für nachfolgende Aufrufe (nicht für Spekulationen) zur Wiederverwendung benötigen, und da die Container nicht sofort zerstört werden, auch nicht die ihnen zugeordneten ENIs (Spekulation). In jedem Fall ist die Verzögerung dokumentiert:

Es gibt eine Verzögerung zwischen dem Zeitpunkt, zu dem Ihre Lambda-Funktion ausgeführt wird, und der ENI-Löschung.

http://docs.aws.amazon.com/lambda/latest/dg/vpc.html

Dies macht Sinn, wenn wir, dass die Prioritäten der Lambda-Infrastruktur in Betracht ziehen sollten je nach Bedarf auf die Bereitstellung von Ressourcen konzentrieren und sie für den schnellen Zugriff Leistungsgründen zu halten - so Dinge wieder nach unten zu reißen ist ein sekundäre Betrachtung, die der Dienst im Hintergrund beachtet.

Kurz gesagt, diese Verzögerung ist normal und erwartet.

Vermutlich hat CloudFormation Tags verwendet, um diese Schnittstellen zu identifizieren, da es nicht leicht ersichtlich ist, wie man sie sonst unterscheidet.

ENIs sind im linken Navigationsbereich der EC2-Konsole unter Network Interfaces sichtbar. Es ist also möglich, dass Sie diese selbst löschen und den Prozess beschleunigen können ... Beachten Sie jedoch, dass diese Aktion, sofern das System dies zulässt, durchgeführt werden muss mit gebührender Vorsicht - denn wenn Sie ein ENI löschen, das an einen Container angehängt ist, den Lambda später zu verwenden versucht, weiß Lambda nicht, dass die Schnittstelle fehlt und die Funktion einen Fehler auslöst oder zumindest einen Fehler auslöst, bis Lambda entscheidet, sie zu zerstören der Kontainer.

+0

Danke für das Update Michael, da diese Verzögerung erwartet wird, kann hier nichts gemacht werden. Aber das Löschen von ENI - ist es in Ordnung, es manuell zu löschen und es erstellen zu lassen, wenn der Wolkenbildungsstapel erneut ausgeführt wird?Wird es zu dieser Zeit NEW ENI schaffen? –

+0

Danke, diese Antwort ist sehr hilfreich. – matthewcummings516

Verwandte Themen