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 utilizzare 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
-
-
Accorcia il ciclo di feedback per migliorare la velocità di sviluppo
-
Usa i riferimenti cross-stack per restituire il valore di un output esportato da un altro stack
-
AWS CloudFormation StackSets Utilizzalo per distribuzioni con più account e più regioni
-
Riutilizzare i modelli per replicare gli stack in ambienti multipli
-
Utilizzare i moduli per riutilizzare le configurazioni delle risorse
-
- Creazione di modelli
- Gestione degli stack
-
-
Gestisci tutte le risorse dello stack tramite CloudFormation
-
Utilizzare AWS CloudTrail per registrare le chiamate CloudFormation
-
Utilizzare la revisione del codice e i controlli di revisione per gestire i modelli
-
Configura i trigger di rollback per il ripristino automatico
-
Implementa strategie efficaci di rifattorizzazione degli stack
-
- Strumenti di creazione
- Conformità e sicurezza
Accorcia il ciclo di feedback per migliorare la velocità di sviluppo
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 Lintercfn-lint
) e gli strumenti da riga di comando. TaskCatcfn-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 codicecfn-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 withcfn-lint
Dopo aver eseguito il linting iniziale e risolto cfn-lint
eventuali problemi, puoi utilizzarli TaskCat per testare i tuoi modelli creando programmaticamente degli stack nel formato che preferisci. Regioni AWS TaskCat genera anche un rapporto con i voti per ogni regione scelta. pass/fail
Per una step-by-step guida pratica su come utilizzare entrambi gli strumenti per abbreviare il ciclo di feedback, segui il laboratorio di Linting
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 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 cross-stack per restituire il valore di un output esportato da un altro 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 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. Utilizzate invece i riferimenti cross-stack per restituire il valore di un output esportato da un altro stack in modo che altri stack possano utilizzarli. Stack possono utilizzare le risorse esportate chiamandole con la funzione Fn::ImportValue
.
Ad esempio, potresti volere un stack di rete che includa un VPC, 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.
AWS CloudFormation StackSets Utilizzalo per distribuzioni con più account e più regioni
AWS CloudFormation StackSets estendi le funzionalità degli stack consentendoti di creare, aggiornare o eliminare gli stack su più account e regioni con un'unica operazione. StackSets Utilizzatelo per implementare componenti di infrastruttura comuni, controlli di conformità o servizi condivisi all'interno dell'organizzazione.
Durante l'utilizzo StackSets, implementa le autorizzazioni gestite dal servizio con AWS Organizations per una gestione semplificata delle autorizzazioni. Questo approccio consente di eseguire l'implementazione sugli account StackSets all'interno dell'organizzazione senza la necessità di configurare manualmente i ruoli IAM in ciascun account.
Per ulteriori informazioni su, StackSets consulta StackSets i 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 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 (Amazon EC2), 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 .
Adotta 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 una pista di controllo per le modifiche all'infrastruttura.
Prendi in considerazione l'implementazione di CI/CD pipeline per il codice dell'infrastruttura per automatizzare il test e l'implementazione dei tuoi CloudFormation modelli. Strumenti come AWS CodePipeline AWS CodeBuild, e AWS CodeDeploy possono essere utilizzati per creare flussi di lavoro automatizzati per le implementazioni dell'infrastruttura.
Per ulteriori informazioni sull'implementazione delle migliori pratiche IaC, vedere Utilizzo AWS CloudFormation come strumento IaC.
Per ulteriori informazioni sull'utilizzo della distribuzione continua con CloudFormation, consulta Consegna continua con. CodePipeline
Non incorporare credenziali nei tuoi modelli
Invece di incorporare informazioni sensibili nei 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 consente di crittografare, archiviare e recuperare in modo sicuro le credenziali per i 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.
Utilizza tipi di parametri specifici AWS
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. 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 del IDs VPC o delle key pair. Per ulteriori informazioni, consulta Specificare le risorse esistenti in fase di esecuzione 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 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 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 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 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 elementi in un ARN con:. 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 VPC e quindi esportato il relativo ID per utilizzarlo con altri stack nella 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::Init
Da 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 di CloudFormation 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, consultate il riferimento agli script di CloudFormation supporto nella Template Reference Guide.AWS CloudFormation
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 l' CloudFormation API AWS CLI or, utilizza il comando validate-templateCLI o l'operazione ValidateTemplateAPI.
Durante la convalida, verifica CloudFormation innanzitutto se il modello è 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.
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 policy-as-code un linguaggio per definire regole in grado di verificare le configurazioni delle risorse sia richieste 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.
È possibile cfn-guard
utilizzarlo localmente, durante la modifica dei modelli, o automaticamente come parte di una CI/CD pipeline per interrompere la distribuzione di risorse non conformi.
Inoltre, cfn-guard
include una funzionalità che consente di estrarre regole dai modelli conformi esistenti. rulegen
CloudFormation
Per ulteriori informazioni, consulta il repository cfn-guard su
Utilizzo di YAML o JSON per la creazione di modelli
CloudFormation supporta i formati YAML e JSON per i modelli. Ognuno ha i suoi vantaggi e la scelta dipende dalle esigenze specifiche:
Usa YAML quando
-
Dai priorità alla leggibilità e alla manutenibilità umane
-
Vuoi includere commenti per documentare il tuo modello
-
Stai lavorando su modelli complessi con strutture annidate
-
Vuoi usare funzionalità specifiche di YAML come ancore e alias per ridurre le ripetizioni
Usa JSON quando:
-
Devi integrarti 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 flussi di lavoro che prevedono l'input JSON. APIs È utile anche quando è necessario 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à.
Implementa una strategia di tagging completa
Implementa una strategia di tagging coerente per tutte le risorse create dai tuoi CloudFormation modelli. 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 Tags
proprietà della AWS::CloudFormation::Stack
risorsa per applicare i tag a tutte le risorse supportate in uno stack. È inoltre possibile utilizzare la TagSpecifications
proprietà disponibile su molti tipi di risorse per applicare i tag durante la creazione delle risorse.
Per ulteriori informazioni sull'etichettatura, consulta Resource tag.
Sfrutta le macro dei modelli per trasformazioni avanzate
CloudFormation le macro consentono di eseguire elaborazioni personalizzate sui modelli, da azioni semplici come find-and-replace operazioni a trasformazioni complesse che generano risorse aggiuntive. Utilizza 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.
Gestisci tutte le risorse dello stack tramite CloudFormation
Dopo aver avviato uno stack, utilizza la CloudFormation console
Per ulteriori informazioni su drift, consulta. Cos'è una deviazione?
Per ulteriori informazioni sull'aggiornamento degli stack, consulta. 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 modifichi il nome di un'istanza di database Amazon RDS, 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.
Utilizza 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.
Utilizzare AWS CloudTrail per registrare le chiamate CloudFormation
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 una determinata CloudFormation chiamata nel tuo account.
Per ulteriori informazioni, consulta Registrazione delle chiamate AWS 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.
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 pacchetto RPM. In questo modo ti assicuri di avere le correzioni e gli aggiornamenti di sicurezza più recenti.
Usa regolarmente il rilevamento della deriva
Utilizzate regolarmente la funzione di rilevamento della CloudFormation deriva per identificare le risorse che sono state modificate al di fuori della CloudFormation gestione. Il rilevamento e la risoluzione delle deviazioni aiutano a mantenere l'integrità dell'infrastruttura secondo un approccio basato sul codice e garantiscono che i modelli riflettano accuratamente lo stato delle risorse distribuite.
Prendi in considerazione l'implementazione del rilevamento automatico delle derive come parte delle tue procedure operative. Puoi utilizzare AWS Lambda le funzioni attivate dalle EventBridge regole di Amazon per verificare periodicamente eventuali deviazioni e avvisare il team quando vengono rilevate discrepanze.
Per ulteriori informazioni sulla deriva, consulta Rileva le modifiche di configurazione non gestite agli stack e alle risorse con il rilevamento delle deviazioni.
Configura i trigger di rollback per il ripristino automatico
Utilizza i trigger di rollback per specificare gli CloudWatch allarmi Amazon da CloudFormation monitorare durante le operazioni di creazione e aggiornamento dello stack. Se uno qualsiasi degli allarmi specificati entra ALARM
nello stato, ripristina CloudFormation automaticamente l'intera operazione dello stack, contribuendo a garantire che l'infrastruttura rimanga in uno stato stabile.
Configura i trigger di rollback per metriche critiche come i tassi di errore delle applicazioni, l'utilizzo delle risorse di sistema o 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 requisiti in evoluzione. Lo stack refactoring implica la ristrutturazione dei modelli e delle risorse preservandone il comportamento e la funzionalità esterni. È utile utilizzare lo stack refactoring nei seguenti modi: CloudFormation
-
Suddivisione di pile monolitiche: suddivisione di pile grandi e complesse in pile più piccole e più gestibili, organizzate 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 pile annidate 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 hook forniscono codice che ispeziona in modo proattivo la configurazione delle AWS risorse prima del provisioning ed esegue controlli di convalida complessi. Hooks verifica se le risorse, gli stack e i set di modifiche sono conformi alle esigenze di sicurezza, operative e ottimizzazione dei costi dell'organizzazione. Forniscono avvisi prima del provisioning di una risorsa o interrompono l'operazione e la interrompono completamente, a seconda di come è stata configurata. Le violazioni e gli avvisi vengono registrati in Amazon CloudWatch per fornire visibilità sulle implementazioni non conformi.
Per ulteriori informazioni su cosa possono fare gli Hooks per le tue CloudFormation risorse, consulta, Cosa sono gli Hooks? AWS CloudFormation
Usa iAc Generator per creare modelli da risorse esistenti
Il generatore CloudFormation IaC (infrastructure as code) consente di creare CloudFormation modelli a partire dalle risorse esistenti AWS . 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 CloudFormation modelli nei seguenti modi:
-
Creazione accelerata di modelli: genera modelli da risorse esistenti invece di scriverli da zero
-
Infrastruttura coerente: assicurati che i nuovi ambienti corrispondano a quelli esistenti utilizzando i modelli generati come punto di partenza
-
Migrazione all'infrastruttura come codice: CloudFormation gestione graduale delle risorse create manualmente
-
Documentazione: crea una registrazione dell'infrastruttura esistente sotto forma di modello
Per ulteriori informazioni su IaC Generator, consulta Generare modelli da risorse esistenti con IaC Generator.
Utilizzalo AWS Infrastructure Composer per la progettazione di modelli visivi
AWS Infrastructure Composer è uno strumento di progettazione visiva che consente di creare, visualizzare e modificare i CloudFormation modelli utilizzando un' drag-and-dropinterfaccia. Può essere particolarmente utile se utilizzato CloudFormation nei seguenti modi:
-
Pianificazione dell'architettura: progettazione e convalida delle 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 di AWS servizio attraverso l'apprendimento visivo
-
Comunicazione con le parti interessate: presenta i progetti di 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à: utilizzate diagrammi visivi per facilitare le revisioni di sicurezza e conformità dei progetti di infrastruttura
Per ulteriori informazioni su Infrastructure Composer, consulta Cos'è? AWS Infrastructure Composer .
Prendi in considerazione l'utilizzo AWS Cloud Development Kit (AWS CDK) per infrastrutture complesse
Per requisiti di infrastruttura complessi, prendi in considerazione l'utilizzo del CDK per definire le risorse cloud utilizzando linguaggi di programmazione familiari come Python TypeScript, Java e.NET. AWS CDK genera CloudFormation modelli a partire dal tuo codice, consentendoti di sfruttare tutte le funzionalità del tuo linguaggio preferito utilizzando al CloudFormation contempo le astrazioni e i costrutti di 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 sul CDK, vedere. 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. AWS Puoi utilizzare IAM con CloudFormation per specificare quali CloudFormation azioni gli utenti possono eseguire, 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 utilizzare le istanze Amazon CloudFormation per avviare, aggiornare o terminare EC2 le istanze Amazon, devono avere l'autorizzazione a richiamare 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 politica del ruolo di servizio per effettuare chiamate anziché la politica dell'utente. Per ulteriori informazioni, consulta AWS 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 i permessi jolly quando possibile.
Utilizza IAM Access Analyzer per esaminare le autorizzazioni concesse ai tuoi ruoli di CloudFormation servizio e identificare le autorizzazioni non utilizzate 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, usa AWS Systems Manager Parameter Store o AWS Secrets Manager invece di incorporarle 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 NoEcho
proprietà su true
per i parametri sensibili per evitare che i loro valori vengano visualizzati nella console, nelle risposte API o nell'output della CLI. Tieni presente che NoEcho
ciò 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, 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 AWS CloudFormation Guard
AWS CloudFormation Guard (cfn-guard
) è uno policy-as-code strumento open source che consente di definire e applicare regole per i CloudFormation modelli. Utilizzalo cfn-guard
per garantire che i tuoi modelli siano conformi alle politiche organizzative, alle migliori pratiche di sicurezza e ai requisiti di governance.
Effettua l'cfn-guard
integrazione nelle tue CI/CD pipeline per convalidare automaticamente i modelli in base alle tue regole politiche 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 ulteriori informazioni su Guard, consulta What is? AWS CloudFormation Guard