AWS CloudFormation migliori pratiche - AWS CloudFormation

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à.

AWS CloudFormation migliori pratiche

Le best practice sono raccomandazioni che possono aiutarti a utilizzarlo in modo AWS CloudFormation più efficace e sicuro durante l'intero flusso di lavoro. Scopri come pianificare e organizzare gli stack, creare modelli che descrivono le risorse e le applicazioni software in esecuzione su di esse e come gestire i tuoi stack e le loro risorse. Le seguenti best practice si basano sull'esperienza reale dei clienti attuali. CloudFormation

Abbreviare il ciclo di feedback per migliorare la velocità di consegna

Adotta pratiche e strumenti che ti aiutino ad abbreviare il ciclo di feedback per l'infrastruttura che descrivi con i modelli. CloudFormation Ciò include l'esecuzione tempestiva di linting e test dei modelli nella tua workstation; quando esegui l'operazione, hai l'opportunità di scoprire potenziali problemi di sintassi e configurazione anche prima di inviare i tuoi contributi a un repository di codici sorgente. L'individuazione anticipata di tali problemi contribuisce a evitare che raggiungano ambienti formali del ciclo di vita, ad esempio sviluppo, garanzia di qualità e produzione. Questo approccio di test anticipato e anticipo dell'errore (fail fast) offre i vantaggi di ridurre i tempi di attesa per rilavorazioni, ridurre le potenziali aree di impatto e aumentare il livello di affidabilità delle operazioni di provisioning.

Le scelte di strumenti che vi aiutano a raggiungere pratiche rapide includono AWS CloudFormation Linter (cfn-lint) e gli strumenti da riga di comando. TaskCat Lo cfn-lint strumento offre la possibilità di convalidare i CloudFormation modelli in base alle specifiche delle risorse.AWS CloudFormation Ciò include la verifica di valori validi per le proprietà delle risorse e procedure consigliate. I plugin per cfn-lint sono disponibili per diversi editor di codice; questo vi dà la possibilità di visualizzare i problemi all'interno dell'editor e di ottenere un feedback diretto da linter. Puoi anche scegliere di integrarlo cfn-lint nella configurazione del tuo repository di codice sorgente, in modo da poter eseguire la convalida del modello quando inserisci i tuoi contributi. Per maggiori informazioni, consulta Git pre-commit validation of AWS CloudFormation templates with. cfn-lint Dopo aver eseguito il linting iniziale e risolto cfn-lint eventuali problemi, puoi utilizzarli per testare i tuoi modelli creando programmaticamente degli stack TaskCat a tua scelta. Regioni AWS TaskCatgenera anche un rapporto con un punteggio positivo o negativo per ogni regione selezionata.

Per una step-by-step guida pratica su come utilizzare entrambi gli strumenti per abbreviare il ciclo di feedback, segui il laboratorio di Linting and Testing del Workshop.AWS CloudFormation

Organizzare gli stack per ciclo di vita e proprietà

Usa il ciclo di vita e la proprietà delle tue AWS risorse per decidere quali risorse inserire in ogni stack. Inizialmente, è possibile inserire tutte le risorse in un unico stack, ma via via che le dimensioni e l'ambito si ampliano, la gestione di un singolo stack può essere complessa e dispendiosa in termini di tempo. Raggruppando le risorse con cicli di vita e proprietà comuni, i proprietari possono apportare modifiche ai loro set di risorse con processi e pianificazioni personali, senza interferire con altre risorse.

Ad esempio, immagina un team di sviluppatori e ingegneri che possiede un sito Web ospitato su istanze Amazon EC2 Auto Scaling con un sistema di bilanciamento del carico. Poiché il sito Web ha il proprio ciclo di vita e viene gestito dal team dei siti Web, è possibile creare uno stack per il sito Web e le sue risorse. Ora immaginiamo che il sito Web utilizza anche database di back-end ubicati in un altro stack, di proprietà e gestito dagli amministratori del database. Quando il team dei siti Web o il team di database devono aggiornare le proprie risorse, possono farlo senza influenzare lo stack dell'altra parte. Se tutte le risorse fossero in un singolo stack, coordinare e comunicare gli aggiornamenti sarebbe complicato.

