View a markdown version of this page

Bereitstellung von Serverzugriffsprotokollen an CloudWatch Logs - Amazon Simple Storage Service

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.

Bereitstellung von Serverzugriffsprotokollen an CloudWatch Logs

Sie können Amazon S3 S3-Serverzugriffsprotokolle an eine Logs-Protokollgruppe CloudWatch senden, indem Sie die von Amazon CloudWatch Logs angebotene Protokollzustellung verwenden. Sobald sich die CloudWatch Protokolle in Logs befinden, können Sie sie mit CloudWatch Logs Insights abfragen, sie über Konten und Regionen hinweg aggregieren, mit AWS Key Management Service (AWS KMS) verschlüsseln und sie optional für SQL-Analysen an Amazon S3 S3-Tabellen im Apache Iceberg-Format liefern. Sie können Protokolle auch im JSON- oder Apache Parquet-Format an Amazon S3 senden oder sie über Amazon Data Firehose weiterleiten.

Sie konfigurieren die Lieferung mithilfe von CloudWatch Logs-APIs, nicht mit Amazon S3 S3-APIs. Sie geben eine Protokollgruppe für jeden Quell-Bucket an. Mehrere Buckets können dieselbe Protokollgruppe gemeinsam nutzen, oder jeder Bucket kann an seinen eigenen Bucket liefern.

Tipp

Sie können mehrere Ziele für denselben Bucket einrichten. Sie können beispielsweise für interaktive Abfragen an eine CloudWatch Logs-Protokollgruppe liefern und gleichzeitig im Parquet-Format an Amazon S3 liefern, um eine langfristige Aufbewahrung zu geringeren Kosten zu ermöglichen.

Anmerkung

CloudWatch Logs vended log delivery unterstützt auch Amazon Data Firehose und Amazon S3 als Lieferziele, einschließlich des Apache Parquet-Ausgabeformats. Diese Seite behandelt das Ziel der CloudWatch Logs-Protokollgruppe, das auch die S3-Tabelles-Integration für SQL-Analysen unterstützt. Informationen zu Firehose- und Amazon S3 S3-Zielen finden Sie unter Aktivieren der Protokollierung von AWS Diensten im Amazon CloudWatch Logs-Benutzerhandbuch.

Anmerkung

Informationen darüber, wie Serverzugriffsprotokolle stattdessen an einen Amazon S3 S3-Allzweck-Bucket gesendet werden, finden Sie unterAktivieren Sie die Amazon-S3-Server-Zugriffsprotokollierung.

Voraussetzungen

Bevor Sie die Lieferung einrichten, benötigen Sie Folgendes:

  • Ein Amazon S3 S3-Allzweck-Bucket (der Quell-Bucket, den Sie protokollieren möchten).

  • Eine CloudWatch Logs-Protokollgruppe im selben Verzeichnis AWS-Region wie der Quell-Bucket.

  • IAM-Berechtigungen für den Anrufer. Sie benötigen mindestens die folgenden Berechtigungen:

    • logs:PutDeliverySource

    • logs:PutDeliveryDestination

    • logs:CreateDelivery

    • s3:AllowVendedLogDeliveryForResource(im Quell-Bucket)

    Wenn Sie die Integration von S3 Tables aktivieren möchten, benötigen Sie außerdem:

    • observabilityadmin:CreateS3TableIntegration

    • logs:AssociateSourceToS3TableIntegration

    • s3tables:CreateTableBucket

    • s3tables:PutTableBucketEncryption

    • s3tables:PutTableBucketPolicy

Lieferung einrichten (AWS CLI)

Führen Sie die folgenden drei Schritte aus AWS Command Line Interface, um die Übermittlung von CloudWatch Serverzugriffsprotokollen an Logs mithilfe von einzurichten.

  1. Erstellen Sie eine Zustellungsquelle. Dadurch wird Ihr Amazon S3 S3-Bucket als Protokollquelle bei CloudWatch Logs registriert.

    aws logs put-delivery-source \ --name my-sal-source \ --resource-arn arn:aws:s3:::my-bucket \ --log-type S3_SERVER_ACCESS_LOGS
  2. Erstellen Sie ein Lieferziel. Dies gibt die Protokollgruppe „ CloudWatch Protokolle“ an, in die die Protokolle übermittelt werden.

    aws logs put-delivery-destination \ --name my-sal-destination \ --delivery-destination-configuration '{"destinationResourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:my-sal-logs"}'
  3. Erstellen Sie eine Lieferung. Dadurch wird die Quelle mit dem Ziel verknüpft und die Protokollzustellung gestartet.

    aws logs create-delivery \ --delivery-source-name my-sal-source \ --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:my-sal-destination

