Améliorez les performances opérationnelles en activant Amazon DevOps Guru sur plusieurs régions, comptes et unités d'organisation AWS avec le kit AWS CDK - Recommandations AWS

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.

Améliorez les performances opérationnelles en activant Amazon DevOps Guru sur plusieurs régions, comptes et unités d'organisation AWS avec le kit AWS CDK

Créée par le Dr Rahul Sharad Gaikwad (AWS)

Référentiel de code : exemple de code Amazon DevOps Guru

Environnement : PoC ou pilote

Technologies : gestion et gouvernance CloudNative ; opérations DevOps ; sécurité, identité, conformité ; sans serveur

Services AWS : Amazon API Gateway ; AWS CDK ; Amazon DevOps Guru ; Amazon DynamoDB ; AWS Organizations

Récapitulatif

Ce modèle décrit les étapes à suivre pour activer le service Amazon DevOps Guru dans plusieurs régions, comptes et unités organisationnelles (UO) Amazon Web Services (AWS) à l'aide du kit de développement cloud (AWS CDK) dans TypeScript. Vous pouvez utiliser les piles AWS CDK pour déployer AWS CloudFormation StackSets depuis le compte AWS de l'administrateur (principal) afin d'activer Amazon DevOps Guru sur plusieurs comptes, au lieu de vous connecter à chaque compte et d'activer DevOps Guru individuellement pour chaque compte.

Amazon DevOps Guru fournit des fonctionnalités d'intelligence artificielle (AIOps) pour vous aider à améliorer la disponibilité de vos applications et à résoudre les problèmes opérationnels plus rapidement. DevOps Guru réduit vos efforts manuels en appliquant des recommandations basées sur l'apprentissage automatique (ML), sans aucune expertise en ML. DevOps Guru analyse vos ressources et vos données opérationnelles. S'il détecte des anomalies, il fournit des mesures, des événements et des recommandations pour vous aider à résoudre le problème.

Ce modèle décrit trois options de déploiement pour activer Amazon DevOps Guru :

  • Pour toutes les ressources, empilez des ressources sur plusieurs comptes et régions

  • Pour toutes les ressources de pile des unités d'organisation

  • Pour des ressources de stockage spécifiques sur plusieurs comptes et régions

Conditions préalables et limitations

Prérequis

Versions du produit

  • AWS CDK Toolkit version 1.107.0 ou ultérieure

  • npm version 7.9.0 ou ultérieure

  • Node.js version 15.3.0 ou ultérieure

Architecture

Technologies

L'architecture de ce modèle inclut les services suivants :

Piles de kits de développement AWS

Le modèle utilise les piles AWS CDK suivantes : 

  • CdkStackSetAdminRole— Crée un rôle d'administrateur AWS Identity and Access Management (IAM) afin d'établir une relation de confiance entre l'administrateur et les comptes cibles.

  • CdkStackSetExecRole— Crée un rôle IAM pour faire confiance au compte administrateur.

  • CdkDevopsGuruStackMultiAccReg— Active DevOps Guru dans plusieurs régions et comptes AWS pour toutes les piles, et configure les notifications Amazon Simple Notification Service (Amazon SNS).

  • CdkDevopsGuruStackMultiAccRegSpecStacks— Active DevOps Guru dans plusieurs régions AWS et compte pour des stacks spécifiques, et configure les notifications Amazon SNS.

  • CdkDevopsguruStackOrgUnit— Active DevOps Guru dans toutes les unités d'organisation et configure les notifications Amazon SNS. 

  • CdkInfrastructureStack— Déploie des exemples de composants d'application sans serveur tels que API Gateway, Lambda et DynamoDB dans le compte administrateur pour démontrer l'injection de défauts et la génération d'informations.

Exemple d'architecture d'application

Le schéma suivant illustre l'architecture d'un exemple d'application sans serveur qui a été déployée sur plusieurs comptes et régions. Le modèle utilise le compte administrateur pour déployer toutes les piles AWS CDK. Il utilise également le compte administrateur comme l'un des comptes cibles pour configurer DevOps Guru.

  1. Lorsque DevOps Guru est activé, il définit d'abord le comportement de chaque ressource comme base de référence, puis ingère les données opérationnelles issues des métriques vendues CloudWatch .

  2. S'il détecte une anomalie, il la met en corrélation avec les événements qui en découlent CloudTrail et génère un aperçu.

  3. Les informations fournissent une séquence d'événements corrélée ainsi que des recommandations prescrites pour permettre à l'opérateur d'identifier la ressource responsable.

  4. Amazon SNS envoie des messages de notification à l'opérateur.

