View a markdown version of this page

Protokollieren von API-Aufrufen für Webfunktionen mit AWS CloudTrail - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Protokollieren von API-Aufrufen für Webfunktionen mit AWS CloudTrail

Mit können Sie die Aktionen verfolgen AWS CloudTrail, die von einem Benutzer, einer Rolle oder AWS-Service in AWS Lambda Web Functions ausgeführt wurden. CloudTrail bietet eine Aufzeichnung dieser Aktionen. CloudTrail erfasst Aufrufe von Webfunktionen als Datenereignisse. Sie können diese Informationen verwenden, um festzustellen, wer wann und von wo aus eine Webfunktion aufgerufen hat, was bei der Sicherheitsanalyse und Betriebsprüfung hilfreich ist.

Datenereignisse der Webfunktion in CloudTrail

Datenereignisse liefern Informationen über Operationen, die an einer Ressource ausgeführt werden. Beispielsweise ist das Aufrufen eines Webfunktionsendpunkts ein Datenereignis. Diese Operationen werden auch als Operationen auf Datenebene bezeichnet und sind häufig sehr umfangreich. Standardmäßig werden CloudTrail keine Datenereignisse protokolliert, und im CloudTrail Ereignisverlauf werden sie nicht aufgezeichnet.

Für Datenereignisse werden zusätzliche Gebühren fällig. Weitere Informationen finden Sie unter CloudTrail – Preise.

Sie können Datenereignisse für den AWS::Lambda::WebFunction Ressourcentyp mithilfe der CloudTrail Konsole oder CloudTrail API-Operationen protokollieren. AWS CLI CloudTrail zeichnet jeden Aufruf in der Region auf AWS-Region , die die Anfrage bedient hat, und awsRegion identifiziert diese Region. Im Gegensatz zu Protokollen und Metriken werden Aufrufereignisse nicht in der Heimatregion zentralisiert. Verwenden Sie für einen MultiRegion PerRegion OR-Endpunkt einen Trail- oder Event-Datenspeicher mit mehreren Regionen, sodass Aufrufe in jeder Region, die der Endpunkt bedient, aufgezeichnet werden.

Die folgende Tabelle zeigt den Datenereignistyp für Webfunktionen.

Typ des Datenereignisses (Konsole) resources.type-Wert Daten-APIs, bei denen Sie angemeldet sind CloudTrail
Lambda-Webfunktion AWS::Lambda::WebFunction InvokeWebFunctionEndpoint

CloudTrail zeichnet die folgenden Schlüsselbezeichner für den Aufruf einer Webfunktion auf:

KennungWert
eventSourcelambda.amazonaws.com
eventNameInvokeWebFunctionEndpoint. Dies ist der Wert, nach dem gefiltert werden soll.
IAM-Aktionlambda:InvokeWebFunctionEndpoint
readOnlyfalse, weil ein Aufruf Ihren Funktionscode ausführt.
resources.typeAWS::Lambda::WebFunction
resources.ARNDie Funktion ARN, nicht der Endpunkt-ARN. Trail-Selektoren funktionieren daher auf Funktionsebene.

Der folgende erweiterte Event-Selektor protokolliert Aufrufe nur für eine einzelne Webfunktion.

[ { "Name": "web-function-invokes", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::WebFunction"] }, { "Field": "resources.ARN", "Equals": ["arn:aws:lambda:us-east-1:111122223333:web-function/hello-world"] } ] } ]

Gehen Sie wie folgt vor, um Datenereignisse auf einem Trail zu aktivieren.

Um Datenereignisse der Webfunktion zu aktivieren und zu überprüfen (AWS CLI)
  1. Erstellen Sie den Trail, der die Datenereignisse aufzeichnet, oder wählen Sie ihn aus. Anweisungen finden Sie im AWS CloudTrail Benutzerhandbuch unter Protokollieren von Datenereignissen.

  2. Speichern Sie den folgenden erweiterten Event-Selektor unter. web-function-data-events.json Er zeichnet Aufrufe für eine Webfunktion auf. Um Aufrufe für jede Webfunktion im Konto aufzuzeichnen, entfernen Sie die Feldauswahl. resources.ARN

    [ { "Name": "web-function-invocations", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::WebFunction"] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:lambda:us-east-1:111122223333:web-function/my-web-app" ] } ] } ]
  3. Wenden Sie den Selektor auf den Trail an:

    aws cloudtrail put-event-selectors \ --trail-name my-trail \ --advanced-event-selectors file://web-function-data-events.json
    Wichtig

    put-event-selectorsersetzt die vorhandenen Event-Selektoren des Trails. Wenn der Trail bereits andere Ereignisse aufzeichnet, fügen Sie deren Selektoren in dieselbe Datei ein.

  4. Rufen Sie den Endpunkt mit einer Testanforderung auf.

  5. Fragen Sie das Ziel des Pfads für eventName = InvokeWebFunctionEndpoint ab. Überprüfen Sie den Funktions-ARN, die Ereigniszeit, die Anforderungs-ID, die für den Authentifizierungspfad verfügbaren Anruferinformationen und alle Felder für bedingte Fehler. Wenn der Selektor funktioniert, gibt die Abfrage ein InvokeWebFunctionEndpoint Ereignis für Ihre Testanforderung zurück, ähnlich dem Beispiel unter. Beispiel: erfolgreicher Aufruf (nicht authentifizierter Anrufer)

