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à.
Creazione del primo stack
Questo argomento illustra come creare il primo CloudFormation stack utilizzando. Console di gestione AWS Seguendo questo tutorial, imparerai come fornire AWS risorse di base, monitorare gli eventi dello stack e generare output.
Per questo esempio, il CloudFormation modello è scritto in YAML. YAML è un formato leggibile dall’uomo, ampiamente utilizzato per definire l’infrastruttura come codice. Man mano che approfondisci CloudFormation, potresti incontrare anche altri modelli in formato JSON, ma per questo tutorial, YAML è stato scelto per la sua leggibilità.
Nota
CloudFormation è gratuito, ma ti verranno addebitati i costi per le risorse Amazon EC2 e Amazon S3 che crei. Tuttavia, se sei alle prime armi AWS, puoi sfruttare il piano gratuito
Argomenti
Prerequisiti
-
Devi avere accesso a un Account AWS utente o ruolo IAM che disponga delle autorizzazioni per utilizzare Amazon EC2, Amazon S3 e/o l'accesso come utente amministrativo. CloudFormation
-
Devi disporre di un cloud privato virtuale (VPC) con accesso a Internet. Questo modello di procedura dettagliata richiede un VPC predefinito, che viene fornito automaticamente agli Account AWS più recenti. Se non disponi di un VPC predefinito o se è stato eliminato, consulta la sezione relativa alla risoluzione dei problemi in questo argomento per soluzioni alternative.
Crea uno CloudFormation stack con la console
Per creare uno CloudFormation stack Hello world con la console
-
Apri la CloudFormation console
. -
Scegli Crea stack.
-
Nella pagina Crea stack, scegli Costruisci da Infrastructure Composer, quindi Crea in Infrastructure Composer. In questo modo si accede a Infrastructure Composer in modalità CloudFormation console, dove è possibile caricare e convalidare il modello di esempio.
-
Per caricare e convalidare il modello di esempio, esegui queste operazioni:
-
Scegli Modello. Quindi, copia e incolla il seguente CloudFormation modello nell'editor dei modelli:
AWSTemplateFormatVersion: 2010-09-09 Description: CloudFormation Template for WebServer with Security Group and EC2 Instance Parameters: LatestAmiId: Description: The latest Amazon Linux 2 AMI from the Parameter Store Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' InstanceType: Description: WebServer EC2 instance type Type: String Default: t2.micro AllowedValues: - t3.micro - t2.micro ConstraintDescription: must be a valid EC2 instance type. MyIP: Description: Your IP address in CIDR format (e.g. 203.0.113.1/32). Type: String MinLength: '9' MaxLength: '18' Default: 0.0.0.0/0 AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x. Resources: WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow HTTP access via my IP address SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: !Ref MyIP WebServer: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: !Base64 | #!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html Outputs: WebsiteURL: Value: !Join - '' - - http:// - !GetAtt WebServer.PublicDnsName Description: Website URLPrima di passare alla fase successiva, prendiamoci un momento per dare un'occhiata al modello e comprendere alcuni CloudFormation concetti chiave.
-
La sezione
Parametersdichiara valori che è possibile trasmettere al modello al momento della creazione dello stack. Le risorse specificate più avanti nel modello fanno riferimento a questi valori e utilizzano i dati. I parametri sono un modo efficace per specificare le informazioni che non desideri archiviare nel modello stesso. Questo è anche un modo per specificare le informazioni che potrebbero essere univoche per l’applicazione o la configurazione specifica che stai implementando. -
Il modello definisce i parametri seguenti:
-
LatestAmiId: recupera l’ID AMI Amazon Linux 2 più recente dal Parameter Store AWS Systems Manager . -
InstanceType— Consente la selezione del tipo di EC2 istanza (default:t2.micro, consentito:t3.micro,t2.micro). -
MyIP: specifica l’intervallo di indirizzi IP per l’accesso HTTP (impostazione predefinita: 0.0.0.0/0, che consente l’accesso da qualsiasi IP).
-
-
La
Resourcessezione contiene le definizioni delle AWS risorse che si desidera creare con il modello. Le dichiarazioni di risorse sono un modo efficiente per specificare tutte queste impostazioni di configurazione in una sola volta. Quando inserisci dichiarazioni di risorse in un modello, puoi creare e configurare tutte le risorse dichiarate utilizzando il modello per creare uno stack. Puoi inoltre creare nuovi stack a partire dallo stesso modello per avviare configurazioni di risorse identiche. -
Questo modello crea le seguenti risorse:
-
WebServerSecurityGroup— Un gruppo EC2 di sicurezza che consente il traffico HTTP in entrata sulla porta 80 dall'intervallo IP specificato. -
WebServer— Un' EC2 istanza con la seguente configurazione:-
Utilizza l’AMI di Amazon Linux 2 più recente
-
Applica il tipo di istanza selezionato
-
Aggiunge
WebServerSecurityGroupalla proprietàSecurityGroupIds -
Include uno script di dati utente per installare Apache HTTP Server
-
-
-
Viene specificato un nome logico all’inizio di ogni dichiarazione di risorse e parametri. Ad esempio,
WebServerSecurityGroupè il nome logico assegnato alla risorsa del gruppo EC2 di sicurezza. La funzioneRefviene quindi utilizzata per fare riferimento a risorse e parametri tramite i rispettivi nomi logici in altre parti del modello. Quando una risorsa fa riferimento a un’altra risorsa, ciò crea una dipendenza tra di esse. -
La sezione
Outputsdefinisce valori personalizzati restituiti dopo la creazione dello stack. È possibile utilizzare i valori di output per restituire informazioni dalle risorse dello stack, ad esempio identificatori di risorse o. URLs -
Il modello definisce un output:
-
WebsiteURL— L'URL del server Web distribuito, creato utilizzando il nome DNS pubblico dell' EC2istanza. La funzioneJoinaiuta a combinare l’http://fisso con ilPublicDnsNamevariabile in un’unica stringa, semplificando l’output dell’URL completo del server web.
-
-
-
Scegli Convalida per assicurarti che il codice YAML sia valido prima di caricare il modello.
-
Quindi, scegli Crea modello per creare il modello e aggiungerlo a un bucket S3.
-
Nella finestra di dialogo che si apre, prendi nota del nome del bucket S3 in modo da poterlo eliminare in un secondo momento. Quindi, scegli Conferma e continua con. CloudFormation Questo ti porta alla CloudFormation console in cui è ora specificato il percorso S3 del tuo modello.
-
-
Nella pagina Crea stack, scegli Avanti.
-
Nella pagina Specifica dettagli dello stack, inserisci un nome nel campo Nome stack. Il nome dello stack non può contenere spazi. Per questo esempio, utilizzare
MyTestStack. -
In Parametri specifica i valori dei parametri come segue:
-
LatestAmiId: per impostazione predefinita, è impostata sull'ultima AMI Amazon Linux 2.
-
InstanceType: Scegli t2.micro o t3.micro per il tipo di istanza. EC2
Nota
Se non lo utilizzi AWS, puoi utilizzare il piano gratuito per avviare e utilizzare un'
t2.microistanza gratuitamente per 12 mesi (nelle regioni in cui nont2.microè disponibile, puoi utilizzare un't3.microistanza al di sotto del piano gratuito). -
MyIP: specifica il tuo indirizzo IP pubblico effettivo con un suffisso
/32. Il suffisso/32viene utilizzato nella notazione CIDR per specificare che è consentito un solo indirizzo IP. In sostanza significa consentire il traffico unicamente da e verso questo indirizzo IP specifico.
-
-
Scegli Avanti due volte per andare alla pagina Nomina, verifica e crea. Per questo tutorial, puoi lasciare le impostazioni predefinite nella pagina Configura le opzioni dello stack così come sono.
-
Rivedi le informazioni per lo stack. Quando si è soddisfatti delle impostazioni, seleziona Submit (Invia).
Monitoraggio della creazione dello stack
Dopo aver scelto Invia, CloudFormation inizia a creare le risorse specificate nel modello. Il nuovo stack,MyTestStack, viene visualizzato nell'elenco nella parte superiore della CloudFormationconsole. Il suo stato dovrebbe essere CREATE_IN_PROGRESS. È possibile vedere lo stato dettagliato di uno stack visualizzandone gli eventi.
Visualizzazione degli eventi per lo stack
-
Sulla CloudFormation console, scegli lo stack dall'
MyTestStackelenco. -
Nel riquadro dei dettagli dello stack, scegliere la scheda Events (Eventi).
La console aggiorna automaticamente l’elenco di eventi con quelli più recenti ogni 60 secondi.
La scheda Eventi mostra tutte le fasi principali nella creazione dello stack, ordinate per orario dell’evento, con gli ultimi eventi nella parte superiore.
Il primo evento (nella parte inferiore dell’elenco di eventi) è l’inizio del processo di creazione dello stack:
2024-12-23 18:54 UTC-7 MyTestStack CREATE_IN_PROGRESS User initiated
Di seguito vengono mostrati tutti gli eventi che segnano l’inizio e il completamento della creazione di ogni risorsa. Ad esempio, la creazione dell' EC2 istanza genera le seguenti voci:
2024-12-23 18:59 UTC-7 WebServer CREATE_COMPLETE
2024-12-23 18:54 UTC-7 WebServer CREATE_IN_PROGRESS Resource creation
initiated
L'CREATE_IN_PROGRESSevento viene registrato quando CloudFormation segnala che ha iniziato a creare la risorsa. L’evento CREATE_COMPLETE viene registrato quando la risorsa viene creata senza errori.
Una volta CloudFormation creato con successo lo stack, vedrai il seguente evento nella parte superiore della scheda Eventi:
2024-12-23 19:17 UTC-7 MyTestStack CREATE_COMPLETE
Se non CloudFormation riesce a creare una risorsa, segnala un CREATE_FAILED evento e, per impostazione predefinita, ripristina lo stack ed elimina tutte le risorse che sono state create. La colonna Status Reason (Motivo dello stato) mostra il problema che ha causato l’errore.
Dopo aver creato lo stack, puoi andare alla scheda Risorse per visualizzare l' EC2 istanza e il gruppo di sicurezza che hai creato.
Test del server web
Dopo aver creato correttamente lo stack, vai alla scheda Output nella console. CloudFormation Cerca il campo WebsiteURL. Questo conterrà l'URL pubblico della tua EC2 istanza.
Apri un browser e vai all’URL elencato in WebsiteURL. Dovresti visualizzare un semplice messaggio "Hello World!" nel browser.
Ciò conferma che l' EC2 istanza esegue Apache HTTP Server e serve una pagina Web di base.
Risoluzione dei problemi
Se si verifica un rollback durante la creazione dello stack, la causa potrebbe essere la mancanza di un VPC. Ecco come risolvere il problema.
VPC predefinito non disponibile
Il modello in questa procedura dettagliata richiede un VPC predefinito. Se la creazione dello stack non riesce a causa di errori di disponibilità del VPC o della sottorete, potresti non avere un VPC predefinito nel tuo account. Sono disponibili le seguenti opzioni:
-
Crea un nuovo VPC predefinito: puoi creare un nuovo VPC predefinito tramite la console Amazon VPC. Per le istruzioni, consulta Create a default VPC nella Guida per l’utente di Amazon VPC.
-
Modifica il modello per specificare una sottorete: se disponi di un VPC non predefinito, puoi modificare il modello per specificare in modo esplicito il VPC e la sottorete. IDs Aggiungi al modello il seguente parametro:
SubnetId: Description: The subnet ID to launch the instance into Type: AWS::EC2::Subnet::IdQuindi, aggiorna la risorsa
WebServerper includere l’ID della sottorete:WebServer: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup SubnetId: !Ref SubnetId UserData: !Base64 | #!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.htmlDurante la creazione dello stack, devi specificare una sottorete con accesso a Internet affinché il server Web sia raggiungibile.
Eliminazione
Per assicurarti che non ti vengano addebitati servizi indesiderati, puoi eseguire una pulizia eliminando lo stack e le relative risorse. Puoi anche eliminare il bucket S3 che memorizza il modello dello stack.
Eliminare lo stack e delle relative risorse
-
Apri la CloudFormation console
. -
Nella pagina Stack seleziona l’opzione accanto al nome dello stack che hai creato (
MyTestStack), quindi scegli Elimina. -
Quando viene richiesta la conferma, seleziona Elimina.
-
Monitora l’avanzamento del processo di eliminazione dello stack nella scheda Evento. Lo stato di
MyTestStackcambia inDELETE_IN_PROGRESS. Una volta CloudFormation completata l'eliminazione dello stack, lo rimuove dall'elenco.
Se hai finito di lavorare con il modello di esempio e non hai più bisogno del bucket Amazon S3, eliminalo. Per eliminare un bucket devi innanzitutto rimuoverne i contenuti. Lo svuotamento di un bucket comporta l’eliminazione di tutti gli oggetti in esso contenuti.
Svuotamento ed eliminazione del bucket Amazon S3
-
Apri la console Amazon S3
. -
Nel riquadro di navigazione sul lato sinistro della console scegli Bucket.
-
Nell’elenco Bucket, scegli l’opzione accanto al nome del bucket che desideri svuotare, quindi scegli Svuota.
-
Nella pagina Svuota il bucket, conferma che desideri svuotare il bucket digitando
permanently deletenel campo di testo, quindi scegli Svuota. -
Monitorare l’avanzamento del processo di svuotamento del bucket nella pagina Svuota bucket: stato.
-
Per tornare all’elenco dei bucket, scegliere Esci.
-
Seleziona l’opzione accanto al nome del bucket, quindi scegli Elimina.
-
Quando viene richiesta la conferma, digita il nome del bucket e scegli Elimina bucket.
-
Monitora l’avanzamento del processo di eliminazione del bucket dall’elenco Bucket. Quando Amazon S3 completa l’eliminazione del bucket, rimuove il bucket dall’elenco.
Fasi successive
Complimenti! Hai creato con successo uno stack, hai monitorato le sue creazioni e ne hai utilizzato l’output.
Per continuare a imparare:
-
Scopri di più sui modelli per crearne uno personalizzato. Per ulteriori informazioni, consulta Lavorare con i CloudFormation modelli.
-
Prova il workshop Getting Started with CloudFormation
per ulteriori esercitazioni pratiche sulla creazione di modelli. -
Per una versione abbreviata di Getting
Started with, consulta. CloudFormationDistribuisci applicazioni su Amazon EC2 Questo argomento descrive lo stesso scenario di utilizzo di uno script di CloudFormation supporto per avviare un'istanza Amazon EC2. cfn-init