Exemple d'application sans serveur qui a été déployée sur plusieurs comptes et régions.

Automatisation et évolutivité

Le GitHub référentiel fourni avec ce modèle utilise le AWS CDK comme outil d'infrastructure en tant que code (IAc) pour créer la configuration de cette architecture. AWS CDK vous aide à orchestrer les ressources et à activer DevOps Guru sur plusieurs comptes, régions et unités d'organisation AWS.

Outils

Services AWS

  • AWS CDK — AWS Cloud Development Kit (AWS CDK) vous aide à définir votre infrastructure cloud sous forme de code dans l'un des cinq langages de programmation pris en charge : JavaScript Python TypeScript, Java et C#.

  • AWS CLI — AWS Command Line Interface (AWS CLI) est un outil unifié qui fournit une interface de ligne de commande cohérente pour interagir avec les services et ressources AWS.

Code

Le code source de ce modèle est disponible sur GitHub, dans le référentiel Amazon DevOps Guru CDK Samples. Le code AWS CDK est écrit dedans. TypeScript Pour cloner et utiliser le référentiel, suivez les instructions de la section suivante.

Important : certains des articles de ce modèle incluent des exemples de commandes AWS CDK et AWS CLI formatés pour Unix, Linux et macOS. Pour Windows, remplacez le caractère de continuation de la barre oblique inverse (\) à la fin de chaque ligne par un curseur (^).

Épopées

TâcheDescriptionCompétences requises

Configurez les profils nommés AWS.

Configurez vos profils nommés AWS comme suit pour déployer des stacks dans un environnement multi-comptes.

Pour le compte administrateur :

$aws configure --profile administrator AWS Access Key ID [****]: <your-administrator-access-key-ID> AWS Secret Access Key [****]: <your-administrator-secret-access-key> Default region name [None]: <your-administrator-region> Default output format [None]: json

Pour le compte cible :