Um Datenereignisse stattdessen in einem CloudTrail Lake-Ereignisdatenspeicher aufzuzeichnen, fügen Sie dem Ereignisdatenspeicher dieselben Feldselektoren hinzu. Weitere Informationen finden Sie im AWS CloudTrail -Benutzerhandbuch.

Felder in einem Ereignis InvokeWebFunctionEndpoint

In der folgenden Tabelle werden die Felder in einem InvokeWebFunctionEndpoint Ereignis beschrieben.

Feld Hinweise
eventVersion Die Version des -Ereignisformats.
eventSource Immer lambda.amazonaws.com.
eventName Immer InvokeWebFunctionEndpoint.
eventCategory Immer Data.
eventType Zum Beispiel der EreignistypAwsApiCall.
readOnly Immerfalse, weil ein Aufruf Ihren Funktionscode ausführt.
managementEvent Immer false.
eventTime Datum und Uhrzeit in UTC, an dem Lambda das Ereignis aufgezeichnet hat. Für einen erfolgreichen Aufruf zeichnet Lambda das Ereignis auf, wenn Ihre Funktion ihre Antwort startet, also eventTime kann es später als zu dem Zeitpunkt sein, zu dem die Anfrage eingetroffen ist.
sourceIPAddress Die IP-Adresse, von der die Anforderung erfolgt ist.
userAgent Der Agent, mit dem der Anrufer die Anfrage gestellt hat. Anwesend, wenn der Anrufer einen User-Agent Header sendet.
requestParameters Enthält endpointArn den ARN des aufgerufenen Endpunkts. Die Payload der Anfrage wird nicht protokolliert.
responseElements Immer null.
resources Enthält einen Eintrag mit den accountIdtype, und ARN der Funktion.
additionalEventData Enthält functionRevisionArn den ARN der Revision, die die Anfrage bearbeitet hat. Dieses Feld ist bei jedem Ereignis vorhanden, auch bei Ablehnungen.
tlsDetails Die TLS-Version, die Cipher Suite und der Host-Header der Anfrage.
userIdentity Die Identität des Anrufers. Einzelheiten finden Sie in der folgenden Liste.
sharedEventID Vorhanden CloudTrail , wenn dasselbe Ereignis an mehrere Personen gesendet wird AWS-Konto.
errorCode, errorMessage Nur bei einem Fehlerereignis vorhanden.
requestID, eventID, recipientAccountId, awsRegion CloudTrail Standardfelder, die die Anfrage, das Ereignis, den Empfänger AWS-Konto und den identifizieren AWS-Region.

Web-Funktionsereignisse verwenden die folgenden ARN-Formen:

  • Funktion (resources[].ARN) — arn:aws:lambda:us-east-1:123456789012:web-function/my-fn

  • Endpunkt (requestParameters.endpointArn) — arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint

  • Revision (additionalEventData.functionRevisionArn) — arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c

Das userIdentity Feld hängt davon ab, wie sich der Anrufer authentifiziert hat:

  • Nicht authentifizierte Aufrufe werden mit Typ aufgezeichnet. userIdentity Unknown

  • IAM-authenticated Anrufer werden mit ihrem eigenen Principal protokolliert. Beispielsweise wird ein Anrufer, der temporäre Anmeldeinformationen verwendetAssumedRole, mit den Typen an arn und a angezeigt. sessionContext

  • Das Feld accessKeyId wird nicht gefüllt.

Fehlerereignisse

CloudTrail protokolliert auch Aufrufversuche, die fehlschlagen, nachdem der Anrufer authentifiziert wurde. In der folgenden Tabelle werden diese Fehlerereignisse beschrieben.

Szenario errorCode errorMessage
Der Anrufer ist nicht autorisiert AccessDenied Der Benutzer ist nicht berechtigt, Folgendes auszuführen: lambda:InvokeWebFunctionEndpoint
Anforderungsrate, Parallelität oder vCPU-Limit erreicht (Endpunkt oder Konto) ThrottlingException Quote überschritten.
Dienstfehler ServiceException Servicefehler
Anwendungsfehler oder ungültige Client-Anfrage Nicht zutreffend Wird als erfolgreicher API-Aufruf behandelt. Der Aufruf hat die Funktion erreicht und ausgeführt.

