Exportieren Sie Protokolldaten nach Amazon S3 mit dem AWS CLI - CloudWatch Amazon-Protokolle

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.

Exportieren Sie Protokolldaten nach Amazon S3 mit dem AWS CLI

Im folgenden Beispiel verwenden Sie eine Exportaufgabe, um alle Daten aus einer CloudWatch Logs-Protokollgruppe mit dem Namen in einen Amazon S3 S3-Bucket mit dem Namen my-log-group zu exportierenmy-exported-logs. In diesem Beispiel wird davon ausgegangen, dass Sie bereits eine Protokollgruppe namens my-log-group erstellt haben.

Das Exportieren von Protokolldaten in S3-Buckets, die verschlüsselt sind, AWS KMS wird unterstützt. Der Export in Buckets, die mit DSSE-KMS verschlüsselt sind, wird nicht unterstützt.

Wie Sie den Export im Detail einrichten, hängt davon ab, ob sich der Amazon-S3-Bucket, in den Sie exportieren möchten, im selben Konto wie die zu exportierenden Protokolle befindet oder in einem anderen Konto.

Export im selben Konto

Wenn sich der Amazon-S3-Bucket im selben Konto befindet wie die zu exportierenden Protokolle, verwenden Sie die Anweisungen in diesem Abschnitt.

Schritt 1: Einen S3-Bucket erstellen

Wir empfehlen, dass Sie einen Bucket verwenden, der speziell für CloudWatch Logs erstellt wurde. Wenn Sie jedoch einen vorhandenen Bucket verwenden möchten, gehen Sie direkt zu Schritt 2.

Anmerkung

Der S3-Bucket muss sich in derselben Region befinden wie die zu exportierenden Protokolldaten. CloudWatch Logs unterstützt den Export von Daten in S3-Buckets in einer anderen Region nicht.

Um einen S3-Bucket mit dem zu erstellen AWS CLI

Führen Sie an der Eingabeaufforderung den Befehl create-bucket aus, wobei LocationConstraint die Region ist, in der Sie Protokolldaten exportieren.

aws s3api create-bucket --bucket my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

Es folgt eine Beispielausgabe.

{ "Location": "/my-exported-logs" }

Schritt 2: Einrichten von Zugriffsberechtigungen

Um die Exportaufgabe in Schritt 5 erstellen zu können, müssen Sie mit der IAM-Rolle AmazonS3ReadOnlyAccess und den folgenden Berechtigungen angemeldet sein:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:

Schritt 3: Festlegen von Berechtigungen für einen S3-Bucket

Standardmäßig werden alle S3-Buckets und -Objekte als privat eingestuft. Nur der Ressourceneigentümer, das Konto, in dem der Bucket erstellt wurde, kann auf den Bucket und alle darin enthaltenen Objekte zugreifen. Der Ressourcenbesitzer kann jedoch anderen Ressourcen und Benutzern Zugriffsberechtigungen gewähren, indem er eine Zugriffsrichtlinie schreibt.

Wichtig

Um Exporte in S3-Buckets sicherer zu machen, müssen Sie jetzt die Liste der Quellkonten angeben, die Protokolldaten in Ihren S3-Bucket exportieren dürfen.

Im folgenden Beispiel entspricht die Liste der Konten IDs im aws:SourceAccount Schlüssel den Konten, von denen ein Benutzer Protokolldaten in Ihren S3-Bucket exportieren kann. Der Schlüssel aws:SourceArn ist die Ressource, für die die Aktion ausgeführt wird. Sie können dies auf eine bestimmte Protokollgruppe beschränken oder einen Platzhalter verwenden, wie in diesem Beispiel zu sehen.

Wir empfehlen, dass Sie auch die Konto-ID des Kontos angeben, in dem der S3-Bucket erstellt wurde, um den Export innerhalb desselben Kontos zu ermöglichen.

So legen Sie Berechtigungen für einen S3-Bucket fest
  1. Erstellen Sie eine Datei mit dem Namen policy.json und fügen Sie die folgende Zugriffsrichtlinie hinzu. Ändern Sie dabei my-exported-logs in den Namen Ihres S3-Bucket und Principal in den Endpunkt der Region, in der Sie Protokolldaten exportieren (beispielsweise us-west-1). Verwenden Sie einen Text-Editor, um diese Richtliniendatei zu erstellen. Verwenden Sie nicht die IAM-Konsole.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } } ] }
  2. Legen Sie die Richtlinie, die Sie gerade hinzugefügt haben, mithilfe des put-bucket-policyBefehls als Zugriffsrichtlinie für Ihren Bucket fest. Diese Richtlinie ermöglicht CloudWatch Logs, Protokolldaten in Ihren S3-Bucket zu exportieren. Der Bucket-Eigentümer hat vollen Zugriff auf alle exportierten Objekte.

    aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
    Warnung

    Wenn mit dem vorhandenen Bucket bereits eine oder mehrere Richtlinien verknüpft sind, fügen Sie die Anweisungen für den Zugriff auf CloudWatch Logs zu dieser Richtlinie oder diesen Richtlinien hinzu. Sie sollten eine Beurteilung der daraus resultierenden Berechtigungen vornehmen, um sicherzustellen, dass sie für die Benutzer, die auf den Bucket zugreifen werden, geeignet sind.

(Optional) Schritt 4: Export in einen mit SSE-KMS verschlüsselten Bucket

Dieser Schritt ist nur erforderlich, wenn Sie in einen S3-Bucket exportieren, der serverseitige Verschlüsselung mit AWS KMS keys verwendet. Diese Verschlüsselung wird als SSE-KMS bezeichnet.

So exportieren Sie in einen mit SSE-KMS verschlüsselten Bucket
  1. Verwenden Sie einen Texteditor, um eine Datei mit dem Namen key_policy.json zu erstellen und die folgende Zugriffsrichtlinie hinzuzufügen. Wenn Sie die Richtlinie hinzufügen, nehmen Sie die folgenden Änderungen vor:

    • RegionErsetzen Sie es durch die Region Ihrer Logs.

    • account-ARNErsetzen Sie ihn durch den ARN des Kontos, dem der KMS-Schlüssel gehört.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" } ] }
  2. Geben Sie den folgenden Befehl ein:

    aws kms create-key --policy file://key_policy.json

    Das Folgende ist eine Beispielausgabe aus diesem Befehl:

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-2:account_id:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false }
  3. Erstellen Sie mithilfe eines Texteditors eine Datei mit dem Namen bucketencryption.json mit folgenden Inhalten.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Geben Sie den folgenden Befehl ein und bucket-name ersetzen Sie ihn durch den Namen des Buckets, in den Sie Protokolle exportieren.

    aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration file://bucketencryption.json

    Wenn der Befehl keinen Fehler zurückgibt, ist der Vorgang erfolgreich abgeschlossen.

Schritt 5: Erstellen einer Exportaufgabe

Verwenden Sie den folgenden Befehl, um die Exportaufgabe zu erstellen. Nach der Erstellung kann der Exportvorgang von einigen Sekunden bis zu einigen Stunden dauern. Dies ist abhängig von der Größe der zu exportierenden Daten.

Um Daten nach Amazon S3 zu exportieren, verwenden Sie AWS CLI
  1. Melden Sie sich mit ausreichenden Berechtigungen an, wie unter Schritt 2: Einrichten von Zugriffsberechtigungen dokumentiert.

  2. Verwenden Sie in einer Befehlszeile den folgenden create-export-taskBefehl, um die Exportaufgabe zu erstellen.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "my-exported-logs" --destination-prefix "export-task-output"

    Es folgt eine Beispielausgabe.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }

Kontenübergreifender Export

