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à.
Il refactoring dello stack semplifica la riorganizzazione delle risorse negli stack preservando al contempo le proprietà e i dati delle risorse esistenti. CloudFormation Con il refactoring dello stack, puoi spostare le risorse tra gli stack, dividere gli stack monolitici in componenti più piccoli o consolidare più stack in uno solo.
Come funziona lo stack refactoring
Prendi in considerazione i passaggi seguenti quando pianifichi il refactor dello stack:
-
Valuta la tua infrastruttura attuale: esamina gli CloudFormation stack e le risorse esistenti per identificare le opportunità di refactoring degli stack.
-
Pianifica il refactoring: definisci come devono essere organizzate le risorse. Considerate le vostre dipendenze, le convenzioni di denominazione e i limiti operativi. Questi possono influire sulla convalida successiva CloudFormation .
Determina il numero di stack di destinazione in cui rifattorizzerai le risorse. Puoi spostare le risorse tra almeno 2 pile e un massimo di 5 pile. Le risorse possono essere spostate tra pile annidate.
-
Aggiorna i modelli: modifica i CloudFormation modelli in modo che riflettano la modifica pianificata, ad esempio spostando le definizioni delle risorse tra i modelli. È possibile rinominare il codice logico IDs durante il refactoring.
-
Crea il refactor dello stack: fornisci un elenco di nomi e modelli dello stack che desideri rifattorizzare.
-
Esamina l'impatto del refactoring sulla tua infrastruttura e risolvi eventuali conflitti: CloudFormation convalida i modelli forniti e verifica le dipendenze tra gli stack, i tipi di risorse con problemi di aggiornamento dei tag e i conflitti tra gli ID logici delle risorse.
Se la convalida ha esito positivo, CloudFormation genererà un'anteprima delle azioni di rifattore che avverranno dopo l'esecuzione del refactor.
Se la convalida fallisce, puoi riprovare dopo aver risolto i problemi rilevati. In caso di conflitti, sarà necessario fornire una mappatura degli ID logici delle risorse che mostri l'origine e la destinazione della risorsa in conflitto.
-
Esegui il refactoring: dopo aver verificato che le modifiche siano in linea con il modo in cui desideri rifattorizzare gli stack, esegui lo stack refactor.
-
Monitora: controlla lo stato dello stack refactor
ExecutionStatus
per assicurarti che abbia esito positivo.
Limitazioni dello stack refactoring
Considerate le seguenti limitazioni quando pianificate il refactoring dello stack:
-
Le operazioni di rifattorizzazione non consentono la creazione di nuove risorse, l'eliminazione di risorse o la modifica delle configurazioni delle risorse.
-
Non è possibile modificare o aggiungere nuovi parametri, condizioni o mappature durante un refactoring dello stack. Una possibile soluzione alternativa consiste nell'aggiornare lo stack prima di eseguire il refactoring.
-
Non puoi rifattorizzare la stessa risorsa in più stack.
-
Non è possibile rifattorizzare una risorsa in un nuovo stack se quello stack utilizza determinati pseudo parametri (Esempio:).
AWS::StackName
-
CloudFormation non supporta pile vuote. Prima di creare un refactor dello stack che rimuova tutte le risorse esistenti da uno stack, è necessario aggiungere una risorsa a quello stack. Questa risorsa può essere semplice, ad esempio un tipo di risorsa.
waitCondition
-
Le seguenti risorse non sono disponibili:
AWS::AppConfig::Extension
AWS::AppConfig::ExtensionAssociation
AWS::BackupGateway::Hypervisor
AWS::DataBrew::Dataset
AWS::DataBrew::Job
AWS::DataBrew::Project
AWS::DataBrew::Recipe
AWS::DataBrew::Ruleset
AWS::DataBrew::Schedule
AWS::FIS::ExperimentTemplate
AWS::MSK::ServerlessCluster
AWS::Omics::AnnotationStore
AWS::Omics::ReferenceStore
AWS::Omics::SequenceStore
AWS::OpenSearchServerless::Collection
AWS::Route53::RecordSetGroup
AWS::SageMaker::DataQualityJobDefinition
AWS::SageMaker::FeatureGroup
AWS::SageMaker::ModelBiasJobDefinition
AWS::SageMaker::ModelExplainabilityJobDefinition
AWS::SageMaker::ModelQualityJobDefinition
AWS::WAFv2::IPSet
AWS::WAFv2::RegexPatternSet
AWS::WAFv2::RuleGroup
AWS::WAFv2::WebACL
Rifattorizzazione di uno stack utilizzando il AWS Command Line Interface
I seguenti comandi vengono utilizzati per il refactoring dello stack:
Di seguito è riportato un esempio di come rifattorizzare uno stack utilizzando ( AWS Command Line Interface CLI).
-
Per iniziare, avrai bisogno del CloudFormation modello che desideri rifattorizzare. Il comando seguente recupera il modello:
aws cloudformation get-template --stack-name
ExampleStack1
Una volta ottenuto il modello, utilizzate l'ambiente di sviluppo integrato (IDE) di vostra scelta per aggiornarlo in modo da utilizzare la struttura e l'organizzazione delle risorse desiderate.
-
Crea lo stack refactor usando il
create-stack-refactor
comando e fornisci il nome dello stack e i modelli per ogni stack coinvolto nel refactoring:aws cloudformation create-stack-refactor \ --stack-definitions \ StackName=
MySns
,TemplateBody@=file://afterSns.yaml
\ StackName=MyLambdaSubscription
,TemplateBody@=file://afterLambda.yaml
\ --enable-stack-creation \ --resource-mappingsfile://refactor.json
Il
--resource mappings
parametro è facoltativo, ma sarà necessario se viene rilevato un conflitto durante la convalida del modello. Oltre a fornire gliDestination
stackSource
and, dovrai fornire anche il.LogicalResourceId
Di seguito è riportato un esempio del filerefactor.json
.[ { "Source": { "StackName": "MySns", "LogicalResourceId": "MyFunction" }, "Destination": { "StackName": "MyLambdaSubscription", "LogicalResourceId": "Function" } } ]
-
Dopo aver creato il refactor, CloudFormation genera un'anteprima della modifica del refactor, che consente di visualizzare in anteprima l'impatto che le modifiche proposte avranno sull'infrastruttura. In questo esempio, il file
StackRefactorId
creato è.stack-refactor-1ab2-c34d-5ef6
Utilizzate il seguente comando per visualizzare in anteprima le modifiche:aws cloudformation list-stack-refactor-actions \ --stack-refactor-id
stack-refactor-1ab2-c34d-5ef6
-
Dopo aver esaminato e confermato le modifiche, utilizzate il
execute-stack-refactor
comando per completare il processo di refactoring:aws cloudformation execute-stack-refactor \ --stack-refactor-id
stack-refactor-1ab2-c34d-5ef6
-
Dopo l'esecuzione
execute-stack-refactor
, è possibile monitorare lo stato dell'operazione utilizzando il seguente comando:aws cloudformation describe-stack-refactor \ --stack-refactor-id
stack-refactor-1ab2-c34d-5ef6
CloudFormation aggiornerà automaticamente la
Status
fineExecutionStatus
dell'operazione di refactor.