Bei einem erfolgreichen Aufruf gibt es kein Oder. errorCode errorMessage Autorisierungsverweigerungen werden als protokolliert. AccessDenied CloudTrail zeichnet keine Anfragen auf, bei denen die Authentifizierung fehlschlägt, wie Anfragen mit einer fehlenden, falsch formatierten, ungültigen oder abgelaufenen Signatur, und zeichnet keine Anfragen auf, die Lambda vor der Authentifizierung ablehnt, wie Anfragen an einen Endpunkt, dessen rateLimit Wert 0 ist. Ausfälle der internen Authentifizierungsinfrastruktur werden ebenfalls nicht aufgezeichnet. Um einen Anstieg der abgelehnten Anfragen zu erkennen, aktivieren Sie den Alarm HTTPResponseStatusClass4XX im AWS/Lambda/Web Namespace.

Beispiel: erfolgreicher Aufruf (nicht authentifizierter Anrufer)

Das folgende Beispiel zeigt einen erfolgreichen Aufruf durch einen nicht authentifizierten Anrufer.

{ "Records": [ { "eventVersion": "1.11", "userIdentity": { "type": "Unknown" }, "eventTime": "2026-09-22T18:41:07Z", "eventSource": "lambda.amazonaws.com", "eventName": "InvokeWebFunctionEndpoint", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.42", "userAgent": "curl/8.4.0", "requestParameters": { "endpointArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint" }, "responseElements": null, "additionalEventData": { "functionRevisionArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c" }, "requestID": "b1f8a4c2-7e3d-4a19-9f6b-2c5d8e0a1234", "eventID": "d4c3b2a1-5f6e-7a8b-9c0d-1e2f3a4b5c6d", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::Lambda::WebFunction", "ARN": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "bcdfghjklmnpqrst.b7t.lambda-web.us-east-1.on.aws" } } ] }

Bei einem IAM-authenticated Anrufer enthält das userIdentity Feld stattdessen den Principal des Aufrufers, z. B. Typ AssumedRole mit einem arn und einemsessionContext, und die übrigen Felder bleiben unverändert.

Beispiel: Abgelehnter Aufruf

Fehlerereignisse werden übertragen errorCode underrorMessage. Das folgende Beispiel zeigt einen abgelehnten Aufruf.

{ "Records": [ { "eventVersion": "1.11", "userIdentity": { "type": "AssumedRole", "principalId": "ARO01EXAMPLEID:session-name", "arn": "arn:aws:sts::123456789012:assumed-role/app-invoke-role/session-name", "accountId": "123456789012", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "ARO01EXAMPLEID", "arn": "arn:aws:iam::123456789012:role/app-invoke-role", "accountId": "123456789012", "userName": "app-invoke-role" }, "attributes": { "creationDate": "2026-09-22T18:39:55Z", "mfaAuthenticated": "false" } } }, "eventTime": "2026-09-22T18:42:13Z", "eventSource": "lambda.amazonaws.com", "eventName": "InvokeWebFunctionEndpoint", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.42", "userAgent": "aws-sdk-python/1.34.0", "errorCode": "AccessDenied", "errorMessage": "User is not authorized to perform: lambda:InvokeWebFunctionEndpoint", "requestParameters": { "endpointArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint" }, "responseElements": null, "additionalEventData": { "functionRevisionArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c" }, "requestID": "c2e9b5d3-8f4e-4b2a-a07c-3d6e9f1b2345", "eventID": "e5d4c3b2-6a7f-8b9c-0d1e-2f3a4b5c6d7e", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::Lambda::WebFunction", "ARN": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "bcdfghjklmnpqrst.b7t.lambda-web.us-east-1.on.aws" } } ] }

Verwaltungsereignisse in CloudTrail

CloudTrail zeichnet standardmäßig Verwaltungsereignisse für Webfunktionen auf. Sie können die Verwaltungsereignisse der letzten 90 Tage im CloudTrail Event-Verlauf einsehen, ohne eine Spur zu erstellen. Um sie länger zu speichern, erstellen Sie einen Trail- oder CloudTrail Lake-Event-Datenspeicher. Weitere Informationen finden Sie unter Protokollieren von Verwaltungsereignissen im AWS CloudTrail -Benutzerhandbuch.

CloudTrail zeichnet die folgenden Webfunktionsvorgänge als Verwaltungsereignisse auf. Das eventName Feld jedes Ereignisses entspricht dem Operationsnamen.

Ressource oder Aufgabe Operationen
Web-Funktionen CreateWebFunction, GetWebFunction, ListWebFunctions, DeleteWebFunction
Überarbeitungen CreateWebFunctionRevision, GetWebFunctionRevision, ListWebFunctionRevisions, DeleteWebFunctionRevision
Endpunkte CreateWebFunctionEndpoint, GetWebFunctionEndpoint, ListWebFunctionEndpoints, UpdateWebFunctionEndpoint, DeleteWebFunctionEndpoint
Kontoeinstellungen GetWebAccountSettings
Ressourcenrichtlinien PutResourcePolicy, GetResourcePolicy, DeleteResourcePolicy
Tags (Markierungen) TagResource, UntagResource, ListTags

Der Aufruf einer Webfunktion ist eine Operation auf Datenebene. CloudTrail protokolliert ihn nur als Datenereignis, wie unter beschrieben. Datenereignisse der Webfunktion in CloudTrail

Weitere Informationen finden Sie in den folgenden Ressourcen: