View a markdown version of this page

CloudFormation migliori pratiche - AWS CloudFormation
Abbreviare il ciclo di feedback per migliorare la velocità di sviluppoOrganizzare gli stack per ciclo di vita e proprietàUsa i riferimenti tra più stack per condividere i valori tra gli stackUtilizzo CloudFormation StackSets per implementazioni con più account e più regioniVerificare le quote per tutti i tipi di risorseRiutilizzare i modelli per replicare gli stack in ambienti multipliUtilizzare i moduli per riutilizzare le configurazioni delle risorseUtilizzare l’infrastruttura come pratica di codiceNon incorporare le credenziali nei modelliUtilizzo AWS Tipi di parametri specifici perUtilizzare i vincoli dei parametriUtilizzo degli pseudoparametri per promuovere la portabilitàUsa AWS::CloudFormation: :Init per distribuire applicazioni software su istanze Amazon EC2Utilizzare gli script helper più recentiConvalidare i modelli prima di utilizzarliUtilizzare YAML o JSON per creare i modelliImplementazione di una strategia di assegnazione tag completaSfrutta le macro dei modelli per trasformazioni avanzateGestisci tutte le risorse dello stack tramite CloudFormationCreare set di modifiche prima di aggiornare gli stackUtilizzare le policy di stack per proteggere le risorseUtilizzo AWS CloudTrail per registrare CloudFormation le chiamateUtilizzare la revisione del codice e i controlli di revisione per gestire i modelliAggiornare regolarmente le istanze Amazon EC2Utilizza regolarmente il rilevamento della derivaConfigura i trigger di rollback per il ripristino automaticoImplementa strategie efficaci di rifattorizzazione degli stackUsa CloudFormation Hooks per la gestione del ciclo di vitaUsa il generatore IaC per creare modelli a partire da risorse esistentiUtilizzo AWS Infrastructure Composer per la progettazione visiva di modelliPrendi in considerazione l'utilizzo AWS Cloud Development Kit (AWS CDK) per infrastrutture complesseUtilizza IAM per controllare gli accessiApplica il principio del privilegio minimoProteggi i parametri sensibiliImplementa la politica come codice con Guard

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

CloudFormation migliori pratiche

Le best practice sono raccomandazioni che possono aiutarti a utilizzarlo in modo CloudFormation più efficace e ad adottare pratiche sicure 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 .

Pianificazione e organizzazione
Creazione di modelli
Gestione degli stack
Strumenti di creazione
Conformità e sicurezza

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

Adotta pratiche e strumenti che ti aiutino ad abbreviare il ciclo di feedback sull'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 opzioni di strumenti che ti aiutano a realizzare pratiche rapide includono CloudFormation Linter (cfn-lint) e gli strumenti a riga di comando. TaskCat Lo cfn-lint strumento offre la possibilità di convalidare i CloudFormation modelli rispetto alle specifiche delle risorse. CloudFormation Ciò include la verifica di valori validi per le proprietà delle risorse e procedure consigliate. I plug-in per cfn-lint sono disponibili per numerosi editor di codice; ciò consente di visualizzare i problemi nel tuo editor e di ottenere un feedback diretto dal linter. Puoi anche scegliere di integrare cfn-lint nella configurazione del tuo repository di codici sorgente, in modo da poter eseguire la convalida del modello quando esegui il commit dei tuoi contributi. Per ulteriori informazioni, consulta Convalida pre-commit dei CloudFormation modelli in Git con. cfn-lint Una volta eseguito il linting iniziale e risolto cfn-lint eventuali problemi, puoi utilizzarli per testare i tuoi modelli creando in modo programmatico degli stack TaskCat a tua scelta. Regioni AWS TaskCat genera anche un rapporto con i voti per ogni regione scelta. pass/fail

Per una procedura pratica e dettagliata sull’utilizzo di entrambi gli strumenti per abbreviare il ciclo di feedback, segui il Laboratorio di linting and testing del Workshop CloudFormation.