Per ulteriori indicazioni sull'organizzazione degli stack, puoi utilizzare due framework comuni: un'architettura a più livelli e un'architettura orientata ai servizi (). SOA

L'architettura multilivello organizza gli stack in più livelli orizzontali creati uno sull'altro, in cui ogni livello dipende dal livello direttamente sottostante. Possono essere presenti uno o più stack in ciascun livello, ma all'interno di ciascun livello lo stack deve disporre di risorse AWS con cicli di vita e proprietà simili.

Con un'architettura orientata ai servizi, è possibile organizzare i grandi problemi aziendali in parti semplici da gestire. Ognuna di queste parti è un servizio che ha uno scopo ben definito e rappresenta un'unità completa di funzionalità. È possibile mappare questi servizi a uno stack, ognuno con proprietari e ciclo di vita propri. Questi servizi (stack) possono essere cablati insieme in modo che possano interagire l'uno con l'altro.

Utilizzare i riferimenti tra stack per l'esportazione di risorse condivise

Quando organizzate le AWS risorse in base al ciclo di vita e alla proprietà, potreste voler creare uno stack che utilizzi risorse che si trovano in un altro stack. È possibile codificare i valori o utilizzare i parametri di input per passare i nomi delle risorse e. IDs Tuttavia, questi metodi possono rendere i modelli difficili da riutilizzare o possono aumentare i costi per attivare uno stack. Utilizza invece i riferimenti tra stack per esportare le risorse da uno stack, in modo che altri stack possano utilizzarli. Stack possono utilizzare le risorse esportate chiamandole con la funzione Fn::ImportValue.

Ad esempio, potresti avere uno stack di rete che include aVPC, un gruppo di sicurezza e una sottorete. Vuoi che tutte le applicazioni Web pubbliche utilizzino queste risorse. Esportando le risorse, consenti a tutti gli stack con applicazioni Web pubbliche di utilizzarle. Per ulteriori informazioni, consulta Ottieni gli output esportati da uno stack distribuito CloudFormation.

Verificare le quote per tutti i tipi di risorse

Prima di avviare uno stack, assicurati di poter creare tutte le risorse che desideri senza raggiungere i limiti del tuo account. AWS Se raggiungi un limite, CloudFormation non creerai correttamente lo stack finché non aumenterai la quota o eliminerai risorse extra. Ogni servizio può avere vari limiti di cui devi essere a conoscenza prima di avviare uno stack. Ad esempio, per impostazione predefinita, puoi avviare solo 2000 CloudFormation pile per regione nel tuo. Account AWS Per ulteriori informazioni sui limiti e su come aumentare i limiti predefiniti, consulta la Quote di servizio di AWS nella Riferimenti generali di AWS.

Riutilizzare i modelli per replicare gli stack in ambienti multipli

Dopo aver configurato stack e risorse, puoi riutilizzare i modelli per replicare l'infrastruttura in più ambienti. Ad esempio, puoi creare ambienti di sviluppo, di test e di produzione per testare le modifiche prima di implementarle nella produzione. Per rendere riutilizzabili i modelli, utilizza le sezioni dedicate ai parametri, alle mappature e alle condizioni, in modo da poter personalizzare lo stack quando lo crei. Ad esempio, per i tuoi ambienti di sviluppo, puoi specificare un tipo di istanza a un costo inferiore rispetto all'ambiente di produzione, ma con tutte le altre configurazioni e impostazioni invariate. Per ulteriori informazioni su parametri, mappature e condizioni, consulta CloudFormation sezioni modello.

Utilizzare i moduli per riutilizzare le configurazioni delle risorse

