Comment créer, configurer et résoudre les problèmes d'un filtre d'abonnement à Kinesis à l'aide de la console CloudWatch ?

Date de la dernière mise à jour : 12/04/2022

Je veux créer un filtre d'abonnement pour diffuser mes journaux Amazon CloudWatch Logs vers Amazon Kinesis à l'aide de la console CloudWatch. Comment procéder ?

Brève description

Les journaux CloudWatch peuvent être envoyés en temps quasi réel vers le même compte ou vers des destinations Kinesis ou Amazon Kinesis Data Firehose entre comptes. Vous pouvez le faire en utilisant un filtre d'abonnement. La console CloudWatch Logs prend en charge la configuration de la destination et de l'installation.

Pour plus d'informations sur la configuration d'un filtre d'abonnement à l'aide de la syntaxe de modèle de filtre, consultez Syntaxe de filtre et de modèle.

Solution

Configuration de l'abonnement pour un flux de données Kinesis dans le même compte ou le compte courant

Remarque : la région du groupe de journaux CloudWatch et la région de destination Kinesis doit être la même.

Avant de créer votre abonnement, effectuez les opérations suivantes :

Pour créer un rôle IAM personnalisé et une politique de rôle, procédez comme suit :

1.    Ouvrez la console IAM avec votre utilisateur qui dispose d'autorisations d'administrateur.

2.    Dans le volet de navigation, choisissez Stratégies.

3.    Dans le panneau de contenu, choisissez Create policy (Créer une politique).

4.    Copiez et collez le document de politique JSON suivant dans l'onglet JSON.

Autorisation de rôle

{
  "Statement": [{
    "Effect": "Allow",
    "Action": "kinesis:PutRecord",
    "Resource": "arn:aws:kinesis:<REGION>:<ACCOUNT_ID>:stream/<STREAM_NAME>"
  }]
}

5.    Ouvrez la console IAM.

6.    Dans le panneau de navigation de la console, choisissez Roles (Rôles), puis choisissez Create role (Créer un rôle).

7.    Choisissez le type de rôle Custom trust policy (Politique d'approbation personnalisée).

8.    Dans la section Custom trust policy (Politique d'approbation personnalisée), saisissez ou collez la politique d'approbation personnalisée pour le rôle. Pour plus d'informations, consultez Création de politiques IAM.

9.    Sélectionnez Next (Suivant).

10.    Sélectionnez la politique IAM personnalisée créée à l'étape précédente.

11.    Sélectionnez Next (Suivant), Create a Role (Créer un rôle)

Politique d'approbation

{
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "Service": "logs.region.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": "arn:aws:logs:<REGION>:<ACCOUNT_ID>:*"
      }
    }
  }
}

Après avoir créé un flux Kinesis et un rôle IAM, vous pouvez créer un filtre d'abonnement :

1.    Ouvrez la console CloudWatch.

2.    Sélectionnez Log Group (Groupe de journaux).

