Schritt 2: Erstellen eines Ziels - 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.

Schritt 2: Erstellen eines Ziels

Wichtig

Alle Schritte in diesem Verfahren müssen im Konto des Protokolldatenempfängers ausgeführt werden.

Wenn das Ziel erstellt wurde, sendet CloudWatch Logs im Namen des Empfängerkontos eine Testnachricht an das Ziel. Wenn der Abonnementfilter später aktiv ist, sendet CloudWatch Logs im Namen des Quellkontos Protokollereignisse an das Ziel.

So erstellen Sie ein Ziel
  1. Warten Sie, bis der Firehose-Stream, in dem Sie ihn erstellt haben, aktiv Schritt 1: Erstellen Sie einen Firehose-Lieferstream wird. Sie können den folgenden Befehl verwenden, um das StreamDescription zu überprüfen. StreamStatusEigentum.

    aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream"

    Beachten Sie außerdem die DeliveryStreamDescription. DeliveryStreamARN-Wert, da Sie ihn in einem späteren Schritt verwenden müssen. Beispielausgabe dieses Befehls:

    { "DeliveryStreamDescription": { "DeliveryStreamName": "my-delivery-stream", "DeliveryStreamARN": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream", "DeliveryStreamStatus": "ACTIVE", "DeliveryStreamEncryptionConfiguration": { "Status": "DISABLED" }, "DeliveryStreamType": "DirectPut", "VersionId": "1", "CreateTimestamp": "2021-02-01T23:59:15.567000-08:00", "Destinations": [ { "DestinationId": "destinationId-000000000001", "S3DestinationDescription": { "RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::firehose-test-bucket1", "BufferingHints": { "SizeInMBs": 5, "IntervalInSeconds": 300 }, "CompressionFormat": "UNCOMPRESSED", "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CloudWatchLoggingOptions": { "Enabled": false } }, "ExtendedS3DestinationDescription": { "RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::firehose-test-bucket1", "BufferingHints": { "SizeInMBs": 5, "IntervalInSeconds": 300 }, "CompressionFormat": "UNCOMPRESSED", "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CloudWatchLoggingOptions": { "Enabled": false }, "S3BackupMode": "Disabled" } } ], "HasMoreDestinations": false } }

    Es kann einige Minuten dauern, bis der Bereitstellungsdatenstrom im aktiven Status angezeigt wird.

  2. Wenn der Lieferstream aktiv ist, erstellen Sie die IAM-Rolle, die CloudWatch Logs die Erlaubnis erteilt, Daten in Ihren Firehose-Stream einzufügen. Zunächst müssen Sie eine Vertrauensrichtlinie in einer Datei TrustPolicyFor~/ CWL.json erstellen. Verwenden Sie einen Text-Editor, um diese Richtlinie zu erstellen. Weitere Informationen zu CloudWatch Logs-Endpunkten finden Sie unter Amazon CloudWatch Logs-Endpunkte und Kontingente.

    Diese Richtlinie enthält einen globalen Bedingungskontextschlüssel aws:SourceArn, der das sourceAccountId angibt, um das Confused-Deputy-Problem zu vermeiden. Wenn Sie die Quell-Kontonummer beim ersten Aufruf noch nicht kennen, empfehlen wir Ihnen, die Ziel-ARN in das Quell-ARN-Feld einzutragen. Bei den folgenden Aufrufen sollten Sie als Quell-ARN den tatsächlichen Quell-ARN angeben, den Sie beim ersten Aufruf ermittelt haben. Weitere Informationen finden Sie unter Confused-Deputy-Prävention.

    { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } }
  3. Verwenden Sie den Befehl aws iam create-role, um die IAM-Rolle zu erstellen und geben Sie die Datei mit der Vertrauensrichtlinie an, die Sie gerade erstellt haben.

    aws iam create-role \ --role-name CWLtoKinesisFirehoseRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json

    Dies ist eine Beispielausgabe. Notieren Sie den zurückgegebenen Role.Arn-Wert, da Sie ihn in einem späteren Schritt benötigen.

    { "Role": { "Path": "/", "RoleName": "CWLtoKinesisFirehoseRole", "RoleId": "AROAR3BXASEKYJYWF243H", "Arn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole", "CreateDate": "2021-02-02T08:10:43+00:00", "AssumeRolePolicyDocument": { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } } } }
  4. Erstellen Sie eine Berechtigungsrichtlinie, um zu definieren, welche Aktionen CloudWatch Logs auf Ihrem Konto ausführen kann. Verwenden Sie zunächst einen Texteditor, um eine Berechtigungsrichtlinie in einer Datei ~/ PermissionsFor CWL.json zu erstellen:

    { "Statement":[ { "Effect":"Allow", "Action":["firehose:*"], "Resource":["arn:aws:firehose:region:222222222222:*"] } ] }
  5. Verknüpfen Sie mit dem folgenden Befehl die Berechtigungsrichtlinie mit der Rolle:

    aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
  6. Nachdem sich der Firehose-Lieferstream im aktiven Zustand befindet und Sie die IAM-Rolle erstellt haben, können Sie das CloudWatch Logs-Ziel erstellen.

    1. In diesem Schritt wird keine Zugriffsrichtlinie mit Ihrem Ziel verknüpft. Es ist zudem erst der erste von zwei Schritten zum Erstellen eines Ziels. Notieren Sie sich die in der Nutzlast zurückgegebene ARN des neuen Zielortes, da Sie diese in einem späteren Schritt als destination.arn verwenden werden.

      aws logs put-destination \ --destination-name "testFirehoseDestination" \ --target-arn "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream" \ --role-arn "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole" { "destination": { "destinationName": "testFirehoseDestination", "targetArn": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream", "roleArn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole", "arn": "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination"} }
    2. Verknüpfen Sie, nachdem der vorherige Schritt abgeschlossen ist, im Empfängerkonto der Protokolldaten (222222222222) eine Zugriffsrichtlinie mit dem Ziel.

      Diese Richtlinie ermöglicht dem Sender-Konto der Protokolldaten (111111111111), auf das Ziel nur im Empfängerkonto der Protokolldaten (222222222222) zuzugreifen. Sie können einen Texteditor verwenden, um diese Richtlinie in die Datei ~/ AccessPolicy .json einzufügen:

      { "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination" } ] }
    3. Damit wird eine Richtlinie erstellt, die bestimmt, wer Schreibzugriff auf das Ziel hat. In dieser Richtlinie muss die PutSubscriptionFilter Aktion logs: für den Zugriff auf das Ziel angegeben werden. Kontoübergreifende Benutzer verwenden die PutSubscriptionFilterAktion, um Protokollereignisse an das Ziel zu senden:

      aws logs put-destination-policy \ --destination-name "testFirehoseDestination" \ --access-policy file://~/AccessPolicy.json