Wenn sich der Amazon-S3-Bucket in einem anderen Konto befindet als die zu exportierenden Protokolle, verwenden Sie die Anweisungen in diesem Abschnitt.

Schritt 1: Einen S3-Bucket erstellen

Wir empfehlen, dass Sie einen Bucket verwenden, der speziell für CloudWatch Logs erstellt wurde. Wenn Sie jedoch einen vorhandenen Bucket verwenden möchten, gehen Sie direkt zu Schritt 2.

Anmerkung

Der S3-Bucket muss sich in derselben Region befinden wie die zu exportierenden Protokolldaten. CloudWatch Logs unterstützt den Export von Daten in S3-Buckets in einer anderen Region nicht.

Um einen S3-Bucket mit dem zu erstellen AWS CLI

Führen Sie an der Eingabeaufforderung den Befehl create-bucket aus, wobei LocationConstraint die Region ist, in der Sie Protokolldaten exportieren.

aws s3api create-bucket --bucket my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

Es folgt eine Beispielausgabe.

{ "Location": "/my-exported-logs" }

Schritt 2: Einrichten von Zugriffsberechtigungen

Zunächst müssen Sie eine neue IAM-Richtlinie erstellen, damit CloudWatch Logs die s3:PutObject Erlaubnis für den Amazon S3 S3-Ziel-Bucket erhält.

Um die Exportaufgabe in Schritt 5 erstellen zu können, müssen Sie mit der IAM-Rolle AmazonS3ReadOnlyAccess und bestimmten anderen Berechtigungen angemeldet sein. Sie können eine Richtlinie erstellen, die einige dieser anderen erforderlichen Berechtigungen enthält.

Welche Richtlinie Sie erstellen, hängt davon ab, ob der Ziel-Bucket AWS KMS Verschlüsselung verwendet. Wenn es keine AWS KMS Verschlüsselung verwendet, erstellen Sie eine Richtlinie mit dem folgenden Inhalt.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" } ] }

Wenn der Ziel-Bucket AWS KMS Verschlüsselung verwendet, erstellen Sie eine Richtlinie mit dem folgenden Inhalt.

JSON
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }

Um die Exportaufgabe in Schritt 5 zu erstellen, müssen Sie mit der IAM-Rolle AmazonS3ReadOnlyAccess, der IAM-Richtlinie, die Sie gerade erstellt haben, sowie mit den folgenden Berechtigungen angemeldet sein:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:

Schritt 3: Festlegen von Berechtigungen für einen S3-Bucket

Standardmäßig werden alle S3-Buckets und -Objekte als privat eingestuft. Nur der Ressourceneigentümer, das Konto, in dem der Bucket erstellt wurde, kann auf den Bucket und alle darin enthaltenen Objekte zugreifen. Der Ressourcenbesitzer kann jedoch anderen Ressourcen und Benutzern Zugriffsberechtigungen gewähren, indem er eine Zugriffsrichtlinie schreibt.

Wichtig

Um Exporte in S3-Buckets sicherer zu machen, müssen Sie jetzt die Liste der Quellkonten angeben, die Protokolldaten in Ihren S3-Bucket exportieren dürfen.

Im folgenden Beispiel entspricht die Liste der Konten IDs im aws:SourceAccount Schlüssel den Konten, von denen ein Benutzer Protokolldaten in Ihren S3-Bucket exportieren kann. Der Schlüssel aws:SourceArn ist die Ressource, für die die Aktion ausgeführt wird. Sie können dies auf eine bestimmte Protokollgruppe beschränken oder einen Platzhalter verwenden, wie in diesem Beispiel zu sehen.

Wir empfehlen, dass Sie auch die Konto-ID des Kontos angeben, in dem der S3-Bucket erstellt wurde, um den Export innerhalb desselben Kontos zu ermöglichen.