CloudFormation la convalida pre-distribuzione rileva automaticamente gli errori più comuni prima che le risorse vengano fornite. Questi errori includono la sintassi delle proprietà non valida e i conflitti tra i nomi delle risorse. Pre-deployment la convalida viene eseguita per impostazione predefinita su tutte le operazioni Create Stack, Update Stack e Create Change Set. Non è richiesta alcuna configurazione. Per i progetti CDK, cdk validate esegue la convalida CloudFormation pre-distribuzione rispetto ai modelli sintetizzati.

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, immaginiamo un team di sviluppatori e tecnici che possiedono un sito Web ospitato in istanze Amazon EC2 Auto Scaling dietro a un bilanciatore 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 backend 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 informazioni su come organizzare gli stack, puoi usare due framework comuni: un’architettura multilivello 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.

Usa i riferimenti tra più stack per condividere i valori tra gli stack

Quando organizzi le AWS risorse in base al ciclo di vita e alla proprietà, potresti voler creare uno stack che utilizzi risorse che si trovano in un altro stack. È possibile utilizzare valori fissi o parametri di input per trasmettere gli ID e i nomi delle risorse. 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 condividere i valori tra gli stack. CloudFormation fornisce due approcci:

  • Fn::ImportValue— Importa valori che un altro stack ha esportato esplicitamente. Questo crea un forte riferimento all'interno dello stesso account e della stessa regione. CloudFormationti impedisce di eliminare lo stack di esportazione mentre gli altri stack dipendono dalle sue esportazioni.

  • Fn::GetStackOutput— Fai riferimento direttamente a qualsiasi output dello stack, inclusi gli output degli stack di altri AWS account o regioni, senza richiedere esportazioni esplicite. Questo crea un riferimento debole che viene risolto al momento della creazione o dell'aggiornamento.

Per ulteriori informazioni, vedere Ottieni gli output esportati da uno stack distribuito CloudFormation e Fn:: GetStackOutput.

Utilizzo CloudFormation StackSets per implementazioni con più account e più regioni

CloudFormation StackSets estendi la capacità degli stack consentendoti di creare, aggiornare o eliminare stack su più account e regioni con un'unica operazione. Utilizzalo StackSets per implementare componenti di infrastruttura comuni, controlli di conformità o servizi condivisi in tutta l'organizzazione.

Durante l'utilizzo StackSets, implementa le autorizzazioni gestite dai servizi AWS Organizations per una gestione semplificata delle autorizzazioni. Questo approccio consente di eseguire l'implementazione negli account StackSets all'interno dell'organizzazione senza la necessità di configurare manualmente i ruoli IAM in ciascun account.

Per ulteriori informazioni sui concetti, StackSets consulta la sezione StackSets Concetti.

Verificare le quote per tutti i tipi di risorse

Prima di lanciare uno stack, assicurati di poter creare tutte le risorse che desideri senza raggiungere i limiti del tuo AWS account. Se raggiungi un limite, CloudFormation non creerai lo stack correttamente finché non aumenterai la tua quota o non eliminerai le 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 stack 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 essere per un’unica risorsa, come le best practice per la definizione di un’istanza Amazon Elastic Compute Cloud (Amazon EC2), oppure possono essere per più risorse, per definire modelli comuni di architettura dell’applicazione. Questi elementi costitutivi possono essere annidati in altri moduli, in modo da poter raggruppare le best practice in blocchi 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 rende possibile 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.

Utilizzare l’infrastruttura come pratica di codice

Tratta i tuoi CloudFormation modelli come codice implementando le pratiche Infrastructure as code (IaC). Archivia i tuoi modelli nei sistemi di controllo delle versioni, implementa le revisioni del codice e utilizza test automatici per convalidare le modifiche. Questo approccio garantisce la coerenza, migliora la collaborazione e fornisce un audit trail per le modifiche all’infrastruttura.

Prendi in considerazione l'implementazione di CI/CD pipeline per il codice della tua infrastruttura per automatizzare il test e l'implementazione dei tuoi modelli. CloudFormation Strumenti come AWS CodePipeline e AWS CodeDeploy possono essere utilizzati per creare flussi di lavoro automatizzati per le implementazioni dell'infrastruttura. AWS CodeBuild

Per ulteriori informazioni sull'implementazione delle best practice IaC, consulta Using AWS CloudFormation as an IaC tool.

Per ulteriori informazioni sull'utilizzo della distribuzione continua con CloudFormation, vedere Continuous delivery with. CodePipeline

Non incorporare le credenziali nei modelli