3.    Sélectionnez Action, Subscription Filters (Filtres d'abonnement).

4.    Pour configurer la destination, choisissez Create Kinesis Subscription Filter (Créer un filtre d'abonnement Kinesis).

5.    Sélectionnez Current Account (Compte courant).

6.    Sélectionnez votre flux de données Kinesis dans la liste déroulante.

7.    Sélectionnez le rôle IAM que vous avez créé précédemment.

8.    Vérifiez la Distribution method (Méthode de distribution) :

By Log Stream (Par flux de journaux) : vérifie que les consommateurs en aval peuvent agréger les évènements du journal par flux de journaux, mais pourrait être moins efficace. Cette méthode pourrait également entraîner des coûts de streaming plus élevés car elle nécessite plus de partitions.

Random (Aléatoire) : distribue la charge sur les partitions de flux Kinesis, mais les consommateurs en aval ne peuvent pas agréger les évènements du journal par flux de journal.

9.    Configurez le Log format and filters (Format du journal et les filtres) :

Sélectionnez le format du journal. Le format peut être Amazon VPC Flow Logs, AWS CloudTrail ou AWS Lambda pour les journaux publiés par Amazon VPC, CloudTrail ou Lambda. Vous pouvez également choisir JSON, Space delimited (Délimité par des espaces) ou Other (Autre), en fonction de vos évènements du journal entrants.

Définissez le filter pattern (modèle de filtre) dans la section Subscription filter pattern (Modèle de filtre d'abonnement).

Saisissez un nom pour votre filtre d'abonnement.

10.    Vérifiez votre modèle avec les données d'évènement du journal existantes

11.    Après avoir vérifié, sélectionnez Start Streaming (Démarrer le streaming).

12.    (Facultatif) Vérifiez que votre flux de données fonctionne en validant le flux des évènements du journal.

Configuration pour une destination de flux de données Kinesis entre comptes

Remarque: si vous recevez des erreurs lors de l'exécution de commandes AWS Command Line Interface (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Vous pouvez livrer les évènements CloudWatch Logs aux flux de données Kinesis dans différents comptes et régions AWS. Pour ce faire, configurez le partage de données de journaux entre comptes avec des abonnements tout en spécifiant la région AWS, comme indiqué dans l'exemple suivant.

Remarque : dans cet exemple, les CloudWatch Logs dans la région us-east-1 sont livrés au flux de données Kinesis d'un autre utilisateur AWS dans us-west-2. L'ID de compte AWS du destinataire des données du journal est 222222222222 et l'ID de compte AWS de l'expéditeur des données du journal est 111111111111.

Créer un flux de données de destination dans le compte du destinataire 222222222222

1.    Créez un flux de données de destination dans Kinesis dans le compte destinataire de données avec un rôle IAM et une politique d'approbation.

2.    Utilisez la commande create-stream pour créer le flux de données. Assurez-vous de spécifier l'option --region. Par exemple, cette commande crée le flux de données YourStreamName dans us-west-2 :

aws kinesis create-stream --stream-name "YourStreamName" --shard-count 1 --region us-west-2

3.    Utilisez la commande describe-stream pour vérifier la propriété StreamDescription.StreamStatus. Assurez-vous de spécifier l'option --region. Par exemple, cette commande vérifie le flux YourStreamName dans us-west-2 :

aws kinesis describe-stream --stream-name "YourStreamName" --region us-west-2

4.    Utilisez la commande put-destination pour créer la destination CloudWatch Logs. Définissez l'option --region pour --role-arn sur la même région que les journaux CloudWatch sources. Par exemple, la commande suivante doit être exécutée dans le compte destinataire/de destination 222222222222 qui crée la destination du journal dans le compte destinataire 222222222222 dans us-east-1 :

aws logs put-destination \
  --destination-name "testDestination" \
  --target-arn "arn:aws:kinesis:us-west-2:222222222222:stream/YourStreamName" \
  --role-arn "arn:aws:iam::222222222222:role/YourIAMRoleName" --region us-east-1

Créez un filtre d'abonnement dans le compte source 111111111111

Pour créer le filtre d'abonnement, procédez comme suit :

1.    Sélectionnez le groupe de journaux.

2.    Sélectionnez Action, puis Subscription Filters (Filtres d'abonnement).

3.    Pour sélectionner la destination, choisissez parmi les options suivantes :

Créer un filtre d'abonnement Kinesis : crée un filtre d'abonnement pour une destination de flux de données Kinesis

4.    Sélectionnez Another Account (Un autre compte), car la destination est entre comptes.

5.    Pour une destination Kinesis ou Kinesis Firehose entre comptes, indiquez l'ARN de destination.

6.    Sélectionnez la méthode deDistribution :

By Log Stream (Par flux de journaux) : vérifie que les consommateurs en aval peuvent agréger les évènements du journal par flux de journaux, mais pourrait être moins efficace. Cette méthode pourrait également entraîner des coûts de streaming plus élevés car elle nécessite plus de partitions.

Random (Aléatoire) : distribue la charge sur les partitions de flux Kinesis, mais les consommateurs en aval ne peuvent pas agréger les évènements du journal par flux de journal.

7.    Configurez le Log format and filters (Format du journal et les filtres) :

Sélectionnez le format du journal. Le format peut être Amazon VPC Flow Logs, CloudTrail ou AWS Lambda pour les journaux publiés par Amazon VPC, CloudTrail ou Lambda. Vous pouvez également choisir JSON, Space delimited (Délimité par des espaces) ou Other (Autre), en fonction de vos évènements du journal entrants.

Définissez le filter pattern (modèle de filtre) dans la section Subscription filter pattern (Modèle de filtre d'abonnement).

Saisissez un nom pour votre filtre d'abonnement.

8.    Vérifiez votre modèle avec les données d'évènement du journal existantes

9.    Après avoir vérifié, sélectionnez Start Streaming (Démarrer le streaming).

10.    (Facultatif) Vérifiez que votre flux de données fonctionne en validant le flux des évènements du journal.

Résolution des problèmes

  • Vérifiez que votre flux Kinesis est à l'état Active (Actif) et que vous pouvez l'afficher sur la console Kinesis. Vous pouvez également utiliser l'appel d'API DescribeStream.
  • Vérifiez que le groupe de journaux CloudWatch et la région du flux de données Kinesis sont identiques.
  • Assurez-vous qu'il existe un rôle IAM qui possède des autorisations d'approbation pour logs.yourregion.amazonaws.com et autorise l'autorisation kinesis:putrecords.
  • Vérifiez que les régions et les ressources de la politique IAM sont correctes.
  • Assurez-vous que vous n'avez pas sélectionné Kinesis Firehose lors de la configuration d'un filtre d'abonnement pour le flux de données Kinesis.
  • Après avoir lancé le streaming, vérifiez que les métriques pour le filtre d'abonnement confirment que le modèle de filtre est valide et correspond aux évènements du journal entrants. Pour ce faire, examinez les métriques suivantes : ForwardedBytes : le volume d'évènements du journal en octets compressés transmis à la destination de l'abonnement. ForwardedLogEvents : le nombre d'évènements du journal transférés vers la destination de l'abonnement.
  • Pour vérifier qu'il n'y a pas d'erreurs lors du streaming des évènements du journal vers votre destination, vérifiez les métriques suivantes : DeliveryErrors : le nombre d'évènements du journal pour lesquels CloudWatch Logs a reçu une erreur lors de la redirection des données vers la destination de l'abonnement. DeliveryThrottling : le nombre d'évènements du journal qui indiquent que CloudWatch Logs a été limité lors de la redirection des données vers la destination de l'abonnement.
  • Si vous disposez d'un flux Kinesis dédié, vérifiez les métriques du flux pour confirmer sa fonctionnalité.
  • Pour résoudre les problèmes de journalisation entre comptes, consultez Résolution des problèmes de la configuration entre comptes CloudWatch.

Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?