Wie behebe ich Berechtigungsprobleme mit Lambda?

Letzte Aktualisierung: 26.10.2022

Ich habe mehrere Berechtigungsprobleme im Zusammenhang mit meiner AWS-Lambda-Funktion. Welche Schritte zur Fehlerbehebung sollte ich ergreifen?

Kurzbeschreibung

Probleme mit Lambda-Funktionsberechtigungen treten aus folgenden Gründen auf:

  • Die Lambda-Funktion hat keine Berechtigung, die Aktionen im Code auszuführen.
  • Der AWS-Service, der für den Aufruf der Lambda-Funktion zuständig ist, verfügt nicht über ausreichende Berechtigungen, um die Funktion aufzurufen.
  • Ein Benutzerkonto verfügt nicht über die erforderlichen Berechtigungen zum Erstellen, Aktualisieren oder Löschen von Lambda-Ressourcen.
  • Lambda ist nicht berechtigt, eine Elastic-Network-Schnittstelle zu erstellen, da Amazon Elastic Compute Cloud (Amazon EC2)-Berechtigungen fehlen.

Auflösung

Überlegungen zu Berechtigungen

  • Die Ausführungsrolle einer Lambda-Funktion ist eine AWS Identity and Access Management (IAM)-Rolle, die der Funktion Berechtigungen für den Zugriff auf AWS-Services und -Ressourcen gewährt. Sie geben diese Rolle an, wenn Sie eine Funktion erstellen, und Lambda übernimmt die Rolle, wenn Ihre Funktion aufgerufen wird. Sie können eine Ausführungsrolle erstellen, die Berechtigungen zum Senden von Protokollen an Amazon CloudWatch und zum Hochladen von Ablaufverfolgungsdaten in AWS X-Ray besitzt.
  • Sie können der Ausführungsrolle einer Lambda-Funktion jederzeit Berechtigungen hinzufügen oder daraus entfernen. Sie können Ihre Lambda-Funktion auch so konfigurieren, dass sie eine andere Rolle verwendet. Fügen Sie Berechtigungen für alle AWS-Services hinzu, die Ihre Funktion mit einem AWS-SDK aufruft. Fügen Sie dann Berechtigungen für AWS-Services hinzu, die Lambda verwendet, um optionale Funktionen zu aktivieren.
  • Sie geben eine Ausführungsrolle an, wenn Sie eine Lambda-Funktion erstellen. Wenn Sie Ihre neue Lambda-Funktion aufrufen, stellt Lambda Ihrer Funktion automatisch temporäre Anmeldeinformationen zur Verfügung, indem es die Ausführungsrolle übernimmt. Sie müssen sts:AssumeRole in Ihrem Funktionscode nicht aufrufen. Wenn Sie Ihrer Lambda-Funktion Berechtigungen hinzufügen, aktualisieren Sie auch den Code oder die Konfiguration der Funktion. Wenn Sie den Code oder die Konfiguration der Funktion aktualisieren, müssen die laufenden Instances Ihrer Funktion angehalten werden, sodass sie ersetzt werden können. Weitere Informationen finden Sie unter Verwendung ressourcenbasierter Richtlinien für AWS Lambda.
  • Verwenden Sie ressourcenbasierte Richtlinien, um anderen AWS-Konten oder -Organisationen Nutzungsberechtigungen für jede Ressource zu erteilen. Eine ressourcenbasierte Richtlinie kann einem AWS-Service die Berechtigung erteilen, Ihre Lambda-Funktion in Ihrem Namen aufzurufen.
  • Um eine Lambda-Funktion aufzurufen oder zu verwalten, erteilen Sie eine Kontoberechtigung. Erstellen Sie eine einzige ressourcenbasierte Richtlinie, um einer gesamten Organisation in AWS Organizations Berechtigungen zu erteilen. Verwenden Sie ressourcenbasierte Richtlinien, um einem AWS-Service eine Aufrufberechtigung zu erteilen, sodass eine Funktion als Reaktion auf bestimmte Kontoaktivitäten aufgerufen werden kann.
  • Ressourcenbasierte Richtlinien gelten für eine einzelne Funktion, Version, einen Alias oder eine Ebenen-Version. Ressourcenbasierte Richtlinien gewähren Berechtigungen für einen oder mehrere AWS-Services und -Konten. Verwenden Sie für vertrauenswürdige Konten, die Zugriff auf mehrere Ressourcen benötigen, oder um API-Aktionen zu verwenden, die von ressourcenbasierten Richtlinien nicht unterstützt werden, kontenübergreifende Rollen. Weitere Informationen finden Sie unter Lambda-Berechtigungen.
  • Verwenden Sie identitätsbasierte IAM-Richtlinien, um Benutzern in Ihrem Konto Zugriff auf Lambda zu gewähren. Identitätsbasierte Richtlinien können direkt für Benutzer oder für Gruppen und Rollen gelten, die einem Benutzer zugeordnet sind. Erteilen Sie Benutzern in einem anderen Konto die Berechtigung, eine Rolle in Ihrem Konto zu übernehmen und auf Ihre Lambda-Ressourcen zuzugreifen.
  • Lambda stellt von AWS verwaltete Richtlinien bereit, die Zugriff auf Lambda-API-Aktionen gewähren. Verwaltete Richtlinien können Zugriff auf andere AWS-Services gewähren, die zur Entwicklung und Verwaltung von Lambda-Ressourcen verwendet werden. Lambda aktualisiert diese verwalteten Richtlinien nach Bedarf, um sicherzustellen, dass Ihre Benutzer Zugriff auf neue Funktionen haben, wenn sie veröffentlicht werden. Weitere Informationen finden Sie unter Identitätsbasierte IAM-Richtlinien für Lambda.

