2016-03-14 2 views
8

Mein Lambda greift auf Ressourcen auf meiner VPC zu, wie in der Dokumentation beschrieben, die ich der Lambda-Rolle zum Erstellen von Netzwerkschnittstellen gegeben habe. Ich war unter der Annahme, dass die ENI wieder verwendet wird, sondern sieht aus wie jeder Aufruf eine neue ENI zu schaffen, die einen Fehler aus, verursachtLambda creating ENI bei jedem Aufruf: Hitting limit

Lambda was not able to create an ENI in the VPC of the Lambda function because the limit for Network Interfaces has been reached.

Ich google gesucht, konnte aber nicht den besten Weg finden, dieses Problem zu lösen . Abgesehen davon, dass diese ENIs regelmäßig manuell gelöscht werden, gibt es einen besseren Weg?

+4

Hat die Lambda-Rolle die Berechtigung, ein ENI zu löschen oder nur die Berechtigung zum Erstellen? –

+0

@MarkB: Interessant, habe nicht darüber nachgedacht. Es hat keine Löschberechtigung. Lassen Sie mich versuchen, diese Erlaubnis zu geben und zu sehen, was passiert – blueskin

+0

@blueskin Ich untersuche ein ähnliches Problem. Woher hast du den Fehler, den du in deiner Frage erwähnt hast? – Nic

Antwort

11

Wie von Mark vorgeschlagen, war das Problem, dass AWS Lambda die DeleteNetworkInterface Aktion nicht in der Rolle (Richtlinie) hatte, auf die das Lambda festgelegt wurde. Durch das Geben der entsprechenden Richtlinie löst und löscht das Lambda nun das ENI, wenn es fertig ist.

 { 
      "Effect": "Allow", 
      "Resource": "*", 
      "Action": [ 
       "ec2:DescribeInstances", 
       "ec2:CreateNetworkInterface", 
       "ec2:AttachNetworkInterface", 
       "ec2:DescribeNetworkInterfaces", 
       "ec2:DeleteNetworkInterface", 
       "ec2:DetachNetworkInterface", 
       "ec2:ModifyNetworkInterfaceAttribute", 
       "ec2:ResetNetworkInterfaceAttribute", 
       "autoscaling:CompleteLifecycleAction" 
      ] 
     } 
5

Die offizielle Linie von AWS (via their docs und ein Support-Ticket) ist die AWS-Managed Politik AWSLambdaVPCAccessExecutionRole zu verwenden.

Auszug aus einem privaten Support-Ticket:

Die Rolle, die Sie in Ihrer Lambda-Funktion sind eine angrenzende Politik „AWSLambdaVPCAccessExecutionRole“, die eine AWS für VPC-fähige Funktionen Lambda verwaltet Politik. Diese Richtlinie enthält alle erforderlichen Berechtigungen und kann in Zukunft aktualisiert werden, wenn aufgrund von Aktualisierungen des Dienstes neue Berechtigungen erforderlich sind.

Es ist auch erwähnenswert, dass es manchmal einige Stunden dauern kann, bis abgelöste ENIs geerntet werden.