Anziché incorporare informazioni sensibili nei tuoi CloudFormation modelli, ti consigliamo di utilizzare riferimenti dinamici nel tuo modello di stack.

I riferimenti dinamici offrono un modo compatto e potente per fare riferimento a valori esterni archiviati e gestiti in altri servizi, come AWS Systems Manager Parameter Store o AWS Secrets Manager. Quando si utilizza un riferimento dinamico, CloudFormation recupera il valore del riferimento specificato quando necessario durante le operazioni di stack e change set e passa il valore alla risorsa appropriata. Tuttavia, CloudFormation non memorizza mai il valore di riferimento effettivo. Per ulteriori informazioni, consulta Utilizzo di riferimenti dinamici per specificare valori di modello.

AWS Secrets Manager ti aiuta a crittografare, archiviare e recuperare in modo sicuro le credenziali per i tuoi database e altri servizi.AWS Archivio parametri di Systems Manager fornisce uno storage sicuro e gerarchico per la gestione dei dati di configurazione.

Per ulteriori informazioni sulla definizione dei parametri del modello, consulta CloudFormation Parameterssintassi del modello.

Utilizzo AWS Tipi di parametri specifici per

Se il modello richiede input per valori AWS specifici esistenti, come gli ID Amazon Virtual Private Cloud esistenti o il nome di una coppia di chiavi Amazon EC2, utilizza tipi di parametri specifici. AWS Ad esempio, puoi specificare un parametro come tipoAWS::EC2::KeyPair::KeyName, che prende il nome di una coppia di chiavi esistente nella tua Account AWS e nella regione in cui stai creando lo stack. CloudFormation puoi convalidare rapidamente i valori per tipi AWS di parametri specifici prima di creare lo stack. Inoltre, se utilizzi la CloudFormation console, CloudFormation mostra un elenco a discesa di valori validi, in modo da non dover cercare o memorizzare gli ID VPC o i nomi delle coppie di chiavi corretti. Per ulteriori informazioni, consulta Specificare le risorse esistenti in fase di esecuzione con i CloudFormation tipi di parametri forniti da.

Utilizzare i vincoli dei parametri

Con i vincoli, puoi descrivere i valori di input consentiti in modo da rilevare CloudFormation eventuali valori non validi prima di creare uno 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 CloudFormation Parameterssintassi del modello.

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 pseudoparametri 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 il nome della risorsa Amazon (ARN) di un’altra risorsa esistente. In questo caso, la risorsa esistente è una risorsa archivio parametri AWS Systems Manager con il seguente ARN: arn:aws:ssm:us-east-1:123456789012:parameter/MySampleParameter. Dovrai adattare il formato ARN alla partizione, alla Regione e all’ID account AWS di destinazione. 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 elementi in un ARN con:. CloudFormation !Sub 'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter

Per fare un altro esempio, supponiamo di voler condividere risorse o configurazioni su più stack. In questo esempio, supponiamo di aver creato una sottorete per il tuo VPC e quindi di averne esportato l'ID per utilizzarlo con altri stack nello stesso e nella 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 di stack devono essere univoche per ogni account e Regione. Quindi, in questo caso, puoi utilizzare lo pseudoparametro AWS::StackName per creare un prefisso per l’esportazione. Poiché i nomi degli stack devono essere univoci anche per ogni account e Regione, l’utilizzo di questo pseudoparametro come prefisso aumenta la possibilità di avere un nome di esportazione univoco, promuovendo al contempo la riutilizzabilità tra gli stack da cui esporti i valori. In alternativa, puoi utilizzare un prefisso di tua scelta.

Usa AWS::CloudFormation: :Init per distribuire applicazioni software su istanze Amazon EC2

Quando avvii gli stack, puoi installare e configurare applicazioni software sulle istanze Amazon EC2 utilizzando lo script helper cfn-init 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 nella tua configurazione, CloudFormation genera registri che puoi utilizzare per indagare sui 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 e AWS::CloudFormation::Init, consulta Implementa le applicazioni su Amazon EC2.

Utilizzare gli script helper più recenti

Gli script CloudFormation di supporto 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 riferimento agli script di CloudFormation supporto nella Template Reference Guide. CloudFormation

Convalidare i modelli prima di utilizzarli

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