Schritte zur Fehlerbehebung

1.    Wenn die Lambda-Funktion eine andere Funktion oder einen anderen AWS-Service aufrufen soll und dieser fehlschlägt, überprüfen Sie die Lambda-Ausführungsrolle.
Weitere Informationen finden Sie unter AWS-Lambda-Ausführungsrolle.

2.    Stellen Sie sicher, dass der AWS-Service oder Benutzer über Berechtigungen für die Lambda:InvokeFunction-Aktion verfügt.
Weitere Informationen finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS Lambda.

3.    Greifen Sie in einem kontenübergreifenden Szenario auf die Quell- und Zielkonten zu, um die Berechtigungen zu überprüfen, die für die Übernahme einer IAM-Rolle zum Aufrufen der Lambda-Funktion erforderlich sind.
Weitere Informationen finden Sie unter Wie konfiguriere ich eine Lambda-Funktion so, dass sie eine IAM-Rolle in einem anderen AWS-Konto übernimmt?

4.    Um eine Verbindung zu einer VPC herzustellen, muss die Ausführungsrolle Ihrer Lambda-Funktion über die folgenden Berechtigungen verfügen:
ec2:CreateNetworkInterface
ec2:DescribeNetworkInterfaces
ec2:DeleteNetworkInterface

5.    Lösen Sie Berechtigungsprobleme, indem Sie den Satz nicht funktionierender Berechtigungen mit einem Ihrer funktionierenden Setups vergleichen. Sie können auch die AWS-Dokumentation lesen, um die Berechtigungen zu überprüfen.

6.    Das Quellkonto muss über die Berechtigung verfügen, um die Lambda-Funktion aufrufen zu können. Überprüfen Sie die für die Lambda-Funktion erforderlichen Berechtigungen für die Zuordnung von Ereignisquellen. Die Ereignisquellen-Zuordnung verwendet Berechtigungen in der Ausführungsrolle der Funktion, um Elemente in der Ereignisquelle zu lesen und zu verwalten. Berechtigungen, Ereignisstruktur, Einstellungen und Abfrageverhalten variieren je nach Ereignisquelle. Weitere Informationen finden Sie unter Problembehandlung bei Identität und Zugriff auf AWS Lambda.

7.    Überprüfen Sie Ihre AWS-CloudTrail-Protokolle, um API-Aufrufe an Lambda nachzuverfolgen. Überprüfen Sie die von CloudTrail gesammelten Informationen, um Folgendes festzustellen:
Die Anfrage, die an Lambda gerichtet wurde.
Die IP-Adresse, von der aus die Anfrage gestellt wurde.
Wer die Anfrage gestellt hat.
Wann die Anfrage gestellt wurde.
Weitere Informationen finden Sie unter Protokollieren von Lambda-API-Aufrufen mit CloudTrail.

8.    Wenn Sie das Problem immer noch nicht lösen können, öffnen Sie einen Fall beim AWS Support. Geben Sie in dem Fall die folgenden Informationen an:

  • Die Lambda-Funktion-ARN.
  • Den Workflow zur Einrichtung der Lambda-Funktion mit allen enthaltenen AWS-Services.
  • Einzelheiten darüber, ob das Problem zeitweise oder kontinuierlich auftritt.
  • Einzelheiten darüber, ob das Problem ein kontoübergreifendes Szenario ist.
  • Die beteiligten Berechtigungen und/oder IAM-Rollennamen.
  • Vollständige CloudWatch-Protokolle im .txt-Format vom Zeitpunkt des Auftretens des Problems. Diese CloudWatch-Protokolle werden verwendet, um Lambda-Funktionsfehler zu identifizieren, zu denen Zeitüberschreitungsprobleme, Init-Dauer und Berechtigungsprobleme gehören.
  • Den genauen Zeitstempel des Problems mit der Zeitzone oder dem Zeitstempel in UTC.

Hinweis: AWS-Supportmitarbeiter haben aus Sicherheits- und Datenschutzgründen keinen Zugriff auf die CloudWatch-Protokolle der Kunden.