Con la crescita dell'infrastruttura, possono emergere schemi comuni in cui gli stessi componenti vengono dichiarati in ciascun modello. I moduli sono un modo per creare pacchetti di configurazioni delle risorse per l'inclusione su modelli di stack, in modo trasparente, gestibile e ripetibile. I moduli possono incapsulare configurazioni di servizio comuni e best practice come blocchi predefiniti modulari e personalizzabili da includere nei modelli di stack.

Questi elementi costitutivi possono riguardare una singola risorsa, come le best practice per la definizione di un'istanza Amazon Elastic Compute Cloud (AmazonEC2), oppure possono riguardare più risorse, per definire modelli comuni di architettura applicativa. Questi elementi costitutivi possono essere annidati in altri moduli, in modo da poter raggruppare le best practice in elementi costitutivi di livello superiore. CloudFormation i moduli sono disponibili nel CloudFormation registro, quindi puoi usarli proprio come una risorsa nativa. Quando si utilizza un CloudFormation modulo, il modello del modulo viene espanso nel modello di consumo, il che consente di accedere alle risorse all'interno del modulo utilizzando Ref o Fn:: GetAtt. Per ulteriori informazioni, consulta Crea configurazioni di risorse riutilizzabili che possono essere incluse nei modelli con moduli CloudFormation .

Usa tipi AWS di parametri specifici

Se il modello richiede input per valori AWS specifici esistenti, come Amazon Virtual Private Cloud esistente IDs o il nome di una coppia di EC2 chiavi Amazon, usa tipi di parametri AWS specifici. Ad esempio, puoi specificare un parametro come typeAWS::EC2::KeyPair::KeyName, che accetta il nome di una coppia di chiavi esistente presente nella tua regione Account AWS e nella regione in cui stai creando lo stack. AWS CloudFormation può convalidare rapidamente i valori per tipi di parametri AWS specifici prima di creare lo stack. Inoltre, se usi la CloudFormation console, CloudFormation mostra un elenco a discesa di valori validi, in modo da non dover cercare o memorizzare i nomi corretti VPC IDs o quelli delle key pair. Per ulteriori informazioni, consulta Fai riferimento alle risorse esistenti e ai parametri di Systems Manager con i CloudFormation tipi di parametri forniti.

Utilizzare i vincoli dei parametri

Con i vincoli, puoi descrivere i valori di input consentiti in modo che vengano rilevati tutti i valori non validi prima di creare uno CloudFormation stack. Puoi impostare vincoli, quali lunghezza minima e massima e schemi consentiti. Ad esempio, puoi impostare vincoli sul valore del nome utente di un database perché abbia almeno 8 caratteri e contenga solo caratteri alfanumerici. Per ulteriori informazioni, consulta Parameters riferimento alla sintassi della sezione per i modelli CloudFormation .

Utilizzo degli pseudoparametri per promuovere la portabilità

È possibile utilizzare gli pseudoparametri nei modelli come argomenti di funzioni intrinseche, come Ref e Fn::Sub. Gli pseudo parametri sono parametri predefiniti da. CloudFormation Non vengono dichiarati nel modello. L'utilizzo di pseudo parametri nelle funzioni intrinseche aumenta la portabilità dei modelli di stack tra regioni e account.

Ad esempio, immagina di voler creare un modello in cui, per una determinata proprietà della risorsa, devi specificare l'Amazon Resource Name (ARN) di un'altra risorsa esistente. In questo caso, la risorsa esistente è una risorsa AWS Systems Manager Parameter Store con quanto segueARN:arn:aws:ssm:us-east-1:123456789012:parameter/MySampleParameter. Dovrai adattare il ARNformato alla AWS partizione di destinazione, alla regione e all'ID account. Invece di codificare in modo fisso questi valori, puoi utilizzare gli pseudoparametri AWS::Partition, AWS::Region e AWS::AccountId per rendere il tuo modello più portabile. In questo caso, l'esempio seguente mostra come concatenare gli elementi in un con:. ARN CloudFormation !Sub 'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter

Per un altro esempio, supponiamo di voler condividere risorse o configurazioni su più stack. In questo esempio, supponiamo di aver creato una sottorete per il vostro VPC e di averne poi esportato l'ID per utilizzarlo con altri stack della stessa regione. Account AWS In un altro stack, fai riferimento al valore esportato dell'ID di sottorete quando descrivi un'istanza Amazon. EC2 Per un esempio dettagliato dell'utilizzo del campo di output Export e della funzione intrinseca Fn::ImportValue, consulta Fai riferimento agli output di risorse in un altro stack CloudFormation.

Le esportazioni dello stack devono essere uniche per account e regione. Quindi, in questo caso, puoi utilizzare lo pseudoparametro AWS::StackName per creare un prefisso per l'esportazione. Poiché anche i nomi degli stack devono essere univoci per account e regione, l'utilizzo di questo pseudo parametro come prefisso aumenta la possibilità di avere un nome di esportazione univoco, promuovendo al contempo un approccio riutilizzabile tra gli stack da cui si esportano i valori. In alternativa, puoi utilizzare un prefisso di tua scelta.

AWS::CloudFormation::InitDa utilizzare per distribuire applicazioni software su istanze Amazon EC2

Quando avvii gli stack, puoi installare e configurare applicazioni software su EC2 istanze Amazon utilizzando lo script di cfn-init supporto e la risorsa. AWS::CloudFormation::Init Utilizzando AWS::CloudFormation::Init, puoi descrivere le configurazioni che desideri, invece di scrivere script delle fasi procedurali. Puoi anche aggiornare le configurazioni senza ricreare le istanze. E se qualcosa va storto con la tua configurazione, CloudFormation genera log che puoi usare per esaminare i problemi.

Nel modello, specifica gli stati di installazione e configurazione nella risorsa AWS::CloudFormation::Init. Per una procedura dettagliata che mostra come usare cfn-init eAWS::CloudFormation::Init, vedi. Distribuisci applicazioni su Amazon EC2

Utilizzare gli script helper più recenti

Gli script helper vengono aggiornati periodicamente. Assicurati di includere il comando seguente nella proprietà UserData del modello prima di chiamare gli script helper: ti accerterai così che le istanze avviate recuperino gli script helper più recenti.

yum install -y aws-cfn-bootstrap

Per ulteriori informazioni su come ottenere gli script di supporto più recenti, consulta il CloudFormation riferimento agli script di supporto.

Convalidare i modelli prima di utilizzarli

Prima di utilizzare un modello per creare o aggiornare uno stack, puoi utilizzarlo per convalidarlo. CloudFormation La convalida di un modello può aiutarti a catturare la sintassi e alcuni errori semantici, come le dipendenze circolari, prima CloudFormation di creare qualsiasi risorsa. Se si utilizza la CloudFormation console, la console convalida automaticamente il modello dopo aver specificato i parametri di input. Per la AWS CLI o CloudFormation API, usa validate-templateCLIcomando o ValidateTemplateAPIoperazione.

Durante la convalida, verifica CloudFormation innanzitutto se il modello è validoJSON. In caso contrario, CloudFormation verifica se il modello è validoYAML. Se entrambi i controlli falliscono, CloudFormation restituisce un errore di convalida del modello.

Convalida dei modelli per la conformità ai criteri dell'organizzazione

Puoi anche convalidare il modello per verificarne la conformità alle linee guida della politica dell'organizzazione. AWS CloudFormation Guard (cfn-guard) è uno strumento di interfaccia a riga di comando (CLI) open source che fornisce un policy-as-code linguaggio per definire regole in grado di verificare le configurazioni delle risorse sia obbligatorie che proibite. Consente quindi di convalidare i modelli rispetto a tali regole. Ad esempio, gli amministratori possono stabilire delle regole per garantire che gli sviluppatori creino sempre dei bucket Amazon S3 crittografati.