Durante la convalida, controlla CloudFormation innanzitutto se il modello è un JSON valido. Se non lo è, CloudFormation verifica se il modello è in un formato YAML valido. Se entrambi i controlli falliscono, CloudFormation restituisce un errore di convalida del modello.

Per trovare altri problemi prima della distribuzione, puoi anche controllare i modelli sul tuo computer. Per ulteriori informazioni sull'installazione e l'utilizzo di cfn-lintcloudformation-validate, e sul CloudFormation Language Server, vedereConvalida dei modelli. Per comprendere i limiti della convalida locale, vedereComprendi l'ambito di convalida.

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

È anche possibile convalidare il modello per la conformità alle linee guida delle policy dell’organizzazione. AWS CloudFormation Guard (cfn-guard) è uno strumento open source di interfaccia a riga di comando (CLI) che fornisce un linguaggio "policy come codice" per definire regole che possono controllare le configurazioni delle risorse necessarie e 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.

Puoi cfn-guard utilizzarlo localmente, durante la modifica dei modelli, o automaticamente come parte di una CI/CD pipeline per interrompere l'implementazione di risorse non conformi.

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

Per esempi di installazione e utilizzo, vedere. Convalida i modelli con Guard

Utilizzare YAML o JSON per creare i modelli

CloudFormation supporta i formati YAML e JSON per i modelli. Ognuno ha i suoi vantaggi e la scelta dipende dalle esigenze specifiche:

Utilizza YAML quando

  • Dai priorità alla leggibilità e alla manutenibilità umane

  • Vuoi includere i commenti per documentare il tuo modello

  • Stai lavorando su modelli complessi con strutture annidate

  • Vuoi usare YAML-specific funzionalità come ancore e alias per ridurre la ripetizione

Utilizza JSON quando:

  • Devi integrare con strumenti o sistemi che preferiscono JSON

  • Stai lavorando con la generazione o la manipolazione di modelli programmatici

  • È necessaria una rigorosa convalida dei dati

YAML è generalmente consigliato per la creazione manuale di modelli grazie alla sua leggibilità e al supporto per i commenti. È particolarmente utile per modelli complessi in cui la struttura basata sull’indentazione aiuta a visualizzare le gerarchie di risorse. JSON può essere utile nei flussi di lavoro automatizzati o quando si lavora con API che prevedono l’input JSON. È utile anche quando devi garantire la stretta aderenza a una struttura specifica. Indipendentemente dal formato scelto, concentrati sulla creazione di modelli ben strutturati, documentati e gestibili. Se usi YAML, sfrutta le sue funzionalità come ancore e alias per ridurre le ripetizioni e migliorare la manutenibilità.

Implementazione di una strategia di assegnazione tag completa

Implementa una strategia di tagging coerente per tutte le risorse create dai tuoi modelli. CloudFormation I tag aiutano nell’organizzazione delle risorse, nell’allocazione dei costi, nel controllo degli accessi e nell’automazione. Valuta la possibilità di includere tag relativi all’ambiente, al proprietario, al centro di costo, all’applicazione e allo scopo.

Utilizza la proprietà Tags della risorsa AWS::CloudFormation::Stack per applicare i tag a tutte le risorse supportate in uno stack. È inoltre possibile utilizzare la proprietà TagSpecifications disponibile su molti tipi di risorse per applicare i tag durante la creazione delle risorse.

Per ulteriori informazioni sui tag, consulta Resource tag.

Sfrutta le macro dei modelli per trasformazioni avanzate

CloudFormation le macro consentono di eseguire elaborazioni personalizzate sui modelli, da semplici azioni come le operazioni di ricerca e sostituzione a trasformazioni complesse che generano risorse aggiuntive. Usa le macro per estendere le funzionalità dei CloudFormation modelli e implementare modelli riutilizzabili in tutta l'organizzazione.

AWS Serverless Application Model Questo è un esempio di macro che semplifica lo sviluppo di applicazioni serverless. Prendi in considerazione la possibilità di creare macro personalizzate per modelli e requisiti specifici dell’organizzazione.

Per ulteriori informazioni sull'utilizzo delle macro nei modelli, vedere Panoramica delle macro. CloudFormation

Gestisci tutte le risorse dello stack tramite CloudFormation