Nachdem Sie diese Schritte abgeschlossen haben, beginnt Amazon S3 mit der Übermittlung von Serverzugriffsprotokollen an Ihre Protokollgruppe CloudWatch Logs. Die Übertragung der Konfiguration dauert 15—20 Minuten. Nach der Propagierung beginnt die Protokollzustellung in der Regel innerhalb weniger Stunden. Nur neue Anfragen werden protokolliert — es erfolgt kein Nachfüllen historischer Daten.

Versand einrichten (Amazon S3 S3-Konsole)

  1. Melden Sie sich bei der Amazon S3 S3-Konsole unter an https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Buckets aus.

  3. Wählen Sie den Namen des Quell-Buckets, für den Sie die Protokollierung aktivieren möchten.

  4. Wählen Sie die Registerkarte Eigenschaften aus.

  5. Wählen Sie im Abschnitt Übermittlung von CloudWatch Serverzugriffsprotokollen an Protokolle die Option Bearbeiten aus.

  6. Wählen Sie Enable (Aktivieren) aus.

  7. Wählen oder erstellen Sie eine CloudWatch Logs-Protokollgruppe als Übermittlungsziel.

  8. (Optional) Um Protokolle im Apache Iceberg-Format an S3-Tabellen zu übermitteln, wählen Sie S3-Tabellenintegration aktivieren aus.

  9. Wählen Sie Änderungen speichern aus.

Nach dem Speichern wird im Abschnitt Übertragung des CloudWatch Serverzugriffsprotokolls an Logs die aktivierte Protokollgruppe angezeigt.

Versand einrichten (CloudFormation)

Sie können AWS CloudFormation es verwenden, um die Einrichtung der Übermittlung von Serverzugriffsprotokollen an CloudWatch Logs zu automatisieren. Mit der folgenden Vorlage werden die erforderlichen Ressourcen erstellt: eine IAM-Rolle, eine CloudWatch Protokollgruppe, eine Zustellungsquelle, ein Übermittlungsziel und eine Zustellung.

AWSTemplateFormatVersion: '2010-09-09' Description: S3 Access Logs delivery to CloudWatch Logs Parameters: SourceBucketArn: Type: String Description: ARN of the S3 bucket to enable access logging LogGroupName: Type: String Default: /aws/s3/access-logs Description: CloudWatch Log Group name for SAL delivery Resources: SALLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Ref LogGroupName RetentionInDays: 180 SALDeliverySource: Type: AWS::Logs::DeliverySource Properties: Name: !Sub '${AWS::StackName}-sal-source' ResourceArn: !Ref SourceBucketArn LogType: S3_SERVER_ACCESS_LOGS SALDeliveryDestination: Type: AWS::Logs::DeliveryDestination Properties: Name: !Sub '${AWS::StackName}-sal-destination' DestinationResourceArn: !GetAtt SALLogGroup.Arn SALDelivery: Type: AWS::Logs::Delivery Properties: DeliverySourceName: !Ref SALDeliverySource DeliveryDestinationArn: !GetAtt SALDeliveryDestination.Arn

Aktivierung der Integration von S3-Tabellen (optional)

Wenn Sie die S3-Tabelles-Integration aktivieren, CloudWatch übermittelt Logs Ihre Serverzugriffsprotokolle automatisch im Apache Iceberg-Format an den aws-cloudwatch verwalteten Tabellen-Bucket in Ihrem Konto. Sie können diese Daten dann mit Amazon Athena, Amazon Redshift oder einem anderen Iceberg-compatible Tool abfragen.

Bei der Integration von S3 Tables fallen keine zusätzlichen Gebühren für Speicher oder Tabellenverwaltung an. Sie zahlen nur für die Aufnahme von CloudWatch Protokollen und für Abfrageanfragen zum Preis von S3 Tables.

  1. Erstellen Sie die S3-Tabelles-Integration (einmal pro Konto pro Region).

    aws observabilityadmin create-s3-table-integration \ --role-arn arn:aws:iam::123456789012:role/CWLogsS3TableIntegrationRole \ --encryption '{"SseAlgorithm": "AES256"}'

    Die IAM-Rolle muss dem logs.amazonaws.com Dienstprinzipal vertrauen und die logs:integrateWithS3Table Erlaubnis erteilen. Im Folgenden finden Sie ein Beispiel für eine Vertrauensrichtlinie:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name" } } } ] }

    Die Rolle benötigt außerdem die folgende Berechtigungsrichtlinie:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:integrateWithS3Table", "Resource": "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name", "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }
  2. Ordnen Sie Ihre Lieferquelle der Integration zu.

    aws logs associate-source-to-s3-table-integration \ --integration-arn integration-arn \ --data-source '{"name":"amazon_s3","type":"server_access"}'