Gli sviluppatori possono utilizzare cfn-guard in locale, durante la modifica dei modelli, oppure in modo automatico all'interno di una pipeline di integrazione e distribuzione continue, per interrompere la distribuzione di risorse non conformi.

Inoltre, cfn-guard include una funzionalità che consente di estrarre le regole dai modelli conformi CloudFormation esistenti. rulegen

Per ulteriori informazioni, consulta il repository cfn-guard su. GitHub

Gestisci tutte le risorse dello stack tramite AWS CloudFormation

Dopo aver avviato uno stack, usa la CloudFormation console o aggiorna AWS CLIle risorse dello stack. API Non apportare modifiche allo stack di risorse al di fuori di. CloudFormation In caso contrario, potrebbe crearsi una mancata corrispondenza tra il modello dello stack e lo stato attuale delle risorse dello stack, con conseguenti possibili errori durante l'aggiornamento o l'eliminazione dello stack. Questo fenomeno è noto come deriva. Se viene apportata una modifica a una risorsa esterna al CloudFormation modello e si aggiorna lo stack, le modifiche apportate direttamente alla risorsa verranno eliminate e la configurazione della risorsa tornerà alla configurazione nel modello.

Per ulteriori informazioni su drift, consulta. Cos'è una deviazione?

Per ulteriori informazioni sull'aggiornamento degli stack, consulta. Spiegazione passo per passo: aggiornamento di uno stack

Creare set di modifiche prima di aggiornare gli stack

I set di modifiche consentono di vedere in che modo le modifiche proposte a uno stack potrebbero influire sulle risorse in esecuzione prima di implementarle. CloudFormation non apporta modifiche allo stack finché non esegui il set di modifiche, consentendoti di decidere se procedere con le modifiche proposte o creare un altro set di modifiche.

Utilizza i set di modifiche per verificare in che modo le modifiche possono influire sulle risorse in esecuzione, soprattutto nel caso di risorse critiche. Ad esempio, se cambi il nome di un'istanza di RDS database Amazon, CloudFormation creerai un nuovo database ed eliminerai quello vecchio; perderai i dati nel vecchio database a meno che tu non ne abbia già eseguito il backup. Se generi un set di modifiche, vedrai che la modifica sostituirà il database. Questo può aiutarti nella pianificazione prima di aggiornare il tuo stack. Per ulteriori informazioni, consulta Aggiorna CloudFormation gli stack utilizzando i set di modifiche.

Utilizzare le policy di stack

Le policy di stack consentono di proteggere le risorse di stack critiche da aggiornamenti involontari che potrebbero causare l'interruzione o persino la sostituzione delle risorse stesse. Una stack policy è un JSON documento che descrive quali azioni di aggiornamento possono essere eseguite su risorse designate. Specifica una policy di stack ogni volta che crei uno stack con risorse critiche.

Durante l'aggiornamento di uno stack, devi specificare esplicitamente le risorse protette da aggiornare. In caso contrario, non verranno apportate modifiche a tali risorse. Per ulteriori informazioni, consulta Impedire gli aggiornamenti delle risorse stack.

Utilizzare la revisione del codice e i controlli di revisione per gestire i modelli

I modelli di stack descrivono la configurazione delle AWS risorse, ad esempio i valori delle loro proprietà. Per rivedere le modifiche e mantenere un'accurata cronologia delle risorse, utilizzare la revisione del codice e i controlli di revisione. Questi metodi possono aiutarti a monitorare le modifiche tra diverse versioni dei tuoi modelli, il che è utile per tenere traccia delle modifiche alle risorse di stack. Inoltre, mantenendo una cronologia, è sempre possibile ripristinare lo stack a una determinata versione del modello.

Aggiorna regolarmente le tue EC2 istanze Amazon

Su tutte le istanze Amazon EC2 Windows e Amazon EC2 Linux create con CloudFormation, esegui regolarmente il yum update comando per aggiornare il RPM pacchetto. In questo modo ti assicuri di avere le correzioni e gli aggiornamenti di sicurezza più recenti.