Étape 2 : créer une destination - Amazon CloudWatch Logs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Étape 2 : créer une destination

Important

Toutes les étapes de cette procédure doivent être réalisées dans le compte du destinataire des données du journal.

Lorsque la destination est créée, CloudWatch Logs envoie un message test à la destination au nom du compte du destinataire. Lorsque le filtre d'abonnement est activé ultérieurement, CloudWatch Logs envoie les événements du journal à la destination au nom du compte source.

Pour créer une destination
  1. Attendez que le stream Firehose que vous avez créé soit actifÉtape 1 : créer un flux de diffusion Firehose. Vous pouvez utiliser la commande suivante pour vérifier le StreamDescription. StreamStatuspropriété.

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

    En outre, prenez note du DeliveryStreamDescription. DeliveryStreamValeur ARN, car vous devrez l'utiliser ultérieurement. Exemple de résultat de cette commande :

    { "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 } }

    Votre flux de diffusion peut prendre une ou deux minutes avant d'apparaître avec le statut actif.

  2. Lorsque le flux de diffusion est actif, créez le rôle IAM qui autorisera CloudWatch Logs à insérer des données dans votre flux Firehose. Tout d'abord, vous devez créer une politique de confiance dans un fichier ~/ TrustPolicyFor CWL.json. Utilisez un éditeur de texte créer cette stratégie. Pour plus d'informations sur les points de terminaison de CloudWatch Logs, consultez la section Points de terminaison et quotas Amazon CloudWatch Logs.

    Cette politique comprend une clé de contexte de condition globale aws:SourceArn qui spécifie le sourceAccountId pour aider à prévenir le problème de sécurité du député confus. Si vous ne connaissez pas encore l'ID du compte source lors du premier appel, nous vous recommandons de placer l'ARN de destination dans le champ ARN source. Dans les appels suivants, vous devez définir l'ARN source comme ARN source réel que vous avez recueilli lors du premier appel. Pour plus d'informations, consultez Prévention du député confus.

    { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } }
  3. Utilisez la commande aws iam create-role pour créer le rôle IAM, en spécifiant le fichier de politique d'approbation que vous venez de créer.

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

    Voici un exemple de sortie. Prenez note de la valeur Role.Arn retournée, car vous devrez l'utiliser dans une étape ultérieure.

    { "Role": { "Path": "/", "RoleName": "CWLtoKinesisFirehoseRole", "RoleId": "AROAR3BXASEKYJYWF243H", "Arn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole", "CreateDate": "2023-02-02T08:10:43+00:00", "AssumeRolePolicyDocument": { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } } } } } }
  4. Créez une politique d'autorisation pour définir les actions que CloudWatch Logs peut effectuer sur votre compte. Utilisez d'abord un éditeur de texte pour créer une politique d'autorisations dans un fichier ~/ PermissionsFor CWL.json :

    { "Statement":[ { "Effect":"Allow", "Action":["firehose:*"], "Resource":["arn:aws:firehose:region:222222222222:*"] } ] }
  5. Associez la politique d'autorisations au rôle en entrant la commande suivante :

    aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
  6. Une fois que le flux de diffusion Firehose est actif et que vous avez créé le rôle IAM, vous pouvez créer la CloudWatch destination Logs.

    1. Cette étape n'associera pas de stratégie d'accès à votre destination. Il s'agit uniquement de la première de deux étapes pour créer une destination. Notez l'ARN de la nouvelle destination qui est renvoyé dans la charge utile, car vous l'utiliserez comme destination.arn dans une étape ultérieure.

      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. Une fois l'étape précédente terminée, dans le compte des données du journal du destinataire (222222222222), associez une stratégie d'accès à la destination. Cette politique permet au compte de l'expéditeur des données du journal (111111111111) d'accéder à la destination dans le compte du destinataire des données du journal (222222222222). Vous pouvez utiliser un éditeur de texte pour mettre cette politique dans le ~/AccessPolicy.json fichier :

      { "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : ["logs:PutSubscriptionFilter","logs:PutAccountPolicy"], "Resource" : "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination" } ] }
    3. Cela crée une stratégie définissant qui a accès en écriture à la destination. Cette politique doit spécifier les logs:PutAccountPolicy actions logs:PutSubscriptionFilter et pour accéder à la destination. Les utilisateurs multicomptes utiliseront les PutAccountPolicy actions PutSubscriptionFilter et pour envoyer les événements du journal à la destination.

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