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 la creazione del primo stack CloudFormation utilizzando la Console di gestione AWS. Seguendo questo tutorial, imparerai come fornire risorse AWS di base, monitorare gli eventi dello stack e generare output.
Per questo esempio, il modello CloudFormation è scritto in YAML. YAML è un formato leggibile dall’uomo, ampiamente utilizzato per definire l’infrastruttura come codice. Man mano che impari di più su CloudFormation, potresti incontrare anche altri modelli in formato JSON, ma per questo tutorial è stato scelto YAML 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 non hai mai utilizzato AWS, puoi sfruttare il Piano gratuito
Argomenti
Prerequisiti
-
Devi avere accesso a un Account AWS con un utente IAM o un ruolo provvisto delle autorizzazioni per utilizzare Amazon EC2, Amazon S3 e CloudFormation o l’accesso come utente amministrativo.
-
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.
Creazione di uno stack CloudFormation con la console
Creazione di uno stack Hello world CloudFormation con la console
-
Apri la console CloudFormation
. -
Scegli Crea stack.
-
Nella pagina Crea stack, scegli Costruisci da Infrastructure Composer, quindi Crea in Infrastructure Composer. In questo modo accedi a Infrastructure Composer in modalità console CloudFormation, dove puoi 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 modello CloudFormation 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, esaminiamo il codice della funzione e apprendiamo alcuni concetti chiave di CloudFormation.
-
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 istanza EC2 (impostazione predefinita:t2.micro, consentiti: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 sezione
Resourcescontiene le definizioni delle risorse AWS che desideri 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 di sicurezza EC2 che consente il traffico HTTP in entrata sulla porta 80 dall’intervallo IP specificato. -
WebServer: una istanza EC2 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 di sicurezza EC2. 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. Puoi utilizzare i valori di output per restituire informazioni dalle risorse nello stack, ad esempio identificatori di risorse o URL. -
Il modello definisce un output:
-
WebsiteURL: l’URL del server web distribuito, creato utilizzando il nome DNS pubblico dell’istanza EC2. 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. In questo modo accedi alla console CloudFormation dove 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 è impostato sull’AMI di Amazon Linux 2 più recente.
-
InstanceType: scegli t2.micro o t3.micro per il tipo di istanza EC2.
Nota
Se sei alle prime armi con AWS, puoi utilizzare il piano gratuito per avviare e utilizzare un’istanza
t2.microgratuitamente per 12 mesi (nelle regioni in cui non è disponibilet2.micro, è possibile utilizzare un’istanzat3.microcon il 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
Una volta scelto Invia, CloudFormation avvia la creazione delle risorse specificate nel modello. Il tuo nuovo stack MyTestStack viene visualizzato nell’elenco nella parte superiore della console CloudFormation. 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
-
Nella console CloudFormation seleziona lo stack
MyTestStacknell’elenco. -
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’istanza EC2 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’evento CREATE_IN_PROGRESS 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 che CloudFormation avrà creato lo stack, verrà visualizzato il seguente evento nella parte superiore della scheda Events (Eventi):
2024-12-23 19:17 UTC-7 MyTestStack CREATE_COMPLETE
Se CloudFormation non può creare una risorsa, segnala un evento CREATE_FAILED e, per impostazione predefinita, esegue il rollback dello 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’istanza EC2 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 campo conterrà l’URL pubblico della tua istanza EC2.
Apri un browser e vai all’URL elencato in WebsiteURL. Dovresti visualizzare un semplice messaggio "Hello World!" nel browser.
Ciò conferma che l’istanza EC2 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 gli ID di VPC e sottorete. 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 console CloudFormation
. -
Nella pagina Stack seleziona l’opzione accanto al nome dello stack che hai creato (
MyTestStack), quindi scegli Elimina. -
Quando viene richiesta la conferma, seleziona Delete (Elimina).
-
Monitora l’avanzamento del processo di eliminazione dello stack nella scheda Evento. Lo stato di
MyTestStackcambia inDELETE_IN_PROGRESS. Quando CloudFormation completa l’eliminazione dello stack, rimuove lo stack 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 scegliere 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.
Passaggi successivi
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 CloudFormation
, consulta Distribuisci applicazioni su Amazon EC2. Questo argomento descrive lo stesso scenario di utilizzo di uno script helper CloudFormation, cfn-init, per avviare un’istanza Amazon EC2.