Dopo aver avviato uno stack, usa la CloudFormation console, l'API o la AWS CLI per aggiornare le risorse nello stack. Non apportare modifiche allo stack di risorse all'esterno 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 annullate e la configurazione della risorsa tornerà alla configurazione nel modello.

Per ulteriori informazioni sulla deriva, consulta Cos'è una deviazione?.

Per ulteriori informazioni sull’aggiornamento degli stack, consulta Aggiornare uno CloudFormation 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 alcuna modifica 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 database Amazon RDS, CloudFormation creerai un nuovo database ed eliminerà quello vecchio; perderai i dati nel vecchio database a meno che non ne sia già stato 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.

Nota

Se utilizzi gli aggiornamenti diretti dello stack anziché i set di modifiche, la convalida pre-distribuzione convalida comunque i tuoi modelli automaticamente. Tuttavia, i set di modifiche offrono vantaggi aggiuntivi. Utilizza i set di modifiche per visualizzare in anteprima quali risorse verranno aggiunte, modificate o sostituite prima di eseguire l'aggiornamento.

Utilizzare le policy di stack per proteggere le risorse

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 policy di stack è un documento JSON che descrive quali operazioni di aggiornamento possono essere eseguite su risorse definite. 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.

Utilizzo AWS CloudTrail per registrare CloudFormation le chiamate

AWS CloudTrail tiene traccia di chiunque effettui chiamate CloudFormation API nel tuo Account AWS. Le chiamate API vengono registrate ogni volta che qualcuno utilizza l' CloudFormation API, la CloudFormation console, una console di back-end o i comandi. CloudFormation AWS CLI Attivare la registrazione e specificare un bucket Amazon S3 in cui archiviare i log. In questo modo, se necessario, puoi verificare chi ha effettuato quale CloudFormation chiamata nel tuo account.

Per ulteriori informazioni, consulta Registrazione delle chiamate CloudFormation API con AWS CloudTrail.

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.

Aggiornare regolarmente le istanze Amazon EC2

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

Utilizza regolarmente il rilevamento della deriva

Utilizza regolarmente la funzionalità di rilevamento della CloudFormation deriva per identificare le risorse che sono state modificate al di fuori della gestione. CloudFormation Il rilevamento e la risoluzione della deriva aiutano a mantenere l’integrità dell’infrastruttura grazie all’approccio basato sul codice e garantiscono che i modelli riflettano accuratamente lo stato delle risorse implementate.

Prendi in considerazione l’implementazione del rilevamento automatico della deriva come parte delle tue procedure operative. Puoi utilizzare AWS Lambda le funzioni attivate dalle EventBridge regole di Amazon per verificare periodicamente la presenza di deviazioni e avvisare il tuo team quando vengono rilevate discrepanze.

Per ulteriori informazioni sulla deriva, consulta Detect unmanaged configuration changes to stacks and resources with drift detection.

Configura i trigger di rollback per il ripristino automatico

Utilizza i trigger di rollback per specificare gli CloudWatch allarmi di Amazon da CloudFormation monitorare durante le operazioni di creazione e aggiornamento dello stack. Se uno degli allarmi specificati entra in ALARM tale stato, ripristina CloudFormation automaticamente l'intero funzionamento dello stack, contribuendo a garantire che l'infrastruttura rimanga stabile.

Configura i trigger di rollback per metriche critiche come i tassi di errore delle applicazioni, l’utilizzo delle risorse di sistema o le metriche aziendali personalizzate che indicano lo stato dell’applicazione e dell’infrastruttura.

Per ulteriori informazioni sui trigger di rollback, consulta Roll back your stack on alarm breach.

Implementa strategie efficaci di rifattorizzazione degli stack

Man mano che l'infrastruttura si evolve, potrebbe essere necessario rifattorizzare gli CloudFormation stack per migliorare la manutenibilità, ridurre la complessità o adattarsi ai mutevoli requisiti. Rifattorizzare gli stack implica la ristrutturazione dei modelli e delle risorse preservando il comportamento e la funzionalità esterni. Il refactoring degli stack è utile da utilizzare nei seguenti modi: CloudFormation

  • Suddivisione degli stack monolitici: suddivisione degli stack grandi e complessi in stack più piccoli e più gestibili, organizzati per ciclo di vita o proprietà

  • Consolidamento delle risorse correlate: combinazione di risorse correlate provenienti da più stack in un unico stack coeso per semplificare la gestione

  • Estrazione di componenti riutilizzabili: spostamento dei modelli comuni in moduli o stack annidati per promuovere il riutilizzo e la coerenza

  • Miglioramento dell’organizzazione delle risorse: ristrutturazione delle risorse all’interno di uno stack per rispecchiare meglio le relazioni e le dipendenze