$aws configure --profile target AWS Access Key ID [****: <your-target-access-key-ID> AWS Secret Access Key [****]: <your-target-secret-access-key> Default region name [None]: <your-target-region> Default output format [None]: json

Pour plus d'informations, consultez la section Utilisation de profils nommés dans la documentation de l'AWS CLI.

DevOps ingénieur

Vérifiez les configurations des profils AWS.

(Facultatif) Vous pouvez vérifier les configurations de votre profil AWS dans les config fichiers credentials et en suivant les instructions de la section Définir et afficher les paramètres de configuration dans la documentation de l'AWS CLI.

DevOps ingénieur

Vérifiez la version du kit AWS CDK.

Vérifiez la version du kit d'outils AWS CDK en exécutant la commande suivante :

$cdk --version

Ce modèle nécessite la version 1.107.0 ou ultérieure. Si vous disposez d'une version antérieure du CDK AWS, suivez les instructions de la documentation du CDK AWS pour la mettre à jour.

DevOps ingénieur

Clonez le code du projet.

Clonez le GitHub référentiel pour ce modèle à l'aide de la commande :

$git clone https://github.com/aws-samples/amazon-devopsguru-cdk-samples.git
DevOps ingénieur

Installez les dépendances du package et compilez les TypeScript fichiers.

Installez les dépendances du package et compilez les TypeScript fichiers en exécutant les commandes suivantes :

$cd amazon-devopsguru-cdk-samples $npm install $npm fund

Ces commandes installent tous les packages du référentiel d'échantillons.

Important : Si vous recevez des erreurs concernant des packages manquants, utilisez l'une des commandes suivantes :

$npm ci

—ou—

$npm install -g @aws-cdk/<package-name>

Vous trouverez la liste des noms et des versions des packages dans la Dependencies section du /amazon-devopsguru-cdk-samples/package.json fichier. Pour plus d'informations, consultez npm ci et npm install dans la documentation de npm.

DevOps ingénieur
TâcheDescriptionCompétences requises

Configurez une adresse e-mail pour les notifications Amazon SNS.

Suivez ces étapes pour fournir une adresse e-mail pour les notifications Amazon SNS :

  1. Modifiez les fichiers /amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-multi-acc-reg-stack.ts et/amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-org-uni-stack.ts.

  2. Dans la Subscription sectionDevOpsGuruTopic, mettez à jour le Endpoint paramètre avec votre adresse e-mail.

  3. Enregistrez et fermez les fichiers.

DevOps ingénieur

Créez le code du projet.

Créez le code du projet et synthétisez les piles en exécutant la commande suivante :

npm run build && cdk synth

Vous devez voir des résultats similaires à ce qui suit : 

$npm run build && cdk synth > cdk-devopsguru@0.1.0 build > tsc Successfully synthesized to ~/amazon-devopsguru-cdk-samples/cdk.out Supply a stack id (CdkDevopsGuruStackMultiAccReg,CdkDevopsGuruStackMultiAccRegSpecStacks, CdkDevopsguruStackOrgUnit, CdkInfrastructureStack, CdkStackSetAdminRole, CdkStackSetExecRole) to display its template.

Pour plus d'informations et pour connaître les étapes à suivre, consultez Votre première application AWS CDK dans la documentation AWS CDK.

DevOps ingénieur

Répertoriez les piles AWS CDK.

Exécutez la commande suivante pour répertorier toutes les piles AWS CDK :

$cdk list

La commande affiche la liste suivante :

CdkDevopsGuruStackMultiAccReg CdkDevopsGuruStackMultiAccRegSpecStacks CdkDevopsguruStackOrgUnit CdkInfrastructureStack CdkStackSetAdminRole CdkStackSetExecRole
DevOps ingénieur
TâcheDescriptionCompétences requises

Déployez les piles AWS CDK pour créer des rôles IAM.

Ce modèle utilise AWS CloudFormation StackSets pour effectuer des opérations de stack sur plusieurs comptes. Si vous créez votre premier stack set, vous devez créer les rôles IAM suivants pour obtenir les autorisations requises configurées dans vos comptes AWS :

  • AWSCloudFormationStackSetAdministrationRole

  • AWSCloudFormationStackSetExecutionRole

Remarque : Les rôles doivent porter ces noms exacts.

  1. Créez le AWSCloudFormationStackSetAdministrationRole rôle IAM dans le compte administrateur (principal) en exécutant la commande CLI suivante :

    $cdk deploy CdkStackSetAdminRole --profile administrator
  2. Créez le AWSCloudFormationStackSetExecutionRole rôle IAM dans tous les comptes cibles sur lesquels vous souhaitez exécuter les instances de stack. Pour créer ce rôle, exécutez les commandes CLI suivantes :

    $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile administrator   $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile target

Pour plus d'informations, consultez la section Accorder des autorisations autogérées dans la CloudFormation documentation AWS.

DevOps ingénieur

Déployez la pile AWS CDK pour activer DevOps Guru sur plusieurs comptes.

La CdkDevopsGuruStackMultiAccReg pile AWS CDK crée des ensembles de piles pour déployer des instances de pile sur plusieurs comptes et régions. Pour déployer la pile, exécutez la commande CLI suivante avec les paramètres spécifiés :

$cdk deploy CdkDevopsGuruStackMultiAccReg \ --profile administrator \ --parameters AdministratorAccountId=<administrator-account-ID> \ --parameters TargetAccountId=<target-account-ID> \ --parameters RegionIds="<region-1>,<region-2>"

Amazon DevOps Guru est actuellement disponible dans les régions AWS répertoriées dans la FAQ DevOps Guru.

DevOps ingénieur
TâcheDescriptionCompétences requises

Extrayez les identifiants UO.

Sur la console AWS Organizations, identifiez les ID des unités organisationnelles dans lesquelles vous souhaitez activer DevOps Guru.

DevOps ingénieur

Activez les autorisations gérées par les services pour les unités d'organisation.

Si vous utilisez AWS Organizations pour la gestion de votre compte, vous devez accorder des autorisations gérées par le service pour activer DevOps Guru. Au lieu de créer les rôles IAM manuellement, utilisez un accès sécurisé et des rôles liés à un service (SLR) basés sur l'organisation.

DevOps ingénieur

Déployez la pile AWS CDK pour activer DevOps Guru dans toutes les unités d'organisation.

La CdkDevopsguruStackOrgUnit pile AWS CDK active le service DevOps Guru dans toutes les unités d'organisation. Pour déployer la pile, exécutez la commande suivante avec les paramètres spécifiés :

$cdk deploy CdkDevopsguruStackOrgUnit \ --profile administrator \ --parameters RegionIds="<region-1>,<region-2>" \ --parameters OrganizationalUnitIds="<OU-1>,<OU-2>"
DevOps ingénieur
TâcheDescriptionCompétences requises

Déployez les piles AWS CDK pour créer des rôles IAM.

Si vous n'avez pas encore créé les rôles IAM requis indiqués dans la première option, faites-le d'abord :

  1. Créez le AWSCloudFormationStackSetAdministrationRole rôle IAM dans le compte administrateur (principal) en exécutant la commande CLI suivante :

    $cdk deploy CdkStackSetAdminRole --profile administrator
  2. Créez le AWSCloudFormationStackSetExecutionRole rôle IAM dans tous les comptes cibles sur lesquels vous souhaitez exécuter les instances de stack. Pour créer ce rôle, exécutez les commandes de la CLI :

    $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile administrator $cdk deploy CdkStackSetExecRole \ --parameters AdministratorAccountId=<administrator-account-ID> \ --profile target

Pour plus d'informations, consultez la section Accorder des autorisations autogérées dans la CloudFormation documentation AWS.

DevOps ingénieur

Supprimez les piles existantes.

Si vous avez déjà utilisé la première option pour activer DevOps Guru pour toutes les ressources de la pile, vous pouvez supprimer l'ancienne pile en utilisant la commande suivante :

$cdk destroy CdkDevopsGuruStackMultiAccReg --profile administrator

Vous pouvez également modifier le  RegionIds paramètre lorsque vous redéployez la pile pour éviter une erreur Stacks already exist.

DevOps ingénieur

Mettez à jour la pile AWS CDK avec une liste de piles.

  1. Modifiez le fichier /amazon-devopsguru-cdk-samples/lib/cdk-devopsguru-multi-acc-reg-spec-stack.ts.

  2. SousResources,CloudFormation,StackNames,, listez les piles pour lesquelles vous souhaitez activer DevOps Guru. À des fins de démonstration, le paramètre spécifie la CdkInfrastructureStack pile, mais vous pouvez modifier cette entrée en fonction de vos besoins.

  3. Enregistrez et fermez le fichier .

  4. Pour synthétiser et mettre à jour le modèle de pile, exécutez :

     $cdk synth
Ingénieur de données

Déployez la pile AWS CDK pour permettre à DevOps Guru d'accéder à des ressources de pile spécifiques sur plusieurs comptes.

La CdkDevopsGuruStackMultiAccRegSpecStacks pile AWS CDK permet à DevOps Guru d'accéder à des ressources de pile spécifiques sur plusieurs comptes. Pour déployer la pile, exécutez la commande suivante :

$cdk deploy CdkDevopsGuruStackMultiAccRegSpecStacks \ --profile administrator \ --parameters AdministratorAccountId=<administrator-account-ID> \ --parameters TargetAccountId=<target-account-ID> \ --parameters RegionIds="<region-1>,<region-2>"

Remarque : Si vous avez déjà déployé cette pile pour l'option 1, modifiez le RegionIds paramètre (en veillant à choisir parmi les régions disponibles) pour éviter une erreur Stacks already exist.

DevOps ingénieur
TâcheDescriptionCompétences requises

Déployez l'exemple de pile d'infrastructure sans serveur.

La CdkInfrastructureStack pile AWS CDK déploie des composants sans serveur tels qu'API Gateway, Lambda et une table DynamoDB pour illustrer les connaissances de Guru. DevOps Pour déployer la pile, exécutez la commande suivante : 

$cdk deploy CdkInfrastructureStack --profile administrator
DevOps ingénieur

Insérez des exemples d'enregistrements dans DynamoDB.

Exécutez la commande suivante pour remplir la table DynamoDB avec des exemples d'enregistrements. Indiquez le chemin correct pour le populate-shops-dynamodb-table.json script.

$aws dynamodb batch-write-item \ --request-items file://scripts/populate-shops-dynamodb-table.json \ --profile administrator

La commande affiche la sortie suivante :

{ "UnprocessedItems": {} }
DevOps ingénieur

Vérifiez les enregistrements insérés dans DynamoDB.

Pour vérifier que la table DynamoDB inclut les exemples d'enregistrements du fichier, accédez à populate-shops-dynamodb-table.json l'URL de ListRestApiEndpointMonitorOperator l'API, qui est publiée en tant que sortie de la pile AWS CDK. Vous pouvez également trouver cette URL dans l'onglet Outputs de la CloudFormation console AWS pour la CdkInfrastructureStack pile. La sortie du AWS CDK ressemblerait à ce qui suit :

CdkInfrastructureStack.CreateRestApiMonitorOperatorEndpointD1D00045 = https://oure17c5vob.execute-api.<your-region>.amazonaws.com/prod/ CdkInfrastructureStack.ListRestApiMonitorOperatorEndpointABBDB8D8 = https://cdff8icfrn4.execute-api.<your-region>.amazonaws.com/prod/
DevOps ingénieur

Attendez que les ressources aient terminé la définition de base.

Cette pile sans serveur dispose de quelques ressources. Nous vous recommandons d'attendre 2 heures avant de passer aux étapes suivantes. Si vous avez déployé cette pile dans un environnement de production, l'établissement de la base de référence peut prendre jusqu'à 24 heures, en fonction du nombre de ressources que vous avez sélectionné pour surveiller dans DevOps Guru.

DevOps ingénieur
TâcheDescriptionCompétences requises

Mettez à jour la pile d'infrastructure AWS CDK.

Pour essayer DevOps Guru Insights, vous pouvez apporter des modifications de configuration afin de reproduire un problème de fonctionnement typique.

  1. Modifiez le fichier /amazon-devopsguru-cdk-samples/lib/infrastructure-stack.ts.

  2. Dans DDB Table cette section, modifiez la capacité de lecture de la table DynamoDB de 5 à 1.

  3. Enregistrez et fermez le fichier .

  4. Exécutez les commandes suivantes pour synthétiser et déployer la pile d'infrastructure AWS CDK mise à jour :

    $cdk synth $cdk deploy CdkInfrastructureStack --profile administrator
DevOps ingénieur

Injectez des requêtes HTTP sur l'API.

Injectez du trafic entrant sous forme de requêtes HTTP sur l'ListRestApiMonitorOperatorEndpointxxxxAPI :

  1. Modifiez le script Python/amazon-devopsguru-cdk-samples/scripts/sendAPIRequest.py.

  2. Mettez à jour la url variable avec le lien API pourListRestApiMonitorOperatorEndpointxxxx. Vous pouvez trouver cette URL dans le résultat de la commande de déploiement d'AWS CDK ou sur la console AWS Cloudformation, dans l'onglet Sorties de la pile.

  3. Enregistrez et fermez le fichier .

  4. Exécutez le script Python à l'aide de la commande :

    $python sendAPIRequest.py
  5. Assurez-vous d'obtenir un code de statut 200.

  6. Vous devrez peut-être exécuter le script via plusieurs terminaux (de préférence quatre) pour injecter du trafic à un débit élevé.

  7. Une fois le script exécuté en boucle pendant environ 10 minutes, vous pouvez voir un aperçu du fonctionnement sur la console DevOps Guru.

DevOps ingénieur

Passez en revue DevOps Guru Insights.

Dans des conditions standard, le tableau de bord DevOps Guru affiche zéro dans le compteur d'informations continues. S'il détecte une anomalie, il déclenche une alerte sous forme d'aperçu. Dans le volet de navigation, choisissez Insights pour voir les détails de l'anomalie, notamment une vue d'ensemble, des mesures agrégées, des événements pertinents et des recommandations. Pour plus d'informations sur l'examen des informations, consultez le billet de blog Obtenir des informations opérationnelles grâce à l'AIOps à l'aide d'Amazon DevOps Guru.

DevOps ingénieur
TâcheDescriptionCompétences requises

Nettoyez et supprimez les ressources.

Après avoir suivi ce schéma, vous devez supprimer les ressources que vous avez créées pour éviter d'encourir des frais supplémentaires. Exécutez les commandes suivantes :

$cdk destroy CdkDevopsGuruStackMultiAccReg --profile administrator $cdk destroy CdkDevopsguruStackOrgUnit --profile administrator $cdk destroy CdkDevopsGuruStackMultiAccRegSpecStacks --profile administrator $cdk destroy CdkInfrastructureStack --profile administrator $cdk destroy CdkStackSetAdminRole --profile administrator $cdk destroy CdkStackSetExecRole --profile administrator $cdk destroy CdkStackSetExecRole --profile target
DevOps ingénieur

Ressources connexes