Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Stack basati sul bootstrap Windows CloudFormation
Questo argomento descrive come avviare uno Windows stack e risolvere i problemi relativi alla creazione di uno stack.
Argomenti
EC2 Dati utente nelle istanze
I dati utente sono una EC2 funzionalità di Amazon che consente di trasmettere script o informazioni di configurazione a un' EC2 istanza al momento dell'avvio.
Ad esempio Windows EC2 :
-
È possibile utilizzare script batch (utilizzando
<script>
tag) o PowerShell script (utilizzando<powershell>
tag). -
L'esecuzione degli script è gestita da. EC2Launch
Importante
Se stai creando la tua Windows AMI da utilizzare con CloudFormation, assicurati che la versione EC2Launch v2 sia configurata correttamente. EC2Launchv2 è necessaria per consentire agli strumenti di CloudFormation bootstrap di inizializzare e configurare Windows correttamente le istanze durante la creazione dello stack. Per ulteriori informazioni, consulta Utilizzare l'agente EC2Launch v2 per eseguire attività durante l'avvio di un'istanza EC2 Windows nella Amazon EC2 User Guide.
Per informazioni su AWS Windows AMIs, consulta l'AWSWindowsAMI Reference.
CloudFormation script di supporto
Gli script di supporto sono utilità per la configurazione delle istanze durante il processo di bootstrap. Utilizzati con i dati EC2 degli utenti di Amazon, offrono potenti opzioni di configurazione.
CloudFormation fornisce i seguenti script di supporto in Python che puoi usare per installare software e avviare servizi su un' EC2 istanza Amazon che crei come parte del tuo stack:
-
cfn-init
— Utilizzabile per recuperare e interpretare i metadati delle risorse, installare pacchetti, creare file e avviare servizi. -
cfn-signal
— Da utilizzare per segnalare con aCreationPolicy
, in modo da poter sincronizzare altre risorse nello stack quando la risorsa o l'applicazione prerequisita è pronta. -
cfn-get-metadata
— Utilizzato per recuperare i metadati per una risorsa o il percorso verso una chiave specifica. -
cfn-hup
— Utilizzato per verificare la presenza di aggiornamenti ai metadati ed eseguire hook personalizzati quando vengono rilevate modifiche.
Puoi chiamare gli script direttamente dal tuo modello. Lo script funziona in combinazione con i metadati delle risorse definiti nello stesso modello. Gli script vengono eseguiti sull' EC2istanza Amazon durante il processo di creazione dello stack.
Per ulteriori informazioni, consulta il riferimento agli script di CloudFormation supporto nella Template Reference Guide.AWS CloudFormation
Esempio di bootstrap di uno stack Windows
Esaminiamo alcuni frammenti di esempio tratti da un Windows Server modello che esegue le seguenti azioni:
-
Avvia un' EC2 istanza denominata in base
TestInstance
a un'AMI del Windows Server 2022. -
Crea un semplice file di test per verificare
cfn-init
che funzioni. -
Configura
cfn-hup
per la gestione continua della configurazione. -
Utilizza
CreationPolicy
a per garantire che l'istanza segnali il completamento con successo.
Lo script di cfn-init
supporto viene utilizzato per eseguire ciascuna di queste azioni in base alle informazioni contenute nella AWS::CloudFormation::Init
risorsa del modello.
La AWS::CloudFormation::Init
sezione è denominata TestInstance
e inizia con la seguente dichiarazione.
TestInstance: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: configSets: default: - create_files - start_services
Dopodiché, AWS::CloudFormation::Init
viene dichiarata la files
sezione di.
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}
Qui vengono creati tre file che vengono inseriti nella C:\cfn
directory dell'istanza del server:
-
test.txt
, un semplice file di test che verifica ilcfn-init
corretto funzionamento e consente di creare file con contenuti dinamici. -
cfn-hup.conf
, il file di configurazione percfn-hup
con un intervallo di controllo di 2 minuti. -
cfn-auto-reloader.conf
, il file di configurazione per l'hook utilizzato da percfn-hup
avviare un aggiornamento (chiamatacfn-init
) quando i metadati contenuti cambiano.AWS::CloudFormation::Init
La prossima è la start_services
sezione, che configura Windows i servizi.
start_services: services: windows: cfn-hup: enabled: true ensureRunning: true files: - c:\cfn\cfn-hup.conf - c:\cfn\hooks.d\cfn-auto-reloader.conf
Questa sezione assicura che il cfn-hup
servizio venga avviato e si riavvierà automaticamente se i file di configurazione vengono modificati. Il servizio monitora le modifiche ai CloudFormation metadati e viene eseguito nuovamente cfn-init
quando vengono rilevati aggiornamenti.
La prossima è la sezione. Properties
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>
In questa sezione, la UserData
proprietà contiene uno PowerShell script che verrà eseguito daEC2Launch, circondato da <powershell>
tag. Lo script viene eseguito cfn-init
con default
ConfigSet, quindi viene utilizzato cfn-signal
per riportare il codice di uscita a. CloudFormation CreationPolicy
Viene utilizzato per garantire che l'istanza sia configurata correttamente prima che la creazione dello stack sia considerata completa.
La ImageId
proprietà utilizza un parametro pubblico di Systems Manager Parameter Store per recuperare automaticamente l'ID AMI Windows Server 2022 più recente. Questo approccio elimina la necessità di mappature AMI specifiche per regione e garantisce di ottenere sempre l'AMI più recente. L'utilizzo dei parametri di Systems Manager per AMI IDs è una procedura consigliata per mantenere i riferimenti AMI correnti. Se intendi connetterti alla tua istanza, assicurati che la SecurityGroupIds
proprietà faccia riferimento a un gruppo di sicurezza che consenta l'accesso RDP.
CreationPolicy
Viene dichiarato come parte delle proprietà della risorsa e specifica un periodo di timeout. Il cfn-signal
comando nei dati utente segnala quando la configurazione dell'istanza è completa:
TestInstance: Type: AWS::EC2::Instance CreationPolicy: ResourceSignal: Timeout: PT20M Properties: # ... other properties ...
Poiché il processo di avvio è minimo e crea solo file e avvia i servizi, CreationPolicy
attende 20 minuti (PT20M) prima del timeout. Il timeout viene specificato utilizzando il formato di durata ISO 8601. Tieni presente che in genere Windows le istanze richiedono più tempo per l'avvio rispetto alle istanze Linux, quindi esegui un test approfondito per determinare i valori di timeout migliori per le tue esigenze.
Se tutto va bene, l'CreationPolicy
operazione viene completata correttamente e puoi accedere all'Windows Serveristanza utilizzando il suo indirizzo IP pubblico. Una volta completata la creazione dello stack, l'ID dell'istanza e l'indirizzo IP pubblico verranno visualizzati nella scheda Output della console. CloudFormation
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
Puoi anche verificare manualmente che il bootstrap abbia funzionato correttamente connettendoti all'istanza tramite RDP e controllando che il file C:\cfn\test.txt
esista e contenga il contenuto previsto. Per ulteriori informazioni sulla connessione alle Windows istanze, consulta Connettiti alla tua Windows istanza utilizzando RDP nella Amazon EC2 User Guide.
Evita le barre rovesciate nei percorsi dei file Windows
Quando fate riferimento ai Windows percorsi nei CloudFormation modelli, ricordatevi sempre di evitare correttamente le barre rovesciate (\
) in base al formato del modello che state utilizzando.
-
Per i modelli JSON, devi utilizzare le doppie barre rovesciate nei percorsi dei Windows file perché JSON considera la barra rovesciata come un carattere di escape. La prima barra rovesciata sfugge alla seconda, dando come risultato l'interpretazione di una singola barra rovesciata letterale.
"commands" : { "1-extract" : { "command" : "C:\\SharePoint\\SharePointFoundation2010.exe /extract:C:\\SharePoint\\SPF2010 /quiet /log:C:\\SharePoint\\SharePointFoundation2010-extract.log" } }
-
Per i modelli YAML, in genere sono sufficienti barre rovesciate singole.
commands: 1-extract: command: C:\SharePoint\SharePointFoundation2010.exe /extract:C:\SharePoint\SPF2010 /quiet /log:C:\SharePoint\SharePointFoundation2010-extract.log
WindowsGestisci i servizi
WindowsI servizi vengono gestiti allo stesso modo dei servizi Linux, tranne per il fatto che si utilizza una windows
chiave anzichésysvinit
. L'esempio seguente avvia il cfn-hup
servizio, lo imposta su Automatico e riavvia il servizio se cfn-init
modifica i c:\cfn\hooks.d\cfn-auto-reloader.conf
file c:\cfn\cfn-hup.conf
o di configurazione.
services: windows: cfn-hup: enabled: true ensureRunning: true files: - c:\cfn\cfn-hup.conf - c:\cfn\hooks.d\cfn-auto-reloader.conf
È possibile gestire altri Windows servizi allo stesso modo utilizzando il nome, non il nome visualizzato, per fare riferimento al servizio.
Risolvi i problemi relativi alla creazione degli stack
Se lo stack fallisce durante la creazione, il comportamento predefinito prevede il rollback in caso di errore. Sebbene sia in genere una buona impostazione predefinita perché evita costi non necessari, rende difficile il debug del motivo dell'errore di creazione dello stack.
Per disattivare questo comportamento durante la creazione o l'aggiornamento dello stack con la CloudFormation console, scegli l'opzione Preserva risorse con successo nella sezione Opzioni di errore dello stack. Per ulteriori informazioni, consulta Scegli come gestire gli errori durante il provisioning delle risorse. Ciò consente di accedere all'istanza e visualizzare i file di registro per individuare i problemi riscontrati durante l'esecuzione degli script di avvio.
Log importanti da guadare sono:
-
Il log di EC2 configurazione all'indirizzo
%ProgramData%\Amazon\EC2Launch\log\agent.log
-
Il cfn-init log in
C:\cfn\log\cfn-init.log
(controlla i codici di uscita e i messaggi di errore per punti di errore specifici)
Per ulteriori log, consulta i seguenti argomenti nella Amazon EC2 User Guide:
Per ulteriori informazioni sulla risoluzione dei problemi di bootstrap, vedi Come posso risolvere gli script di supporto che non si avviano