Per ulteriori informazioni sul refactoring degli stack, consulta. CloudFormation Rifattorizzazione degli stack

Usa CloudFormation Hooks per la gestione del ciclo di vita

CloudFormation Gli Hooks forniscono codice che ispeziona in modo proattivo la configurazione delle AWS risorse prima del provisioning ed eseguono controlli di convalida complessi. Hooks verifica se le risorse, gli stack e i set di modifiche sono conformi alle esigenze di sicurezza, operative e di ottimizzazione dei costi dell’organizzazione. Fornisce avvisi prima del provisioning di una risorsa, o fallisce l’operazione e la interrompe completamente, a seconda di come è stata configurata. Le violazioni e gli avvisi vengono registrati in Amazon CloudWatch per fornire visibilità sulle distribuzioni non conformi.

Per ulteriori informazioni su queste best practice per Hooks, consulta AWS CloudFormation Hooks concepts.

Per ulteriori informazioni su cosa può fare Hooks per le tue CloudFormation risorse, consulta What are Hooks? AWS CloudFormation

Usa il generatore IaC per creare modelli a partire da risorse esistenti

Il generatore CloudFormation IaC (infrastructure as code) ti aiuta a creare CloudFormation modelli dalle tue AWS risorse esistenti. Questa funzionalità è particolarmente utile quando è necessario replicare l'infrastruttura esistente, documentare le risorse create manualmente o gestire risorse precedentemente non gestite. CloudFormation Il generatore IaC è utile per creare i CloudFormation modelli nei seguenti modi:

  • Creazione accelerata di modelli: genera modelli da risorse esistenti invece di scriverli da zero

  • Infrastruttura coerente: garantisce che i nuovi ambienti corrispondano a quelli esistenti utilizzando i modelli generati come punto di partenza

  • Migrazione all'infrastruttura come codice: gestisci gradualmente le risorse create manualmente CloudFormation

  • Documentazione: crea un record della tua infrastruttura esistente sotto forma di modello

Per ulteriori informazioni sul generatore IaC, consulta Generate templates from existing resources with IaC generator.

Utilizzo AWS Infrastructure Composer per la progettazione visiva di modelli

AWS Infrastructure Composer è uno strumento di progettazione visiva che consente di creare, visualizzare e modificare i CloudFormation modelli utilizzando un'interfaccia drag-and-drop. Può essere particolarmente utile se utilizzato CloudFormation nei seguenti modi:

  • Pianificazione dell’architettura: progetta e convalida le architetture dell’infrastruttura prima dell’implementazione

  • Modernizzazione dei modelli: visualizza i modelli esistenti per comprenderne la struttura e identificare le opportunità di miglioramento

  • Formazione e inserimento: aiuta i nuovi membri del team a comprendere i CloudFormation concetti e le relazioni AWS di servizio attraverso l'apprendimento visivo

  • Comunicazione con le parti interessate: presenta i progetti dell’infrastruttura a soggetti non tecnici utilizzando rappresentazioni visive chiare

  • Revisioni della conformità: utilizza diagrammi visivi per facilitare le revisioni di sicurezza e conformità dei progetti di infrastruttura

  • Revisioni della conformità: utilizza diagrammi visivi per facilitare le revisioni di sicurezza e conformità dei progetti di infrastruttura

Per ulteriori informazioni su Infrastructure Composer, vedi Che cos'è? AWS Infrastructure Composer.

Prendi in considerazione l'utilizzo AWS Cloud Development Kit (AWS CDK) per infrastrutture complesse

Per requisiti infrastrutturali complessi, prendi in considerazione l'utilizzo del CDK per definire le tue risorse cloud utilizzando linguaggi di programmazione familiari come TypeScript Python, Java e .NET. AWS CDK genera CloudFormation modelli a partire dal codice, consentendoti di sfruttare tutte le funzionalità utilizzando le astrazioni e i costrutti di CloudFormation programmazione del tuo linguaggio preferito.

