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.
Senden von Lambda-Funktionsprotokollen an Amazon S3
Sie können Ihre Lambda-Funktion so konfigurieren, dass Protokolle mithilfe der Lambda-Konsole direkt an Amazon S3 gesendet werden. Dieses Feature bietet eine kostengünstige Lösung für die langfristige Speicherung von Protokollen und ermöglicht leistungsstarke Analyseoptionen mithilfe von Services wie Athena.
Anmerkung
Sie können Lambda-Funktionsprotokolle so konfigurieren, dass sie mit der Lambda-Konsole, AWS CLI AWS CloudFormation, und allen AWS SDKs an Amazon S3 gesendet werden.
Preisgestaltung
Einzelheiten zur Preisgestaltung finden Sie unter Amazon-Preise. CloudWatch
Erforderliche Berechtigungen für das Amazon-S3-Protokollziel
Wenn Sie die Lambda-Konsole verwenden, um Amazon S3 als Protokollziel Ihrer Funktion zu konfigurieren, benötigen Sie Folgendes:
-
Die erforderlichen IAM-Berechtigungen für die Verwendung von CloudWatch Logs mit Lambda.
-
Zu. Richten Sie einen CloudWatch Logs-Abonnementfilter ein, um Lambda-Funktionsprotokolle an Amazon S3 zu senden Dieser Filter definiert, welche Protokollereignisse für Ihren Amazon-S3-Bucket bereitgestellt werden.
Richten Sie einen CloudWatch Logs-Abonnementfilter ein, um Lambda-Funktionsprotokolle an Amazon S3 zu senden
Um CloudWatch Protokolle von Logs an Amazon S3 zu senden, müssen Sie einen Abonnementfilter erstellen. Dieser Filter definiert, welche Protokollereignisse für Ihren Amazon-S3-Bucket bereitgestellt werden. Ihr Amazon-S3-Bucket muss sich in derselben Region befinden wie Ihre Protokollgruppe.
So erstellen Sie einen Abonnementfilter für Amazon S3
-
Erstellen Sie einen Amazon-Simple-Storage-Service-(Amazon S3)-Bucket. Wir empfehlen, einen Bucket zu verwenden, der speziell für CloudWatch Logs erstellt wurde. Wenn Sie jedoch einen vorhandenen Bucket verwenden möchten, gehen Sie direkt zu Schritt 2.
Führen Sie den folgenden Befehl aus, und ersetzen Sie die Platzhalter-Region mit der Region, die Sie verwenden möchten:
aws s3api create-bucket --bucket amzn-s3-demo-bucket2 --create-bucket-configuration LocationConstraint=regionAnmerkung
amzn-s3-demo-bucket2ist ein Beispiel für den Namen eines Amazon-S3-Buckets. Er ist reserviert. Damit dieses Verfahren funktioniert, müssen Sie ihn durch den eindeutigen Namen Ihres Amazon-S3-Buckets ersetzen.Das Folgende ist eine Beispielausgabe:
{ "Location": "/amzn-s3-demo-bucket2" } -
Erstellen Sie die IAM-Rolle, die CloudWatch Logs die Erlaubnis erteilt, Daten in Ihren Amazon S3-Bucket zu speichern. Diese Richtlinie beinhaltet einen „aws: SourceArn global condition“ -Kontextschlüssel, um das verwirrte Sicherheitsproblem „Deputy“ zu vermeiden. Weitere Informationen finden Sie unter Confused-Deputy-Prävention.
-
Verwenden Sie einen Text-Editor zum Erstellen einer Vertrauensrichtlinie in einer Datei
~/TrustPolicyForCWL.jsonwie folgt:{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } }, "Action": "sts:AssumeRole" } } -
Verwenden Sie den Befehl create-role, um die IAM-Rolle zu erstellen und die Datei mit der Vertrauensrichtlinie anzugeben. Notieren Sie sich den zurückgegebenen Role.Arn Wert, da Sie ihn in einem späteren Schritt benötigen:
aws iam create-role \ --role-name CWLtoS3Role \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoS3Role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/CWLtoS3Role" } }
-
-
Erstellen Sie eine Berechtigungsrichtlinie, um zu definieren, welche Aktionen CloudWatch Logs in Ihrem Konto ausführen können. Verwenden Sie zunächst einen Text-Editor zum Erstellen einer Berechtigungsrichtlinie in einer Datei
~/PermissionsForCWL.json:{ "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2/*"] } ] }Verknüpfen Sie die Berechtigungsrichtlinie mit dem folgenden Befehl
put-role-policymit der Rolle:aws iam put-role-policy --role-name CWLtoS3Role --policy-name Permissions-Policy-For-S3 --policy-document file://~/PermissionsForCWL.json -
Erstellen Sie eine
Delivery-Protokollgruppe oder verwenden Sie eine vorhandeneDelivery-Protokollgruppe.aws logs create-log-group --log-group-name my-logs --log-group-class DELIVERY --region REGION_NAME -
PutSubscriptionFilterzum Einrichten des Zielsaws logs put-subscription-filter --log-group-name my-logs --filter-name my-lambda-delivery --filter-pattern "" --destination-arn arn:aws:s3:::amzn-s3-demo-bucket2 --role-arn arn:aws:iam::123456789012:role/CWLtoS3Role --region REGION_NAME
Senden von Lambda-Funktionsprotokollen an Amazon S3
In der Lambda-Konsole können Sie Funktionsprotokolle direkt an Amazon S3 senden, nachdem Sie eine neue Funktion erstellt haben. Führen Sie dazu diese Schritte aus:
-
Melden Sie sich bei der AWS Management Console an und öffnen Sie die Lambda-Konsole.
-
Wählen Sie den Namen Ihrer Funktion.
-
Wählen Sie die Registerkarte Konfiguration aus.
-
Wählen Sie die Registerkarte Überwachungs- und Betriebs-Tools aus.
-
Wählen Sie im Abschnitt „Protokollierungskonfiguration“ die Option Bearbeiten aus.
-
Wählen Sie im Abschnitt „Protokollinhalt“ ein Protokollformat aus.
-
Führen Sie im Abschnitt „Protokollziel“ die folgenden Schritte aus:
-
Wählen Sie einen Zielservice aus.
-
Wählen Sie Neue Protokollgruppe erstellen oder Vorhandene Protokollgruppe aus.
Anmerkung
Wenn Sie eine vorhandene Protokollgruppe für ein Amazon-S3-Ziel auswählen, stellen Sie sicher, dass es sich bei der ausgewählten Protokollgruppe um einen
Delivery-Protokollgruppentyp handelt. -
Wählen Sie einen Amazon-S3-Bucket als Zielort für Ihre Funktionsprotokolle.
-
Die CloudWatch
DeliveryProtokollgruppe wird angezeigt.
-
-
Wählen Sie Speichern.
Anmerkung
Wenn die in der Konsole bereitgestellte IAM-Rolle nicht über die erforderlichen Berechtigungen verfügt, schlägt das Ziel-Setup fehl. Informationen zur Behebung dieses Problems finden Sie unter Erforderliche Berechtigungen für das Amazon-S3-Protokollziel.
Cross-Account Protokollierung
Sie können Lambda so konfigurieren, dass Protokolle in einem anderen AWS Konto an einen Amazon S3-Bucket gesendet werden. Dies erfordert die Einrichtung eines Ziels und die Konfiguration der entsprechenden Berechtigungen in beiden Konten.
Eine ausführliche Anleitung zur Einrichtung der kontoübergreifenden Protokollierung, einschließlich der erforderlichen IAM-Rollen und -Richtlinien, finden Sie in der Logs-Dokumentation unter Ein neues kontoübergreifendes Abonnement einrichten. CloudWatch