Nach diesen Schritten erstellt CloudWatch Logs den aws-cloudwatch verwalteten Tabellen-Bucket und beginnt mit der Bereitstellung von Protokollen im Iceberg-Format. Daten werden in der Regel innerhalb einer Stunde nach der ersten Übermittlung an CloudWatch Logs angezeigt.

Hinweise zur Abfrage der Integration von S3-Tabellen finden Sie unterAbfragen von Zugriffsprotokollen in S3-Tabellen.

Cross-account und regionsübergreifende Aggregation

Der CloudWatch Logs-Bereitstellungspfad unterstützt die konto- und regionsübergreifende Protokollaggregation mit zwei Optionen:

  • CloudWatch Durch die kontenübergreifende Beobachtbarkeit können Sie vorhandene Logs kontenübergreifend abfragen, ohne Daten kopieren zu müssen.

  • CloudWatch Durch die Zentralisierung von Protokollen können Sie Protokolle aus mehreren Konten und Regionen in einer zentralen Protokollgruppe zusammenfassen und optional Abonnementfilter für die selektive Weiterleitung verwenden.

Bei Konfigurationen mit mehreren Konten können Administratoren die Aktivierungsregeln der CloudWatch Telemetriekonfiguration verwenden, um die automatische Übermittlung von Serverzugriffsprotokollen für mehrere Mitgliedskonten AWS Organizations zu aktivieren.

Anmerkung

Aktivierungsregeln unterstützen derzeit keine automatische Aktivierung der Integration von S3 Tables. Sie müssen die Integration in jedem Konto separat aktivieren.

Verschlüsselung

Sie können Serverzugriffsprotokolle, die an Logs übermittelt werden, CloudWatch verschlüsseln, indem Sie die AWS KMS Verschlüsselung für Ihre Protokollgruppe konfigurieren. Wenn Serverzugriffsprotokolle an diese Protokollgruppe übermittelt werden, werden sie mit Ihrem AWS KMS Schlüssel verschlüsselt. Dies behebt eine wichtige Einschränkung des Amazon S3 S3-Allzweck-Bucket-Lieferpfads, der nur SSE-S3 Verschlüsselung unterstützt.

Wenn Sie die Integration von S3 Tables mit einer AWS KMS-verschlüsselten Protokollgruppe aktivieren, müssen Sie den folgenden Service-Principals zusätzliche Berechtigungen in Ihrer AWS KMS Schlüsselrichtlinie gewähren:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableCWSystemTablesKeyUsage", "Effect": "Allow", "Principal": { "Service": "systemtables.cloudwatch.amazonaws.com" }, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "EnableS3TablesMaintenanceKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": "table-bucket-arn/*" } } } ] }

Der systemtables.cloudwatch.amazonaws.com Principal wird von CloudWatch Logs verwendet, um Protokolle in S3-Tabellen zu schreiben. Der maintenance.s3tables.amazonaws.com Principal wird von S3 Tables für Iceberg-Operationen wie Verdichtung verwendet.

Die Lieferung wird deaktiviert

Um die Übermittlung von Serverzugriffsprotokollen an CloudWatch Logs zu beenden, können Sie die Lieferung oder die Zustellungsquelle löschen:

  • Versand löschen — Stoppt die Protokollzustellung, die Konfiguration der Zustellungsquelle bleibt jedoch erhalten. Sie können später eine neue Lieferung erstellen, ohne die Quelle neu zu konfigurieren.

    aws logs delete-delivery \ --id delivery-id
  • Die Versandquelle löschen — entfernt die Quellkonfiguration vollständig. Verwenden Sie diese Option, wenn Sie nicht mehr möchten, dass der Bucket mit der CloudWatch Protokollzustellung verknüpft wird.

    aws logs delete-delivery-source \ --name delivery-source-name

Zuvor zugestellte Protokolle verbleiben in der Protokollgruppe und in der S3-Tabellenintegration (falls aktiviert). Durch das Löschen der Lieferung werden keine vorhandenen Protokolldaten entfernt.