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.
CloudFormation meilleures pratiques
Les meilleures pratiques sont des recommandations qui peuvent vous aider à l'utiliser CloudFormation plus efficacement et à adopter des pratiques sûres tout au long de son flux de travail. Découvrez comment planifier et organiser vos piles, comment créer des modèles qui décrivent vos ressources et les applications qui y sont exécutées, et comment gérer vos piles et leurs ressources. Les meilleures pratiques suivantes sont basées sur l'expérience réelle des CloudFormation clients actuels.
- Planification et organisation
-
-
Raccourcissez la boucle de feedback pour accélérer le développement
-
Utiliser des références croisées pour renvoyer la valeur d'une sortie exportée par une autre pile
-
Utilisation AWS CloudFormation StackSets pour les déploiements multicomptes et multirégions
-
Réutilisation de modèles pour répliquer des piles dans plusieurs environnements
-
Utiliser des modules pour réutiliser les configurations de ressources
-
- Création de modèles
- Gestion des piles
-
-
Création de jeux de modification avant la mise à jour des piles
-
Utilisez des politiques de gestion des stocks pour protéger les ressources
-
AWS CloudTrail À utiliser pour enregistrer CloudFormation les appels
-
Utilisation des révisions de code et des contrôles de révision pour gérer les modèles
-
Configurer les déclencheurs de restauration pour une restauration automatique
-
Utilisez les CloudFormation Hooks pour la gestion du cycle de vie
- Outils de création
- Conformité et sécurité
Raccourcissez la boucle de feedback pour accélérer le développement
Adoptez des pratiques et des outils qui vous aident à raccourcir la boucle de rétroaction pour votre infrastructure que vous décrivez à l'aide CloudFormation de modèles. Il s'agit notamment de procéder à un linting et à des tests précoces de vos modèles sur votre poste de travail ; vous pouvez ainsi détecter d'éventuels problèmes de syntaxe et de configuration avant même de soumettre vos contributions à un référentiel de code source. La détection précoce de ces problèmes permet d'éviter qu'ils atteignent les environnements formels du cycle de vie, tels que le développement, l'assurance qualité et la production. Cette approche de test précoce et d'interruption immédiate vous permet de réduire le temps d'attente pour le remaniement, de réduire les zones d'impact potentielles et d'accroître votre niveau de confiance dans la réussite des opérations de dimensionnement.
Parmi les outils qui vous aident à adopter des pratiques rapides, citons AWS CloudFormation Lintercfn-lint) et TaskCatcfn-lintoutil vous permet de valider vos CloudFormation modèles par rapport à la spécification AWS CloudFormation des ressources. Il s'agit notamment de vérifier les valeurs valides des propriétés des ressources, ainsi que les meilleures pratiques. Des plugins cfn-lint sont disponibles pour un certain nombre d'éditeurs de codecfn-lint dans la configuration de votre référentiel de code source, afin de pouvoir valider le modèle lorsque vous validez vos contributions. Pour plus d'informations, consultez la section Validation préalable des AWS CloudFormation modèles par Git avec cfn-lintcfn-lint éventuels, vous pouvez tester vos modèles en créant des TaskCat piles par programmation dans le fichier de votre choix. Régions AWS TaskCat génère également un rapport avec des pass/fail notes pour chaque région que vous avez choisie.
Pour une step-by-step présentation pratique de la façon d'utiliser les deux outils pour raccourcir la boucle de rétroaction, suivez le laboratoire de peluchage et de test
Organisation des piles par cycle de vie et propriétaire
Utilisez le cycle de vie et la propriété de vos AWS ressources pour vous aider à décider quelles ressources doivent figurer dans chaque pile. Au départ, une pile peut suffire à contenir toutes vos ressources. Toutefois, à mesure que votre pile s'agrandit et se diversifie, sa gestion peut devenir longue et compliquée. En regroupant les ressources par cycle de vie et par propriétaire, les utilisateurs peuvent apporter des modifications à leur ensemble de ressources avec leurs propres processus et leur planification sans affecter les autres ressources.
Par exemple, imaginez une équipe de développeurs et d'ingénieurs qui possède un site Web hébergé sur des instances Amazon EC2 Auto Scaling derrière un équilibreur de charge. Comme le site web a son propre cycle de vie et qu'il est géré par l'équipe web, vous pouvez créer une pile pour le site web et ses ressources. Imaginez maintenant que le site web utilise également des bases de données principales, qui se trouvent dans une pile distincte où elles sont gérées par les administrateurs de base de données qui en sont également les propriétaires. Chaque fois que les membres de l'équipe web ou de l'équipe de base de données doivent mettre à jour leurs ressources, ils peuvent le faire sans affecter la pile de l'autre équipe. Si toutes les ressources étaient dans une seule pile, la coordination et la communication des mises à jour pourraient être difficiles.
Pour plus d'informations sur l'organisation de vos piles, vous pouvez utiliser deux structures communes : une architecture multicouche et une architecture orientée services (SOA).
Une architecture multicouche organise les piles dans plusieurs couches horizontales qui se chevauchent et où chaque couche dépend de la couche sous-jacente. Vous pouvez avoir une ou plusieurs piles dans chaque couche. Toutefois, les ressources AWS des piles de chaque couche doivent avoir des cycles de vie et un propriétaire similaires.
Avec une architecture orientée services, vous pouvez organiser les problématiques stratégiques d'une entreprise en portions gérables. Chacune de ces portions est un service dont l'objectif est clairement défini et qui représente une unité autonome de fonctionnalités. Vous pouvez mapper ces services avec des piles, où chaque pile a son propre cycle de vie et ses propriétaires. Ces services (piles) peuvent être reliés pour qu'ils puissent interagir les uns avec les autres.
Utiliser des références croisées pour renvoyer la valeur d'une sortie exportée par une autre pile
Lorsque vous organisez vos AWS ressources en fonction du cycle de vie et de la propriété, vous souhaiterez peut-être créer une pile qui utilise des ressources se trouvant dans une autre pile. Vous pouvez coder des valeurs en dur ou utiliser des paramètres d'entrée pour transmettre les noms des ressources et IDs. Toutefois, ces méthodes peuvent rendre difficile la réutilisation de modèles ou accroître les traitements nécessaires à l'exécution d'une pile. Utilisez plutôt des références croisées pour renvoyer la valeur d'une sortie exportée par une autre pile afin que d'autres piles puissent les utiliser. Les piles peuvent utiliser les ressources exportées en les appelant à l'aide de la fonction Fn::ImportValue.
Par exemple, si vous disposez d'une pile de réseau constituée d'un VPC, d'un groupe de sécurité et d'un sous-réseau, et que vous souhaitez que toutes les applications web publiques utilisent ces ressources, vous devez exporter ces dernières. Toutes les piles dotées d'applications web publiques pourront ainsi les utiliser. Pour de plus amples informations, veuillez consulter Obtenir des sorties exportées à partir d'une CloudFormation pile déployée.
Utilisation AWS CloudFormation StackSets pour les déploiements multicomptes et multirégions
AWS CloudFormation StackSets étendez les fonctionnalités des piles en vous permettant de créer, de mettre à jour ou de supprimer des piles sur plusieurs comptes et régions en une seule opération. StackSets À utiliser pour déployer des composants d'infrastructure communs, des contrôles de conformité ou des services partagés au sein de votre organisation.
Lors de l'utilisation StackSets, implémentez les autorisations gérées par les services AWS Organizations pour simplifier la gestion des autorisations. Cette approche vous permet de déployer sur des comptes StackSets au sein de votre organisation sans avoir à configurer manuellement les rôles IAM dans chaque compte.
Pour plus d'informations sur les StackSets concepts, StackSets voir.
Vérification des quotas pour tous les types de ressource
Avant de lancer une pile, assurez-vous de pouvoir créer toutes les ressources que vous souhaitez sans atteindre les limites de votre AWS compte. Si vous atteignez une limite, vous ne CloudFormation créerez pas votre pile avec succès tant que vous n'aurez pas augmenté votre quota ou supprimé des ressources supplémentaires. Chaque service peut imposer des limites différentes que vous devez connaître avant de lancer une pile. Par exemple, par défaut, vous ne pouvez lancer que 2 000 CloudFormation piles par région dans votre Compte AWS. Pour plus d'informations sur les limites et sur l'augmentation des limites par défaut, consultez service quotas AWS dans Références générales AWS.
Réutilisation de modèles pour répliquer des piles dans plusieurs environnements
Une fois que les piles et les ressources sont configurées, vous pouvez réutiliser vos modèles afin de répliquer votre infrastructure dans plusieurs environnements. Par exemple, vous pouvez créer des environnements de développement, de test et de production afin de pouvoir tester les modifications avant de les migrer en production. Pour que les modèles soient réutilisables, recourez aux sections Parameters, Mappings et Conditions afin de personnaliser les piles lorsque vous les créez. Par exemple, pour vos environnements de développement, vous pouvez spécifier un type d'instance qui coûte moins cher que votre environnement de production, mais où toutes les autres configurations et tous les autres paramètres restent les mêmes. Pour plus d'informations sur les paramètres, les mappages et les conditions, consultez CloudFormation sections du modèle.
Utiliser des modules pour réutiliser les configurations de ressources
A mesure que votre infrastructure s'agrandit, des tendances peuvent émerger où vous déclarez les mêmes composants dans chacun de vos modèles. Les modules vous permettent d'empaqueter des configurations de ressources pour les inclure dans les modèles de pile, de manière transparente, gérable et reproductible. Les modules peuvent encapsuler les configurations de service courantes et les bonnes pratiques en tant que blocs de création modulaires et personnalisables à inclure dans vos modèles de pile.
Ces éléments de base peuvent concerner une seule ressource, comme les meilleures pratiques pour définir une instance Amazon Elastic Compute Cloud (Amazon EC2), ou plusieurs ressources, afin de définir des modèles communs d'architecture d'application. Ces éléments de base peuvent être imbriqués dans d'autres modules, afin que vous puissiez regrouper vos meilleures pratiques dans des éléments de base de niveau supérieur. CloudFormation les modules sont disponibles dans le CloudFormation registre, vous pouvez donc les utiliser comme une ressource native. Lorsque vous utilisez un CloudFormation module, le modèle de module est développé dans le modèle de consommation, ce qui vous permet d'accéder aux ressources du module à l'aide d'un Ref ou d'un Fn : : GetAtt. Pour de plus amples informations, veuillez consulter Créez des configurations de ressources réutilisables qui peuvent être incluses dans les modèles à l'aide de CloudFormation modules.
Adopter l'infrastructure comme pratique de code
Traitez vos CloudFormation modèles comme du code en mettant en œuvre des pratiques d'infrastructure en tant que code (IaC). Stockez vos modèles dans des systèmes de contrôle de version, mettez en œuvre des révisions de code et utilisez des tests automatisés pour valider les modifications. Cette approche garantit la cohérence, améliore la collaboration et fournit une piste d'audit pour les modifications de l'infrastructure.
Envisagez d'implémenter des CI/CD pipelines pour votre code d'infrastructure afin d'automatiser les tests et le déploiement de vos CloudFormation modèles. Des outils tels que AWS CodePipeline AWS CodeBuild, et AWS CodeDeploy peuvent être utilisés pour créer des flux de travail automatisés pour les déploiements de votre infrastructure.
Pour plus d'informations sur la mise en œuvre des meilleures pratiques IaC, voir Utilisation en AWS CloudFormation tant qu'outil IaC.
Pour plus d'informations sur l'utilisation de la livraison continue avec CloudFormation, consultez la section Livraison continue avec CodePipeline.
N'intégrez pas d'informations d'identification dans vos modèles
Plutôt que d'intégrer des informations sensibles dans vos CloudFormation modèles, nous vous recommandons d'utiliser des références dynamiques dans votre modèle de pile.
Les références dynamiques constituent un moyen compact et puissant de référencer des valeurs externes stockées et gérées dans d'autres services, tels que le magasin de paramètres de AWS Systems Manager ou le gestionnaire de AWS secrets. Lorsque vous utilisez une référence dynamique, CloudFormation récupère la valeur de la référence spécifiée lorsque cela est nécessaire lors des opérations de pile et de modification des ensembles de modifications, et transmet la valeur à la ressource appropriée. Cependant, CloudFormation ne stocke jamais la valeur de référence réelle. Pour de plus amples informations, veuillez consulter Utilisation de références dynamiques pour spécifier des valeurs de modèle.
AWS Secrets Manager vous aide à chiffrer, stocker et récupérer en toute sécurité les informations d'identification pour vos bases de données et autres services. AWS Systems Manager Parameter Store offre un stockage sécurisé et hiérarchique de la gestion des données de configuration.
Pour plus d'informations sur la définition des paramètres de modèle, consultez CloudFormation Parameterssyntaxe du modèle.
Utiliser des AWS types de paramètres spécifiques
Si votre modèle nécessite des entrées pour AWS des valeurs spécifiques existantes, telles qu'Amazon Virtual Private Cloud existant IDs ou un nom de paire de EC2 clés Amazon, utilisez des types de paramètres AWS spécifiques. Par exemple, vous pouvez spécifier un paramètre en tant que typeAWS::EC2::KeyPair::KeyName, qui prend le nom d'une paire de clés existante qui se trouve dans votre région Compte AWS et dans la région dans laquelle vous créez la pile. CloudFormation peut rapidement valider les valeurs pour des types de paramètres AWS spécifiques avant de créer votre pile. De plus, si vous utilisez la CloudFormation console, elle CloudFormation affiche une liste déroulante de valeurs valides, de sorte que vous n'avez pas à rechercher ou à mémoriser les noms de VPC IDs ou de paires de clés corrects. Pour de plus amples informations, veuillez consulter Spécifiez les ressources existantes au moment de l'exécution avec les CloudFormation types de paramètres fournis.
Utilisation de contraintes de paramètre
Avec les contraintes, vous pouvez décrire les valeurs d'entrée autorisées afin CloudFormation de détecter toute valeur non valide avant de créer une pile. Vous pouvez définir des contraintes comme une longueur minimale, une longueur maximale et des modèles autorisés. Par exemple, vous pouvez définir des contraintes au niveau de la valeur du nom d'utilisateur d'une base de données, de sorte qu'elle contienne au moins huit caractères alphanumériques. Pour de plus amples informations, veuillez consulter CloudFormation Parameterssyntaxe du modèle.
Utiliser des pseudoparamètres pour promouvoir la portabilité
Vous pouvez utiliser des pseudo-paramètres dans vos modèles comme arguments pour des fonctions intrinsèques, telles que Ref et Fn::Sub. Les pseudo-paramètres sont des paramètres prédéfinis par CloudFormation. Vous ne les déclarez pas dans le modèle. L'utilisation de pseudo-paramètres dans les fonctions intrinsèques augmente la portabilité de vos modèles de stack entre les régions et les comptes.
Par exemple, imaginez que vous souhaitiez créer un modèle dans lequel, pour une propriété de ressource donnée, vous devez spécifier l'Amazon Resource Name (ARN) d'une autre ressource existante. Dans ce cas, la ressource existante est une ressource AWS Systems Manager
Parameter Store avec l'ARN suivant : arn:aws:ssm:us-east-1:123456789012:parameter/MySampleParameter. Vous devrez adapter le format ARN à votre AWS partition cible, à votre région et à votre identifiant de compte. Au lieu de coder ces valeurs en dur, vous pouvez utiliser des pseudo-paramètres AWS::Partition, AWS::Region et AWS::AccountId pour rendre votre modèle plus portable. Dans ce cas, l'exemple suivant vous montre comment concaténer des éléments d'un ARN avec :. CloudFormation !Sub
'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter
Pour un autre exemple, supposons que vous souhaitiez partager des ressources ou des configurations entre plusieurs piles. Dans cet exemple, supposons que vous avez créé un sous-réseau pour votre VPC, puis exporté son ID pour l'utiliser avec d'autres piles du même VPC et de la Compte AWS même région. Dans une autre pile, vous faites référence à la valeur exportée de l'ID de sous-réseau lorsque vous décrivez une EC2 instance Amazon. Pour un exemple détaillé de l’utilisation du champ de sortie Export et de la fonction intrinsèque Fn::ImportValue, consultez Référez-vous aux sorties de ressources dans une autre CloudFormation pile.
Les exportations de Stack doivent être uniques par compte et par région. Dans ce cas, vous pouvez donc utiliser le pseudo paramètre AWS::StackName pour créer un préfixe pour votre exportation. Comme les noms de pile doivent également être uniques par compte et par région, l'utilisation de ce pseudo paramètre comme préfixe augmente la possibilité d'avoir un nom d'exportation unique tout en promouvant une approche réutilisable entre les piles à partir desquelles vous exportez des valeurs. Vous pouvez également utiliser un préfixe de votre choix.
AWS::CloudFormation::InitÀ utiliser pour déployer des applications logicielles sur des EC2 instances Amazon
Lorsque vous lancez des stacks, vous pouvez installer et configurer des applications logicielles sur des EC2 instances Amazon à l'aide du script d'cfn-initassistance et de la AWS::CloudFormation::Init ressource. Avec AWS::CloudFormation::Init, vous pouvez décrire les configurations de votre choix au lieu de créer des scripts pour chaque étape de la procédure. Vous pouvez également mettre à jour les configurations sans avoir à recréer les instances. Et en cas de problème avec votre configuration, CloudFormation génère des journaux que vous pouvez utiliser pour étudier les problèmes.
Dans le modèle, spécifiez les états de l'installation et de la configuration dans la ressource AWS::CloudFormation::Init. Pour une procédure pas à pas expliquant comment utiliser cfn-init etAWS::CloudFormation::Init, voirDéployez des applications sur Amazon EC2.
Utilisation des derniers scripts d'assistant
Les scripts CloudFormation d'assistance sont régulièrement mis à jour. Veillez à inclure la commande suivante dans la propriété UserData de votre modèle avant d'appeler les scripts d'assistant pour vous assurer que vos instances lancées obtiennent les derniers scripts d'assistant :
yum install -y aws-cfn-bootstrap
Pour plus d'informations sur l'obtention des derniers scripts d'assistance, consultez la référence des scripts d'CloudFormation assistance dans le Guide de référence des AWS CloudFormation modèles.
Validation des modèles avant leur utilisation
Avant d'utiliser un modèle pour créer ou mettre à jour une pile, vous pouvez l'utiliser CloudFormation pour le valider. La validation d'un modèle peut vous aider à détecter les erreurs de syntaxe et certaines erreurs sémantiques, telles que les dépendances circulaires, avant de CloudFormation créer des ressources. Si vous utilisez la CloudFormation console, celle-ci valide automatiquement le modèle une fois que vous avez spécifié les paramètres d'entrée. Pour l' CloudFormation API AWS CLI or, utilisez la commande validate-templateCLI ou ValidateTemplatel'opération API.
Lors de la validation, CloudFormation vérifiez d'abord si le modèle est un JSON valide. Si ce n'est pas le cas, CloudFormation vérifie si le modèle est dans un format YAML valide. Si les deux vérifications échouent, CloudFormation renvoie une erreur de validation du modèle.
Valider les modèles pour la conformité des politiques de l'organisation
Vous pouvez également valider la conformité de votre modèle aux directives de la politique de l'organisation. AWS CloudFormation Guard (cfn-guard) est un outil d'interface de ligne de commande (CLI) open source qui fournit un policy-as-code langage permettant de définir des règles permettant de vérifier les configurations de ressources requises et interdites. Il vous permet ensuite de valider vos modèles par rapport à ces règles. Par exemple, les administrateurs peuvent créer des règles pour garantir que les utilisateurs créent toujours des compartiments Amazon S3 chiffrés.
Vous pouvez l'utiliser cfn-guard soit localement, lors de la modification des modèles, soit automatiquement dans le cadre d'un CI/CD pipeline pour arrêter le déploiement de ressources non conformes.
En outre, cfn-guard inclut une fonctionnalité qui vous permet d'extraire des règles à partir de CloudFormation modèles conformes existants. rulegen
Pour plus d'informations, consultez le référentiel cfn-guard
Utilisation de YAML ou JSON pour la création de modèles
CloudFormation prend en charge les formats YAML et JSON pour les modèles. Chacune a ses avantages, et le choix dépend de vos besoins spécifiques :
Utilisez YAML lorsque
-
Vous privilégiez la lisibilité humaine et la maintenabilité
-
Vous souhaitez inclure des commentaires pour documenter votre modèle
-
Vous travaillez sur des modèles complexes avec des structures imbriquées
-
Vous souhaitez utiliser des fonctionnalités spécifiques à YAML, telles que les ancres et les alias, pour réduire les répétitions
Utilisez JSON lorsque :
-
Vous devez intégrer des outils ou des systèmes qui préfèrent le JSON
-
Vous travaillez sur la génération ou la manipulation de modèles programmatiques
-
Vous avez besoin d'une validation stricte des données
Le langage YAML est généralement recommandé pour la création manuelle de modèles en raison de sa lisibilité et de sa prise en charge des commentaires. C'est particulièrement utile pour les modèles complexes où la structure basée sur l'indentation permet de visualiser les hiérarchies de ressources. Le JSON peut être avantageux dans les flux de travail automatisés ou lorsque vous travaillez avec APIs des entrées JSON attendues. C'est également avantageux lorsque vous devez garantir le strict respect d'une structure spécifique. Quel que soit le format que vous choisissez, concentrez-vous sur la création de modèles bien structurés, documentés et maintenables. Si vous utilisez le langage YAML, tirez parti de ses fonctionnalités telles que les ancres et les alias pour réduire les répétitions et améliorer la maintenabilité.
Mettre en œuvre une stratégie de balisage complète
Mettez en œuvre une stratégie de balisage cohérente pour toutes les ressources créées par vos CloudFormation modèles. Les balises facilitent l'organisation des ressources, la répartition des coûts, le contrôle d'accès et l'automatisation. Envisagez d'inclure des balises pour l'environnement, le propriétaire, le centre de coûts, l'application et le but.
Utilisez la Tags propriété de la AWS::CloudFormation::Stack ressource pour appliquer des balises à toutes les ressources prises en charge dans une pile. Vous pouvez également utiliser la TagSpecifications propriété disponible sur de nombreux types de ressources pour appliquer des balises lors de la création des ressources.
Pour plus d'informations sur le balisage, consultez la section Balise de ressource.
Tirez parti des macros de modèles pour des transformations avancées
CloudFormation les macros vous permettent d'effectuer un traitement personnalisé sur des modèles, qu'il s'agisse d'actions simples telles que find-and-replace des opérations ou de transformations complexes générant des ressources supplémentaires. Utilisez des macros pour étendre les fonctionnalités des CloudFormation modèles et implémenter des modèles réutilisables au sein de votre organisation.
AWS Serverless Application Model Voici un exemple de macro qui simplifie le développement d'applications sans serveur. Envisagez de créer des macros personnalisées pour des modèles et des exigences spécifiques à l'organisation.
Pour plus d'informations sur l'utilisation des macros dans vos modèles, consultez la section Présentation des CloudFormation macros.
Gérez toutes les ressources de la pile via CloudFormation
Après avoir lancé une pile, utilisez la CloudFormation console
Pour plus d'informations sur la dérive, voirQu'est-ce qu'un écart ?.
Pour plus d'informations sur la mise à jour des piles, consultezMise à jour d'une pile.
Création de jeux de modification avant la mise à jour des piles
Les ensembles de modifications vous permettent de voir comment les modifications proposées à une pile peuvent avoir un impact sur vos ressources courantes avant de les implémenter. CloudFormation n'apporte aucune modification à votre pile tant que vous n'avez pas exécuté l'ensemble de modifications, ce qui vous permet de décider de poursuivre les modifications proposées ou de créer un autre ensemble de modifications.
Utilisez les jeux de modification pour vérifier l'impact possible des modifications sur les ressources exécutées, notamment les ressources critiques. Par exemple, si vous modifiez le nom d'une instance de base de données Amazon RDS, CloudFormation vous créez une nouvelle base de données et supprimez l'ancienne ; vous perdrez les données de l'ancienne base de données à moins que vous ne les ayez déjà sauvegardées. Si vous générez un jeu de modification, vous verrez que la modification remplacera la base de données. Vous pouvez donc vous préparer à la mise à jour la pile en conséquence. Pour de plus amples informations, veuillez consulter Mettre à jour CloudFormation les piles à l'aide d'ensembles de modifications.
Utilisez des politiques de gestion des stocks pour protéger les ressources
Les politiques de pile contribuent à protéger les ressources critiques d'une pile contre toute mise à jour accidentelle qui pourrait entraîner l'interruption des ressources, voire leur remplacement. Une politique de pile est un document JSON qui décrit les actions de mise à jour qui peuvent être effectuées au niveau des ressources désignées. Spécifiez une politique de pile chaque fois que vous créez une pile qui contient des ressources critiques.
Pendant une mise à jour de la pile, vous devez spécifier explicitement les ressources protégées que vous souhaitez mettre à jour. Dans le cas contraire, aucune modification ne sera apportée aux ressources protégées. Pour de plus amples informations, veuillez consulter Empêcher les mises à jour des ressources de la pile.
AWS CloudTrail À utiliser pour enregistrer CloudFormation les appels
AWS CloudTrail suit toute personne effectuant des appels d' CloudFormation API dans votre Compte AWS. Les appels d'API sont enregistrés chaque fois que quelqu'un utilise l' CloudFormation API, la CloudFormation console, une console principale ou des CloudFormation AWS CLI commandes. Activez la journalisation et spécifiez un compartiment Amazon S3 pour y stocker les journaux. Ainsi, si vous en avez besoin, vous pouvez vérifier qui a effectué quel CloudFormation appel sur votre compte.
Pour de plus amples informations, veuillez consulter Journalisation des appels d' AWS CloudFormation API avec AWS CloudTrail.
Utilisation des révisions de code et des contrôles de révision pour gérer les modèles
Vos modèles de pile décrivent la configuration de vos AWS ressources, telles que les valeurs de leurs propriétés. Pour passer en revue les modifications et pour conserver un historique précis de vos ressources, utilisez les révisions de code et les contrôles de révision. Ces méthodes vous permettent de suivre les modifications apportées entre différentes versions de vos modèles, ce qui peut vous aider à identifier les modifications apportées aux ressources de votre pile. En outre, en conservant un historique, vous pouvez toujours restaurer la pile sur la base d'une certaine version de votre modèle.
Mettez régulièrement à jour vos EC2 instances Amazon
Sur toutes vos instances Amazon EC2 Windows et les instances Amazon EC2 Linux créées avec CloudFormation, exécutez régulièrement la yum update commande pour mettre à jour le package RPM. Cela garantit que vous obtenez les derniers correctifs et mises à jour de sécurité.
Utilisez régulièrement la détection de dérive
Utilisez régulièrement la fonction de détection de CloudFormation dérive pour identifier les ressources qui ont été modifiées en dehors de la CloudFormation gestion. La détection et la résolution de la dérive contribuent à préserver l'intégrité de votre infrastructure à mesure que le code approche et à garantir que vos modèles reflètent fidèlement l'état de vos ressources déployées.
Envisagez de mettre en œuvre une détection automatique de la dérive dans le cadre de vos procédures opérationnelles. Vous pouvez utiliser AWS Lambda les fonctions déclenchées par EventBridge les règles d'Amazon pour vérifier régulièrement l'absence de dérive et informer votre équipe lorsque des anomalies sont détectées.
Pour plus d'informations sur la dérive, voir Détecter les modifications de configuration non gérées apportées aux piles et aux ressources grâce à la détection de dérive.
Configurer les déclencheurs de restauration pour une restauration automatique
Utilisez des déclencheurs d'annulation pour spécifier les CloudWatch alarmes Amazon qui CloudFormation doivent être surveillées lors des opérations de création et de mise à jour de la pile. Si l'une des alarmes spécifiées passe à l'ALARMétat, annule CloudFormation automatiquement l'ensemble du fonctionnement de la pile, afin de garantir la stabilité de votre infrastructure.
Configurez des déclencheurs d'annulation pour des indicateurs critiques tels que les taux d'erreur des applications, l'utilisation des ressources du système ou des indicateurs commerciaux personnalisés qui indiquent l'état de santé de votre application et de votre infrastructure.
Pour plus d'informations sur les déclencheurs d'annulation, consultez la section Restaurer votre pile en cas de violation d'une alarme.
Mettez en œuvre des stratégies de refactoring efficaces
Au fur et à mesure que votre infrastructure évolue, vous devrez peut-être refactoriser vos CloudFormation stacks pour améliorer la maintenabilité, réduire la complexité ou vous adapter à l'évolution des exigences. Le Stack Refactoring implique de restructurer vos modèles et vos ressources tout en préservant leur comportement et leurs fonctionnalités externes. Il est avantageux d'utiliser le refactoring de la pile des CloudFormation manières suivantes :
-
Division des piles monolithiques : décomposer les grandes piles complexes en piles plus petites et plus faciles à gérer, organisées par cycle de vie ou par propriétaire
-
Consolidation des ressources connexes : combinaison de ressources connexes issues de plusieurs piles en une seule pile cohérente pour simplifier la gestion
-
Extraction de composants réutilisables : transfert de modèles courants dans des modules ou des piles imbriquées pour favoriser la réutilisation et la cohérence
-
Améliorer l'organisation des ressources : restructuration des ressources au sein d'une pile pour mieux refléter leurs relations et leurs dépendances
Pour plus d'informations sur la refactorisation de vos CloudFormation piles, consultez. Refactorisation des piles
Utilisez les CloudFormation Hooks pour la gestion du cycle de vie
CloudFormation Les hooks fournissent du code qui inspecte de manière proactive la configuration de vos AWS ressources avant le provisionnement et effectue des contrôles de validation complexes. Hooks vérifie si vos ressources, vos piles et vos ensembles de modifications sont conformes aux besoins de sécurité, d'exploitation et d'optimisation des coûts de votre organisation. Ils fournissent des avertissements avant le provisionnement d'une ressource, ou avant l'échec de l'opération et son arrêt complet, selon la façon dont elle a été configurée. Les violations et les avertissements sont enregistrés sur Amazon CloudWatch afin de fournir une visibilité sur les déploiements non conformes.
Pour plus d'informations sur ces meilleures pratiques relatives aux Hooks, voir Concepts AWS CloudFormation des Hooks.
Pour plus d'informations sur ce que les Hooks peuvent faire pour vos CloudFormation ressources, voir Que sont les AWS CloudFormation Hooks ?
Utilisez le générateur iAC pour créer des modèles à partir de ressources existantes
Le générateur CloudFormation iAC (infrastructure en tant que code) vous aide à créer des CloudFormation modèles à partir de vos AWS ressources existantes. Cette fonctionnalité est particulièrement utile lorsque vous devez répliquer une infrastructure existante, documenter des ressources créées manuellement ou gérer des ressources non gérées auparavant. CloudFormation Le générateur IaC est utile pour créer vos CloudFormation modèles de la manière suivante :
-
Création accélérée de modèles : générez des modèles à partir de ressources existantes au lieu de les écrire de toutes pièces
-
Infrastructure cohérente : assurez-vous que les nouveaux environnements correspondent aux environnements existants en utilisant les modèles générés comme point de départ
-
Migration vers l'infrastructure sous forme de code : CloudFormation gestion progressive des ressources créées manuellement
-
Documentation : Créez un enregistrement de votre infrastructure existante sous forme de modèle
Pour plus d'informations sur le générateur iAC, voir Générer des modèles à partir de ressources existantes avec le générateur iAC.
Utilisation AWS Infrastructure Composer pour la conception de modèles visuels
AWS Infrastructure Composer est un outil de conception visuelle qui vous permet de créer, de visualiser et de modifier des CloudFormation modèles à l'aide d'une drag-and-drop interface. Cela peut être particulièrement bénéfique lorsqu'il est utilisé de la CloudFormation manière suivante :
-
Planification de l'architecture : conception et validation des architectures d'infrastructure avant leur mise en œuvre
-
Modernisation des modèles : visualisez les modèles existants pour comprendre leur structure et identifier les opportunités d'amélioration
-
Formation et intégration : aidez les nouveaux membres de l'équipe à comprendre les CloudFormation concepts et les relations AWS de service grâce à l'apprentissage visuel
-
Communication avec les parties prenantes : présentez les conceptions d'infrastructure aux parties prenantes non techniques à l'aide de représentations visuelles claires
-
Examens de conformité : utilisez des diagrammes visuels pour faciliter les examens de sécurité et de conformité de vos conceptions d'infrastructure
-
Examens de conformité : utilisez des diagrammes visuels pour faciliter les examens de sécurité et de conformité de vos conceptions d'infrastructure
Pour plus d'informations sur Infrastructure Composer, voir Qu'est-ce que c'est AWS Infrastructure Composer ? .
Envisagez de l'utiliser AWS Cloud Development Kit (AWS CDK) pour une infrastructure complexe
Pour les exigences d'infrastructure complexes, pensez à utiliser le CDK pour définir vos ressources cloud à l'aide de langages de programmation TypeScript courants tels que Python, Java et .NET. AWS CDK génère CloudFormation des modèles à partir de votre code, ce qui vous permet de tirer parti de toutes les fonctionnalités CloudFormation tout en utilisant les abstractions et les constructions de programmation de votre langage préféré.
AWS CDK Il fournit des constructions de haut niveau qui encapsulent les meilleures pratiques et simplifient la définition des modèles d'infrastructure courants. Cela peut réduire considérablement la quantité de code nécessaire pour définir votre infrastructure tout en garantissant le respect des meilleures pratiques.
Pour plus d'informations sur le CDK, consultez AWS Cloud Development Kit (AWS CDK).
Utilisation du contrôle d'accès IAM
IAM est un AWS service que vous pouvez utiliser pour gérer les utilisateurs et leurs autorisations. AWS Vous pouvez utiliser IAM with CloudFormation pour spécifier les CloudFormation actions que les utilisateurs peuvent effectuer, telles que l'affichage des modèles de piles, la création de piles ou la suppression de piles. En outre, toute personne qui gère les piles CloudFormation a besoin des autorisations d'accès requises aux ressources de ces piles. Par exemple, si les utilisateurs souhaitent lancer CloudFormation , mettre à jour ou résilier des EC2 instances Amazon, ils doivent être autorisés à lancer les EC2 actions Amazon pertinentes.
Dans la plupart des cas, les utilisateurs ont besoin d'un accès complet pour gérer toutes les ressources dans un modèle. CloudFormation effectue des appels pour créer, modifier et supprimer ces ressources en leur nom. Pour séparer les autorisations entre un utilisateur et le CloudFormation service, utilisez un rôle de service. CloudFormation utilise la politique du rôle de service pour effectuer des appels au lieu de la politique de l'utilisateur. Pour de plus amples informations, veuillez consulter AWS CloudFormation rôle de service.
Appliquer le principe du moindre privilège
Lorsque vous configurez des rôles IAM pour des rôles de CloudFormation service ou pour des ressources créées par vos modèles, appliquez toujours le principe du moindre privilège. Accordez uniquement les autorisations nécessaires aux fonctionnalités prévues et évitez d'utiliser des autorisations génériques dans la mesure du possible.
Utilisez IAM Access Analyzer pour examiner les autorisations accordées à vos rôles de CloudFormation service et identifier les autorisations non utilisées qui peuvent être supprimées. Passez régulièrement en revue et mettez à jour les politiques IAM pour vous assurer qu'elles restent conformes à vos exigences de sécurité.
Paramètres sensibles sécurisés
Pour les informations sensibles telles que les mots de passe, les clés d'API et autres secrets, utilisez AWS Systems Manager Parameter Store ou AWS Secrets Manager au lieu de les intégrer directement dans vos modèles. Utilisez des références dynamiques dans vos modèles pour récupérer ces valeurs en toute sécurité lors des opérations de stack.
Lorsque vous utilisez des paramètres dans vos modèles, définissez la NoEcho propriété sur true pour les paramètres sensibles afin d'empêcher l'affichage de leurs valeurs dans la console, les réponses de l'API ou la sortie de la CLI. Sachez que NoEcho cela n'empêche pas la valeur d'être enregistrée si elle est transmise à d'autres services ou ressources susceptibles de l'enregistrer.
Pour plus d'informations sur l'utilisation de AWS Systems Manager Parameter Store avec la CloudFormation section Obtenir une valeur en texte brut à partir de AWS Systems Manager Parameter Store.
Pour plus d'informations sur l'utilisation de la NoEcho propriété, consultez la section Syntaxe des paramètres du CloudFormation modèle.
Pour plus d'informations sur l'utilisation AWS Secrets Manager avec, CloudFormation voir Créer des AWS Secrets Manager secrets dans AWS CloudFormation.
Implémentez la politique sous forme de code avec AWS CloudFormation Guard
AWS CloudFormation Guard (cfn-guard) est un policy-as-code outil open source qui vous permet de définir et d'appliquer des règles pour vos CloudFormation modèles. cfn-guardUtilisez-le pour garantir que vos modèles sont conformes aux politiques organisationnelles, aux meilleures pratiques de sécurité et aux exigences de gouvernance.
cfn-guardIntégrez-les à vos CI/CD pipelines pour valider automatiquement les modèles par rapport à vos règles de politique avant leur déploiement. Cela permet d'empêcher le déploiement de ressources non conformes dans votre environnement et fournit des informations préliminaires aux développeurs en cas de violation des politiques.
Pour plus d'informations sur Guard, voir Qu'est-ce que c'est AWS CloudFormation Guard ?