Comment diffuser des données de CloudWatch Logs vers un cluster Amazon Elasticsearch Service basé sur VPC dans un autre compte ?

Dernière mise à jour : 10-06-2021

J'essaie de diffuser des données d'Amazon CloudWatch Logs vers un cluster Amazon Elasticsearch Service (Amazon ES) en utilisant un Virtual Private Cloud (VPC) d'un autre compte. Cependant, je reçois le message d'erreur « Enter a valid Amazon Elasticsearch Service Endpoint ». Comment résoudre cette erreur ?

Brève description

Pour diffuser des données de CloudWatch Logs vers un cluster Elasticsearch d'un autre compte, effectuez les étapes suivantes :

1.    Configurez CloudWatch Logs dans le compte A.

2.    Configurez AWS Lambda dans le compte A.

3.    Configurez l'appairage Amazon Virtual Private Cloud (Amazon VPC) entre les comptes.

Solution

Configuration de CloudWatch Logs dans le compte A

1.    Ouvrez la console CloudWatch Logs dans le compte A et sélectionnez votre groupe de journaux.

2.    Choisissez Actions.

3.    Choisissez Create Elasticsearch subscription filter (Créer un filtre d'abonnement Elasticsearch).

4.    Pour l'option Select Account (Sélectionner un compte), sélectionnez This account (Ce compte).

5.    Dans la liste déroulante du cluster Elasticsearch, choisissez un cluster existant pour le compte A.

6.    Choisissez le rôle d'exécution IAM Lambda qui dispose des autorisations nécessaires pour effectuer des appels au cluster Elasticsearch sélectionné.

7.    Attachez la stratégie AWSLambdaVPCAccessExecutionRole à votre rôle.

8.    Dans Configure log format and filters (Configurer un format de journal et des filtres), sélectionnez le format de journal et le modèle de filtre d'abonnement.

9.    Sélectionnez Next (Suivant).

10.    Entrez le nom du filtre d'abonnement et choisissez Start Streaming (Démarrer la diffusion en continu). Pour en savoir plus sur la diffusion, consultez Diffusion de données CloudWatch Logs vers Amazon Elasticsearch Service.

Configuration de Lambda dans le compte A

1.    Dans le compte A, ouvrez la console Lambda.

2.    Créez votre fonction Lambda.

3.    Dans le code de la fonction, mettez à jour la variable de point de terminaison du cluster Elasticsearch dans le compte B. Cette mise à jour permet à la fonction Lambda d'envoyer des données au domaine Amazon ES du compte B.

Remarque : Vous pouvez coller le nom DNS public du compte B. Veillez à supprimer « https:// » du point de terminaison de l'URL.

4.    Choisissez Configuration.

5.    Choisissez VPC.

6.    Sous VPC, choisissez Edit (Modifier).

7.    Sélectionnez votre VPC, vos sous-réseaux et vos groupes de sécurité.

Remarque : Cette sélection garantit que la fonction Lambda s'exécute à l'intérieur d'un VPC, en utilisant le routage VPC pour renvoyer les données au domaine Amazon ES. Pour en savoir plus sur les configurations Amazon Virtual Private Cloud (Amazon VPC), consultez Configuration d'une fonction Lambda pour accéder aux ressources d'un VPC.

8.    Sélectionnez Save (Enregistrer).

Configuration de l'appairage de VPC entre les comptes

1.    Ouvrez la console Amazon VPC dans le compte A et le compte B.

Remarque : assurez-vous que votre VPC n’a pas de blocs d’adresses CIDR qui se chevauchent.

2.    Créez une session d’appairage de VPC entre les deux VPC personnalisés (Lambda et Amazon ES). Cette session d’appairage de VPC permet à Lambda d’envoyer des données à votre domaine Amazon ES. Pour plus d’informations sur les connexions d’appairage de VPC, consultez Création et acceptation d’une connexion d’appairage de VPC.

3.    Mettez à jour la table de routage pour les deux VPC. Pour en savoir plus sur les tables de routage, consultez Mise à jour de vos tables de routage pour une connexion d'appairage de VPC.

4.    Dans le compte A, accédez à Groupes de sécurité.

5.    Sélectionnez le groupe de sécurité affecté au sous-réseau dans lequel Lambda est configuré.

6.    Ajoutez la règle entrante pour autoriser le trafic depuis les sous-réseaux Amazon ES.

7.    Dans le compte B, sélectionnez le groupe de sécurité affecté au sous-réseau dans lequel Amazon ES est configuré.

8.    Ajoutez la règle entrante pour autoriser le trafic depuis les sous-réseaux Lambda.

9.    Dans le compte B, ouvrez la console Amazon ES.

10.    Choisissez Actions.

11.    Choisissez modify access policy, puis ajoutez la stratégie suivante :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
       
    "AWS": "arn:aws:iam::<AWS Account A>:role/<Lambda Execution Role>"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1: ::<AWS
    Account B>:domain/<ES Domain Name>/*"
    }
  ]
}

Cette stratégie permet à Amazon ES d’effectuer des appels à partir du rôle d’exécution de la fonction Lambda.

12.    Vérifiez la métrique Error count and success rate dans la console Lambda. Cette métrique vérifie si les journaux sont correctement envoyés à Amazon ES.

13.    Vérifiez la métrique Indexing rate dans Amazon ES pour confirmer si les données ont été envoyées. CloudWatch Logs diffuse désormais des données sur les deux comptes de votre Amazon VPC.


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


Besoin d'aide pour une question technique ou de facturation ?