So legen Sie Berechtigungen für einen S3-Bucket fest
  1. Erstellen Sie eine Datei mit dem Namen policy.json und fügen Sie die folgende Zugriffsrichtlinie hinzu. Ändern Sie dabei my-exported-logs in den Namen Ihres S3-Bucket und Principal in den Endpunkt der Region, in der Sie Protokolldaten exportieren (beispielsweise us-west-1). Verwenden Sie einen Text-Editor, um diese Richtliniendatei zu erstellen. Verwenden Sie nicht die IAM-Konsole.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/*", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:*", "arn:aws:logs:Region:AccountId2:log-group:*", ... ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  2. Legen Sie die Richtlinie, die Sie gerade hinzugefügt haben, mithilfe des put-bucket-policyBefehls als Zugriffsrichtlinie für Ihren Bucket fest. Diese Richtlinie ermöglicht CloudWatch Logs, Protokolldaten in Ihren S3-Bucket zu exportieren. Der Bucket-Eigentümer hat vollen Zugriff auf alle exportierten Objekte.

    aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
    Warnung

    Wenn mit dem vorhandenen Bucket bereits eine oder mehrere Richtlinien verknüpft sind, fügen Sie die Anweisungen für den Zugriff auf CloudWatch Logs zu dieser Richtlinie oder diesen Richtlinien hinzu. Sie sollten eine Beurteilung der daraus resultierenden Berechtigungen vornehmen, um sicherzustellen, dass sie für die Benutzer, die auf den Bucket zugreifen werden, geeignet sind.

(Optional) Schritt 4: Export in einen mit SSE-KMS verschlüsselten Bucket

Dieser Schritt ist nur erforderlich, wenn Sie in einen S3-Bucket exportieren, der serverseitige Verschlüsselung mit AWS KMS keys verwendet. Diese Verschlüsselung wird als SSE-KMS bezeichnet.

So exportieren Sie in einen mit SSE-KMS verschlüsselten Bucket
  1. Verwenden Sie einen Texteditor, um eine Datei mit dem Namen key_policy.json zu erstellen und die folgende Zugriffsrichtlinie hinzuzufügen. Wenn Sie die Richtlinie hinzufügen, nehmen Sie die folgenden Änderungen vor:

    • RegionErsetzen Sie es durch die Region Ihrer Logs.

    • account-ARNErsetzen Sie ihn durch den ARN des Kontos, dem der KMS-Schlüssel gehört.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM Role Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }
  2. Geben Sie den folgenden Befehl ein:

    aws kms create-key --policy file://key_policy.json

    Das Folgende ist eine Beispielausgabe aus diesem Befehl:

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-2:account_id:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false }
  3. Erstellen Sie mithilfe eines Texteditors eine Datei mit dem Namen bucketencryption.json mit folgenden Inhalten.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Geben Sie den folgenden Befehl ein und bucket-name ersetzen Sie ihn durch den Namen des Buckets, in den Sie Protokolle exportieren.

    aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration file://bucketencryption.json

    Wenn der Befehl keinen Fehler zurückgibt, ist der Vorgang erfolgreich abgeschlossen.

Schritt 5: Erstellen einer Exportaufgabe

Verwenden Sie den folgenden Befehl, um die Exportaufgabe zu erstellen. Nach der Erstellung kann der Exportvorgang von einigen Sekunden bis zu einigen Stunden dauern. Dies ist abhängig von der Größe der zu exportierenden Daten.

Um Daten nach Amazon S3 zu exportieren, verwenden Sie AWS CLI
  1. Melden Sie sich mit ausreichenden Berechtigungen an, wie unter Schritt 2: Einrichten von Zugriffsberechtigungen dokumentiert.

  2. Verwenden Sie in einer Befehlszeile den folgenden create-export-taskBefehl, um die Exportaufgabe zu erstellen.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "my-exported-logs" --destination-prefix "export-task-output"

    Es folgt eine Beispielausgabe.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }