Protokollieren von AWS Lambda-API-Aufrufen mithilfe von 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 AWS Lambda-API-Aufrufen mithilfe von AWS CloudTrail

AWS Lambda ist in AWS CloudTrail integriert, einem Service, der eine Aufzeichnung der Aktionen bereitstellt, die von einem Benutzer, einer Rolle oder einem AWS-Service ausgeführt werden. CloudTrail erfasst API-Aufrufe für Lambda als Ereignisse. Zu den erfassten Aufrufen gehören Aufrufe über die Lambda-Konsole und Codeaufrufe der Lambda-API-Operationen. Mit den von CloudTrail erfassten Informationen können Sie die an Lambda gestellte Anfrage, die IP-Adresse, von der die Anfrage gestellt wurde, den Initiator der Anfrage, den Zeitpunkt der Anfrage und zusätzliche Details bestimmen.

Jeder Ereignis- oder Protokolleintrag enthält Informationen zu dem Benutzer, der die Anforderung generiert hat. Die Identitätsinformationen unterstützen Sie bei der Ermittlung der folgenden Punkte:

  • Ob die Anfrage mit Anmeldeinformationen des Root-Benutzers oder des Benutzers gestellt wurde.

  • Ob die Anforderung im Namen eines IAM-Identity-Center-Benutzers erstellt wurde.

  • Gibt an, ob die Anforderung mit temporären Sicherheitsanmeldeinformationen für eine Rolle oder einen Verbundbenutzer gesendet wurde.

  • Ob die Anforderung aus einem anderen AWS-Service gesendet wurde.

Bei Kontoerstellung ist CloudTrail standardmäßig in AWS-Konto aktiviert und Sie haben automatisch Zugriff auf den CloudTrail-Ereignisverlauf. Der CloudTrail-Ereignisverlauf stellt eine anzeigbare, durchsuchbare, herunterladbare und unveränderliche Aufzeichnung der Verwaltungsereignisse der letzten 90 Tage in einer AWS-Region bereit. Weitere Informationen finden Sie unter Arbeiten mit dem CloudTrail-Ereignisverlauf im AWS CloudTrail-Benutzerhandbuch. Für die Anzeige des Eventverlaufs fallen keine CloudTrail-Gebühren an.

Um Aktivitäten und Ereignisse in Ihrem AWS-Konto fortlaufend aufzuzeichnen, erstellen Sie einen Ereignisdatenspeicher von CloudTrail Lake oder einen Trail.

CloudTrail-Trails

Ein Trail ermöglicht es CloudTrail, Protokolldateien in einem Amazon-S3-Bucket bereitzustellen. Alle Trails, die mit der AWS Management Console erstellt wurden, sind multiregional. Sie können mithilfe der AWS CLI einen Einzel-Region- oder einen Multi-Region-Trail erstellen. Das Erstellen eines Trails mit mehreren Regionen wird als bewährte Methode empfohlen, da Sie Aktivitäten in allen AWS-Regionen in Ihrem Konto erfassen. Wenn Sie einen Einzel-Region-Trail erstellen, können Sie nur die Ereignisse anzeigen, die in der AWS-Region des Trails protokolliert wurden. Weitere Informationen zu Trails finden Sie unter Erstellen eines Trails für Ihr AWS-Konto und Erstellen eines Trails für eine Organisation im AWS CloudTrail-Benutzerhandbuch.

Sie können eine Kopie Ihrer laufenden Verwaltungsereignisse kostenlos von CloudTrail an Ihren Amazon-S3-Bucket senden, indem Sie einen Trail erstellen. Es fallen jedoch Speichergebühren für Amazon S3 an. Weitere Informationen zu CloudTrail-Preisen finden Sie unter AWS CloudTrail – Preise. Informationen zu Amazon-S3-Preisen finden Sie unter Amazon S3-Preise.

CloudTrail-Lake-Ereignisdatenspeicher

Mit CloudTrail Lake können Sie SQL-basierte Abfragen zu Ihren Ereignissen ausführen. CloudTrail Lake konvertiert vorhandene Ereignisse im zeilenbasierten JSON-Format in das Apache ORC-Format. ORC ist ein spaltenförmiges Speicherformat, das für den schnellen Abruf von Daten optimiert ist. Die Ereignisse werden in Ereignisdatenspeichern zusammengefasst, bei denen es sich um unveränderliche Sammlungen von Ereignissen handelt, die auf Kriterien basieren, die Sie mit Hilfe von erweiterten Ereignisselektoren auswählen. Die Selektoren, die Sie auf einen Ereignisdatenspeicher anwenden, steuern, welche Ereignisse bestehen bleiben und für Sie zur Abfrage verfügbar sind. Weitere Informationen zu CloudTrail Lake finden Sie unter Arbeiten mit AWS CloudTrail-Lake im AWS CloudTrail-Benutzerhandbuch.

Für CloudTrail-Lake-Ereignisdatenspeicher und -abfragen fallen Gebühren an. Beim Erstellen eines Ereignisdatenspeichers wählen Sie die Preisoption aus, die für den Ereignisdatenspeicher genutzt werden soll. Die Preisoption bestimmt die Kosten für die Erfassung und Speicherung von Ereignissen sowie die standardmäßige und maximale Aufbewahrungsdauer für den Ereignisdatenspeicher. Weitere Informationen zu CloudTrail-Preisen finden Sie unter AWS CloudTrail – Preise.

Lambda-Datenereignisse in CloudTrail

Datenereignisse liefern Informationen über die Ressourcenoperationen, die auf oder in einer Ressource ausgeführt werden (z. B. Lesen oder Schreiben in ein Amazon-S3-Objekt). Sie werden auch als Vorgänge auf Datenebene bezeichnet. Datenereignisse sind oft Aktivitäten mit hohem Volume. Standardmäßig protokolliert CloudTrail die meisten Datenereignisse nicht und der CloudTrail-Ereignisverlauf zeichnet sie nicht auf.

Ein CloudTrail-Datenereignis, das standardmäßig für unterstützte Dienste protokolliert wird, ist LambdaESMDisabled. Weitere Informationen zur Verwendung dieses Ereignisses zur Behebung von Problemen mit Lambda-Zuordnungen von Ereignisquellen finden Sie unter Verwenden von CloudTrail zur Problembehandlung deaktivierter Lambda-Ereignisquellen.

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

Sie können Datenereignisse für den Ressourcentyp AWS::Lambda::Function über die CloudTrail-Konsole, AWS CLI oder CloudTrail-API-Vorgänge protokollieren. Weitere Informationen zum Protokollieren von Datenereignissen finden Sie unter Protokollieren von Datenereignissen mit dem AWS Management Console und Protokollieren von Datenereignissen mit dem AWS Command Line Interface im AWS CloudTrail-Benutzerhandbuch.

In der folgenden Tabelle ist der Lambda-Ressourcentyp aufgeführt, für die Sie Datenereignisse protokollieren können. In der Spalte Datenereignistyp (Konsole) wird der Wert angezeigt, der in der CloudTrail-Konsole aus der Liste Datenereignistyp ausgewählt werden kann. In der Wertspalte resources.type wird der resources.type Wert angezeigt, den Sie angeben würden, wenn Sie erweiterte Event-Selektoren mithilfe der APIs AWS CLI oder CloudTrail konfigurieren würden. In der Spalte Daten-APIs, die in CloudTrail protokolliert wurden, werden die API-Aufrufe angezeigt, die für den Ressourcentyp in CloudTrail protokolliert wurden.

Typ des Datenereignisses (Konsole) resources.type-Wert Bei CloudTrail protokollierte Daten-APIs
Lambda AWS::Lambda::Function

Aufrufen

Sie können erweiterte Event-Selektoren so konfigurieren, dass sie nach den Feldern eventName, readOnly und resources.ARN filtern, sodass nur die Ereignisse protokolliert werden, die für Sie wichtig sind. Das folgende Beispiel ist die JSON-Ansicht einer Datenereigniskonfiguration, die nur Ereignisse für eine bestimmte Funktion protokolliert. Weitere Informationen zu diesen Kontingenten finden Sie unter AdvancedFieldSelector in derAWS CloudTrail-API-Referenz.

[ { "name": "function-invokes", "fieldSelectors": [ { "field": "eventCategory", "equals": [ "Data" ] }, { "field": "resources.type", "equals": [ "AWS::Lambda::Function" ] }, { "field": "resources.ARN", "equals": [ "arn:aws:lambda:us-east-1:111122223333:function:hello-world" ] } ] } ]

Lambda-Verwaltungsereignisse in CloudTrail

Verwaltungsereignisse liefern Informationen zu Verwaltungsvorgängen, die für Ressourcen in Ihrem AWS-Konto ausgeführt werden. Sie werden auch als Vorgänge auf Steuerebene bezeichnet. CloudTrail protokolliert standardmäßig Verwaltungsereignisse.

Lambda unterstützt die Protokollierung der folgenden Aktionen als Verwaltungsereignisse in CloudTrail-Protokolldateien.

Anmerkung

