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.
Stacks basés sur le bootstrap Windows CloudFormation
Cette rubrique explique comment démarrer une Windows pile et résoudre les problèmes liés à la création d'une pile.
Rubriques
Données utilisateur dans les EC2 instances
Les données utilisateur sont une EC2 fonctionnalité d'Amazon qui vous permet de transmettre des scripts ou des informations de configuration à une EC2 instance lors de son lancement.
Par Windows EC2 exemple :
-
Vous pouvez utiliser des scripts batch (à l'aide de
<script>
balises) ou PowerShell des scripts (à l'aide de<powershell>
balises). -
L'exécution du script est gérée parEC2Launch.
Important
Si vous créez votre propre Windows AMI à utiliser avec CloudFormation, assurez-vous que la EC2Launch version v2 est correctement configurée. EC2LaunchLa version v2 est requise pour que les outils d' CloudFormation amorçage initialisent et configurent correctement les Windows instances lors de la création de la pile. Pour plus d'informations, consultez la section Utiliser l'agent EC2Launch v2 pour effectuer des tâches lors du lancement d'une instance EC2 Windows dans le guide de EC2 l'utilisateur Amazon.
Pour plus d'informations à ce sujet AWS Windows AMIs, consultez la référence de l'AWSWindowsAMI.
CloudFormation scripts d'assistance
Les scripts d'assistance sont des utilitaires permettant de configurer des instances pendant le processus de démarrage. Utilisés avec les données EC2 utilisateur d'Amazon, ils fournissent de puissantes options de configuration.
CloudFormation fournit les scripts d'assistance Python suivants que vous pouvez utiliser pour installer des logiciels et démarrer des services sur une EC2 instance Amazon que vous créez dans le cadre de votre stack :
-
cfn-init
— À utiliser pour récupérer et interpréter les métadonnées des ressources, installer des packages, créer des fichiers et démarrer des services. -
cfn-signal
— À utiliser pour signaler avec unCreationPolicy
, afin de synchroniser les autres ressources de la pile lorsque la ressource ou l'application requise est prête. -
cfn-get-metadata
— À utiliser pour récupérer les métadonnées d'une ressource ou d'un chemin d'accès à une clé spécifique. -
cfn-hup
— À utiliser pour vérifier les mises à jour des métadonnées et exécuter des hooks personnalisés lorsque des modifications sont détectées.
Vous appelez les scripts directement à partir de votre modèle. Ces scripts interagissent avec les métadonnées des ressources qui sont définies dans le même modèle. Les scripts s'exécutent sur l' EC2instance Amazon pendant le processus de création de la pile.
Pour plus d'informations, consultez la référence aux scripts CloudFormation d'assistance dans le Guide de référence des AWS CloudFormation modèles.
Exemple de démarrage d'une pile Windows
Examinons des exemples d'extraits d'un Windows Server modèle qui exécute les actions suivantes :
-
Lance une EC2 instance nommée
TestInstance
à partir d'une AMI Windows Server 2022. -
Crée un fichier de test simple pour vérifier
cfn-init
qu'il fonctionne. -
Configure
cfn-hup
pour une gestion continue de la configuration. -
Utilise un
CreationPolicy
pour s'assurer que l'instance indique une exécution réussie.
Le script cfn-init
d'assistance est utilisé pour effectuer chacune de ces actions en fonction des informations contenues dans la AWS::CloudFormation::Init
ressource du modèle.
La AWS::CloudFormation::Init
section est nommée TestInstance
et commence par la déclaration suivante.
TestInstance: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: configSets: default: - create_files - start_services
Ensuite, la files
section de AWS::CloudFormation::Init
est déclarée.
create_files: files: c:\cfn\test.txt: content: !Sub | Hello from ${AWS::StackName} c:\cfn\cfn-hup.conf: content: !Sub | [main] stack=${AWS::StackName} region=${AWS::Region} interval=2 c:\cfn\hooks.d\cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.TestInstance.Metadata.AWS::CloudFormation::Init action=cfn-init.exe -v -s ${AWS::StackName} -r TestInstance -c default --region ${AWS::Region}
Trois fichiers sont créés ici et placés dans le C:\cfn
répertoire de l'instance du serveur :
-
test.txt
, un simple fichier de test qui vérifie lecfn-init
bon fonctionnement et permet de créer des fichiers avec du contenu dynamique. -
cfn-hup.conf
, le fichier de configuration pourcfn-hup
un intervalle de vérification de 2 minutes. -
cfn-auto-reloader.conf
, le fichier de configuration du hook utilisécfn-hup
pour lancer une mise à jour (appelcfn-init
) lorsque les métadonnéesAWS::CloudFormation::Init
changent.
Vient ensuite la start_services
section qui configure les Windows services.
start_services: services: windows: cfn-hup: enabled: true ensureRunning: true files: - c:\cfn\cfn-hup.conf - c:\cfn\hooks.d\cfn-auto-reloader.conf
Cette section garantit que le cfn-hup
service est démarré et redémarrera automatiquement si les fichiers de configuration sont modifiés. Le service surveille les modifications apportées aux CloudFormation métadonnées et s'exécute à nouveau cfn-init
lorsque des mises à jour sont détectées.
Vient ensuite la Properties
section.
TestInstance: Type: AWS::EC2::Instance CreationPolicy: ResourceSignal: Timeout: PT20M Metadata: AWS::CloudFormation::Init: # ... metadata configuration ... Properties: InstanceType: t2.large ImageId: '{{resolve:ssm:/aws/service/ami-windows-latest/Windows_Server-2022-English-Full-Base}}' SecurityGroupIds: - !Ref InstanceSecurityGroup KeyName: !Ref KeyPairName UserData: Fn::Base64: !Sub | <powershell> cfn-init.exe -v -s ${AWS::StackName} -r TestInstance -c default --region ${AWS::Region} cfn-signal.exe -e $lastexitcode --stack ${AWS::StackName} --resource TestInstance --region ${AWS::Region} </powershell>
Dans cette section, la UserData
propriété contient un PowerShell script qui sera exécuté parEC2Launch, entouré de <powershell>
balises. Le script s'exécute cfn-init
avec le default
ConfigSet, puis l'utilise cfn-signal
pour renvoyer le code de sortie à. CloudFormation Le CreationPolicy
est utilisé pour s'assurer que l'instance est correctement configurée avant que la création de la pile ne soit considérée comme terminée.
La ImageId
propriété utilise un paramètre public du magasin de paramètres Systems Manager pour récupérer automatiquement le dernier ID AMI Windows Server 2022. Cette approche élimine le besoin de mappages d'AMI spécifiques à une région et garantit que vous obtenez toujours l'AMI la plus récente. L'utilisation des paramètres de Systems Manager pour l'AMI IDs est une bonne pratique pour conserver les références AMI actuelles. Si vous prévoyez de vous connecter à votre instance, assurez-vous que la SecurityGroupIds
propriété fait référence à un groupe de sécurité qui autorise l'accès RDP.
Le CreationPolicy
est déclaré dans le cadre des propriétés de la ressource et spécifie un délai d'expiration. La cfn-signal
commande contenue dans les données utilisateur indique que la configuration de l'instance est terminée :
TestInstance: Type: AWS::EC2::Instance CreationPolicy: ResourceSignal: Timeout: PT20M Properties: # ... other properties ...
Comme le processus d'amorçage est minimal et ne crée que des fichiers et démarre des services, le délai d'CreationPolicy
attente est de 20 minutes (PT20 Mo) avant d'expirer. Le délai d'expiration est spécifié à l'aide du format de durée ISO 8601. Notez que le lancement Windows des instances prend généralement plus de temps que celui des instances Linux. Effectuez donc des tests approfondis afin de déterminer les valeurs de délai d'expiration les mieux adaptées à vos besoins.
Si tout se passe bien, l'CreationPolicy
opération se termine correctement et vous pouvez accéder à l'Windows Serverinstance en utilisant son adresse IP publique. Une fois la création de la pile terminée, l'ID de l'instance et l'adresse IP publique seront affichés dans l'onglet Sorties de la CloudFormation console.
Outputs: InstanceId: Value: !Ref TestInstance Description: Instance ID of the Windows Server PublicIP: Value: !GetAtt TestInstance.PublicIp Description: Public IP address of the Windows Server
Vous pouvez également vérifier manuellement que le démarrage a fonctionné correctement en vous connectant à l'instance via RDP et en vérifiant que le fichier C:\cfn\test.txt
existe et contient le contenu attendu. Pour plus d'informations sur la connexion aux Windows instances, consultez Connect to your Windows instance using RDP dans le guide de l' EC2 utilisateur Amazon.
Éviter les barres obliques inverses dans les chemins de fichiers Windows
Lorsque vous référencez Windows des chemins dans CloudFormation des modèles, pensez toujours à éviter correctement les barres obliques inverses (\
) en fonction du format du modèle que vous utilisez.
-
Pour les modèles JSON, vous devez utiliser des barres obliques inverses doubles dans les chemins de Windows fichiers, car JSON traite les barres obliques inverses comme un caractère d'échappement. La première barre oblique inverse échappe à la seconde, ce qui donne lieu à l'interprétation d'une seule barre oblique inverse littérale.
"commands" : { "1-extract" : { "command" : "C:\\SharePoint\\SharePointFoundation2010.exe /extract:C:\\SharePoint\\SPF2010 /quiet /log:C:\\SharePoint\\SharePointFoundation2010-extract.log" } }
-
Pour les modèles YAML, des barres obliques inverses simples sont généralement suffisantes.
commands: 1-extract: command: C:\SharePoint\SharePointFoundation2010.exe /extract:C:\SharePoint\SPF2010 /quiet /log:C:\SharePoint\SharePointFoundation2010-extract.log
Gérez les Windows services
Vous gérez les Windows services de la même manière que les services Linux, sauf que vous utilisez une windows
clé à la place desysvinit
. L'exemple suivant démarre le cfn-hup
service, le définit sur Automatique et le redémarre en cas de cfn-init
modification des fichiers c:\cfn\cfn-hup.conf
ou de c:\cfn\hooks.d\cfn-auto-reloader.conf
configuration.
services: windows: cfn-hup: enabled: true ensureRunning: true files: - c:\cfn\cfn-hup.conf - c:\cfn\hooks.d\cfn-auto-reloader.conf
Vous pouvez gérer d'autres Windows services de la même manière en utilisant le nom, et non le nom d'affichage, pour référencer le service.
Résoudre les problèmes de création de piles
Si votre pile échoue lors de sa création, le comportement par défaut est de revenir en arrière en cas d'échec. Bien que ce comportement par défaut soit généralement approprié, car il permet d'éviter des frais inutiles, il complique le débogage du problème qui est à l'origine de l'échec de création de la pile.
Pour désactiver ce comportement lors de la création ou de la mise à jour de votre stack avec la CloudFormation console, choisissez l'option Conserver les ressources correctement provisionnées sous Options d'échec de la pile. Pour de plus amples informations, veuillez consulter Choisissez comment gérer les défaillances lors du provisionnement des ressources. Cela vous permet de vous connecter à votre instance et de consulter les fichiers journaux afin d'identifier les problèmes rencontrés lors de l'exécution de vos scripts de démarrage.
Voici les principaux journaux que vous devez examiner :
-
Le journal EC2 de configuration à
%ProgramData%\Amazon\EC2Launch\log\agent.log
-
Le cfn-init journal sur
C:\cfn\log\cfn-init.log
(vérifiez les codes de sortie et les messages d'erreur pour détecter des points de défaillance spécifiques)
Pour plus de journaux, consultez les rubriques suivantes du guide de EC2 l'utilisateur Amazon :
Pour plus d'informations sur la résolution des problèmes d'amorçage, consultez Comment résoudre les problèmes liés aux scripts d'assistance qui ne démarrent pas dans une pile contenant des instances