Direkt zum Inhalt

Wie behebe ich Amazon S3-Ereignisbenachrichtigungen, die meine Lambda-Funktion nicht aufgerufen haben?

Lesedauer: 2 Minute
0

Ich möchte Fehler bei Amazon Simple Storage Service (Amazon S3)-Ereignisbenachrichtigungen beheben, die meine AWS Lambda-Funktion nicht aufgerufen haben.

Lösung

Führe zur Fehlerbehebung bei Amazon S3-Ereignisbenachrichtigungen für Lambda-Funktionen die folgenden Schritte aus, um die Berechtigungen und Konfigurationseinstellungen zu überprüfen:

  1. Öffne die Amazon-S3-Konsole und navigiere dann zum S3 Bucket.
  2. Wähle die Registerkarte Eigenschaften.
  3. Wähle unter **Ereignisbenachrichtigungen ** die Ereignisbenachrichtigung aus, und wähle dann Bearbeiten.
  4. Überprüfe unter **Allgemeine Konfiguration ** die Einstellungen für Präfix und Suffix.
  5. (Optional) Wenn du ein Präfix oder Suffix verwendest, bestätige Folgendes:
    Der Objektschlüssel im Bucket entspricht den Richtlinien für die Benennung von Objektschlüsseln.
    Alle Sonderzeichen liegen in URL-kodiertem (prozentcodiertem) Format vor.
  6. Bestätige unter Ziel, dass der ARN der Lambda-Funktion mit einer gültigen Funktion übereinstimmt.
  7. Wähle Änderungen speichern.
  8. Öffne die Lambda-Konsole und wähle dann Funktionen.
  9. Wähle unter Funktionsname die Lambda-Funktion aus.
  10. Wähle die Registerkarte Konfiguration und anschließend Berechtigungen.
  11. Wähle unter Ressourcenbasierte Richtlinienauszüge die Richtlinie, und klicke dann auf Richtlinie ansehen.
  12. Stelle sicher, dass die ressourcenbasierte Richtlinie es Amazon S3 ermöglicht, die Lambda-Funktion aufzurufen:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "ACCOUNT_ID"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:s3:::BUCKET_NAME"
        }
      }
    }
  ]
}

Hinweis: Ersetze REGION, ACCOUNT_ID, FUNCTION_NAME und BUCKET_NAME durch die AWS-Region, das AWS-Konto, den Funktionsnamen und den Bucket-Namen. Das AWS:SourceAccount ist das Konto, dem der Bucket gehört, und ArnLike ist der ARN des Buckets.

In der vorherigen ressourcenbasierten Richtlinie ist der Prinzipal s3.amazonaws.com berechtigt, die API-Aktion lambda:InvokeFunction für den Ressourcen-ARN auszuführen.

**Wichtig:**Amazon S3 übermittelt Ereignisbenachrichtigungen in der Regel innerhalb von Sekunden, manchmal kann es aber auch eine Minute oder länger dauern. Weitere Informationen findest du unter Amazon S3-Ereignisbenachrichtigungen.

Ähnliche Informationen

Wie erlaube ich meiner Lambda-Funktion den Zugriff auf meinen Amazon S3 Bucket?

Warum erhalte ich die Fehlermeldung „Zugriff verweigert“, wenn ich eine Lambda-Funktion verwende, um Dateien in einen Amazon S3-Bucket in einem anderen AWS-Konto hochzuladen?

AWS OFFICIALAktualisiert vor einem Jahr