In der CloudTrail-Protokolldatei kann das eventName zwar Datums- und Versionsinformationen enthalten, aber es bezieht sich immer noch auf dieselbe öffentliche API-Aktion. Zum Beispiel erscheint die Aktion GetFunction als GetFunction20150331v2. Der folgende Liste gibt an, wann sich der Ereignisname vom API-Aktionsnamen unterscheidet.

Verwenden von CloudTrail zur Problembehandlung deaktivierter Lambda-Ereignisquellen

Wenn Sie den Status einer Zuordnung von Ereignisquellen mithilfe der API-Aktion UpdateEventSourceMapping ändern, wird der API-Aufruf als Verwaltungsereignis in CloudTrail protokolliert. Zuordnungen von Ereignisquellen können aufgrund von Fehlern auch direkt in den Disabled-Status übergehen.

Für die folgenden Dienste veröffentlicht Lambda das LambdaESMDisabled-Datenereignis in CloudTrail, wenn Ihre Ereignisquelle in den Status Deaktiviert übergeht:

  • Amazon-Simple-Queue-Service (Amazon SQS)

  • Amazon-DynamoDB

  • Amazon Kinesis

Lambda unterstützt dieses Ereignis nicht für andere Ereignisquellen-Zuordnungstypen.

Um Warnungen zu erhalten, wenn Zuordnungen von Ereignisquellen für unterstützte Services in den Disabled-Status übergehen, richten Sie einen Alarm in Amazon CloudWatch ein, indem Sie das LambdaESMDisabled-CloudTrail-Ereignis verwenden. Um mehr über das Einrichten eines CloudWatch-Alarms zu erfahren, siehe Erstellen von CloudWatch-Alarmen für CloudTrail-Ereignisse: Beispiele.

Die serviceEventDetails-Entität in der LambdaESMDisabled-Ereignismeldung enthält einen der folgenden Fehlercodes.

RESOURCE_NOT_FOUND

Die in der Anforderung angegebene Ressource ist nicht vorhanden.

FUNCTION_NOT_FOUND

Die an die Ereignisquelle angefügte Funktion ist nicht vorhanden.

REGION_NAME_NOT_VALID

Ein Regionsname, der der Ereignisquelle oder -funktion zur Verfügung gestellt wird, ist ungültig.

AUTHORIZATION_ERROR

Es wurden keine Berechtigungen festgelegt oder sie wurden falsch konfiguriert.

FUNCTION_IN_FAILED_STATE

Der Funktionscode wird nicht kompiliert, hat eine nicht wiederherstellbare Ausnahme festgestellt oder eine fehlerhafte Bereitstellung ist aufgetreten.

Beispiele für Lambda-Ereignisse

Ein Ereignis stellt eine einzelne Anforderung aus einer beliebigen Quelle dar und enthält Informationen über die angeforderte API-Aktion, das Datum und die Uhrzeit der Operation, Anforderungsparameter usw. CloudTrail-Protokolldateien sind kein geordnetes Stack-Trace der öffentlichen API-Aufrufe und Ereignisse und erscheinen daher in keiner bestimmten Reihenfolge.

Das folgende Beispiel zeigt den CloudTrail-Protokolleintrag für die Aktionen , GetFunction und DeleteFunction.

Anmerkung

Die eventName kann Datums- und Versionsinformationen enthalten, wie z. B. die "GetFunction20150331", aber sie bezieht sich immer noch auf dieselbe öffentliche API.

{ "Records": [ { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:03:36Z", "eventSource": "lambda.amazonaws.com", "eventName": "GetFunction", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "errorCode": "AccessDenied", "errorMessage": "User: arn:aws:iam::111122223333:user/myUserName is not authorized to perform: lambda:GetFunction on resource: arn:aws:lambda:us-west-2:111122223333:function:other-acct-function", "requestParameters": null, "responseElements": null, "requestID": "7aebcd0f-cda1-11e4-aaa2-e356da31e4ff", "eventID": "e92a3e85-8ecd-4d23-8074-843aabfe89bf", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:04:42Z", "eventSource": "lambda.amazonaws.com", "eventName": "DeleteFunction20150331", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "requestParameters": { "functionName": "basic-node-task" }, "responseElements": null, "requestID": "a2198ecc-cda1-11e4-aaa2-e356da31e4ff", "eventID": "20b84ce5-730f-482e-b2b2-e8fcc87ceb22", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }

Informationen zu den Inhalten von CloudTrail-Datensätzen finden Sie unter CloudTrail-Datensatzinhalte im AWS CloudTrail-Benutzerhandbuch.