AWS CDK Fornisce costrutti di alto livello che racchiudono le migliori pratiche e semplificano la definizione di modelli di infrastruttura comuni. Ciò può ridurre in modo significativo la quantità di codice necessaria per definire l’infrastruttura, garantendo al contempo l’aderenza alle migliori pratiche.

Per ulteriori informazioni su CDK, consulta AWS Cloud Development Kit (AWS CDK).

Utilizza IAM per controllare gli accessi

IAM è un AWS servizio che puoi utilizzare per gestire gli utenti e le relative autorizzazioni in. AWS Puoi usare IAM with CloudFormation per specificare quali CloudFormation azioni possono eseguire gli utenti, come visualizzare modelli di stack, creare stack o eliminare stack. Inoltre, per chiunque gestisca stack CloudFormation, saranno necessarie le autorizzazioni per le risorse all'interno di quegli stack. Ad esempio, se gli utenti desiderano utilizzarle CloudFormation per avviare, aggiornare o terminare le istanze Amazon EC2, devono disporre dell'autorizzazione per chiamare le azioni Amazon EC2 pertinenti.

Nella maggior parte dei casi, gli utenti richiedono l'accesso completo per gestire tutte le risorse in un modello. CloudFormation esegue chiamate per creare, modificare ed eliminare tali risorse per conto degli utenti. Per separare le autorizzazioni tra un utente e il CloudFormation servizio, utilizza un ruolo di servizio. CloudFormation utilizza la policy del ruolo di servizio per effettuare chiamate anziché la policy dell'utente. Per ulteriori informazioni, consulta CloudFormation ruolo di servizio.

Applica il principio del privilegio minimo

Quando configuri i ruoli IAM per i ruoli di CloudFormation servizio o per le risorse create dai tuoi modelli, applica sempre il principio del privilegio minimo. Concedi solo le autorizzazioni necessarie per la funzionalità prevista ed evita di utilizzare autorizzazioni jolly quando possibile.

Usa IAM Access Analyzer per esaminare le autorizzazioni concesse ai tuoi ruoli di CloudFormation servizio e identificare le autorizzazioni inutilizzate che possono essere rimosse. Rivedi e aggiorna regolarmente le policy IAM per assicurarti che rimangano allineate ai tuoi requisiti di sicurezza.

Proteggi i parametri sensibili

Per informazioni sensibili come password, chiavi API e altri segreti, utilizza AWS Systems Manager Parameter Store o AWS Secrets Manager invece di incorporarli direttamente nei tuoi modelli. Utilizza riferimenti dinamici nei modelli per recuperare in modo sicuro questi valori durante le operazioni di stack.

Quando utilizzi i parametri nei tuoi modelli, imposta la proprietà NoEcho su true per i parametri sensibili al fine di evitare che i loro valori vengano visualizzati nella console, nelle risposte API o nell’output della CLI. Tieni presente che NoEcho non impedisce la registrazione del valore se viene passato ad altri servizi o risorse che potrebbero registrarlo.

Per ulteriori informazioni sull'utilizzo di AWS Systems Manager Parameter Store con, CloudFormation consulta Get a plain text value from AWS Systems Manager Parameter Store.

Per ulteriori informazioni sull'utilizzo della NoEcho proprietà, vedere la sintassi dei parametri CloudFormation del modello.

Per ulteriori informazioni sull'utilizzo AWS Secrets Manager con, CloudFormation consulta Create AWS Secrets Manager secrets in AWS CloudFormation.

Implementa la politica come codice con Guard

AWS CloudFormation Guard (cfn-guard) è uno strumento open source basato sulla policy as-code che consente di definire e applicare regole per i modelli. CloudFormation Utilizza cfn-guard per garantire che i tuoi modelli siano conformi alle politiche organizzative, alle best practice di sicurezza e ai requisiti di governance.

Effettua l'integrazione cfn-guard nelle tue CI/CD pipeline per convalidare automaticamente i modelli in base alle regole delle tue policy prima della distribuzione. Questo aiuta a impedire che risorse non conformi vengano distribuite nell’ambiente e fornisce un feedback tempestivo agli sviluppatori sulle violazioni delle policy.

Per esempi di configurazione e utilizzo, consulta. Convalida i modelli con Guard