

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

# Automatizza la gestione dinamica delle pipeline per l'implementazione di soluzioni hotfix in ambienti Gitflow utilizzando e AWS Service Catalog AWS CodePipeline
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions"></a>

*Balaji Vedagiri, Faisal Shahdad, Shanmugam Shanker e Vivek Thangamuthu, Amazon Web Services*

## Riepilogo
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-summary"></a>

**Nota**  
AWS CodeCommit non è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. [Ulteriori informazioni](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider)

Questo modello affronta uno scenario di gestione di una pipeline dinamica di hotfix dedicata esclusivamente alla distribuzione sicura di soluzioni hotfix in un ambiente di produzione. La soluzione viene implementata e gestita utilizzando un portafoglio e un prodotto. AWS Service Catalog Per l'automazione degli eventi viene utilizzata una EventBridge regola Amazon. Le restrizioni vengono applicate utilizzando i vincoli del portafoglio di Service Catalog e i ruoli AWS Identity and Access Management (IAM) per gli sviluppatori. È consentita solo una AWS Lambda funzione per avviare il prodotto Service Catalog, attivata dalla EventBridge regola. [Questo modello è progettato per ambienti con una configurazione Gitflow specifica, descritta in Informazioni aggiuntive.](#automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional)

In genere, viene implementato un hotfix per risolvere problemi critici o di sicurezza segnalati in un ambiente live, come Production. Gli hotfix devono essere implementati direttamente solo negli ambienti di staging e produzione. Le pipeline di staging e production sono ampiamente utilizzate per le richieste di sviluppo regolari. Queste pipeline non possono essere utilizzate per implementare hotfix perché esistono funzionalità continue di garanzia della qualità che non possono essere promosse alla produzione. Per rilasciare gli hotfix, questo schema descrive una pipeline dinamica e di breve durata con le seguenti funzionalità di sicurezza:
+ **Creazione automatica**: una pipeline di hotfix viene creata automaticamente ogni volta che viene creato un ramo di hotfix in un repository. AWS CodeCommit 
+ **Restrizioni di accesso**: gli sviluppatori non hanno accesso alla creazione di questa pipeline al di fuori del processo di hotfix. 
+ **Fase controllata**: la pipeline dispone di una fase controllata con uno speciale token di accesso, che garantisce che una pull request (PR) possa essere creata una sola volta. 
+ **Fasi** di approvazione: le fasi di approvazione sono incluse nella pipeline per ottenere le approvazioni necessarie dalle parti interessate. 
+ **Eliminazione automatica**: la pipeline degli hotfix viene eliminata automaticamente ogni volta che un `hotfix` ramo viene eliminato dal CodeCommit repository dopo l'unione con un PR. 

## Prerequisiti e limitazioni
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-prereqs"></a>

**Prerequisiti**
+ Ne sono necessari tre attivi come Account AWS segue:
  + Account Tools: per l'integrazione continua e la configurazione della distribuzione continua (CI/CD).
  + Account Stage: per i test di accettazione da parte degli utenti.
  + Account di produzione: per un utente finale aziendale.
  + (Facoltativo) Aggiungi un account Account AWS che funga da account di controllo qualità. Questo account è necessario se si desidera sia una configurazione della pipeline principale, incluso il controllo qualità, sia una soluzione di pipeline hotfix per i test.
+ Uno AWS CloudFormation stack con una condizione opzionale da distribuire nell'account QA utilizzando la pipeline principale, se necessario. Il pattern può ancora essere testato senza la configurazione della pipeline principale creando ed eliminando un ramo. `hotfix`
+ Un bucket Amazon Simple Storage Service (Amazon S3) per archiviare CloudFormation i modelli utilizzati per creare prodotti Service Catalog.
+ Crea regole di approvazione PR per il CodeCommit repository in conformità ai requisiti di conformità (dopo aver creato il repository).
+ Limita le autorizzazioni IAM degli sviluppatori e dei responsabili del team per negare l'esecuzione della funzione [prcreation-lambda Lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) perché dovrebbe essere richiamata solo dalla pipeline.

**Limitazioni**
+ Il CloudFormation provider viene utilizzato nella fase di implementazione e l'applicazione viene distribuita utilizzando un set di modifiche. CloudFormation Se desideri utilizzare un'opzione di distribuzione diversa, modifica lo CodePipeline stack come richiesto.
+ Questo modello utilizza AWS CodeBuild e altri file di configurazione per distribuire un microservizio di esempio. Se hai un tipo di carico di lavoro diverso (ad esempio, carichi di lavoro serverless), devi aggiornare tutte le configurazioni pertinenti.
+ Questo modello distribuisce l'applicazione in un'unica soluzione Regione AWS (ad esempio, US East (Virginia settentrionale) us-east-1). Account AWS Per la distribuzione in più regioni, modifica il riferimento alla regione nei comandi e negli stack.
+ Alcune Servizi AWS non sono disponibili in tutte. Regioni AWS Per la disponibilità regionale, consulta [i servizi AWS per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta [Endpoints and quotas del servizio](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

## Architecture
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-architecture"></a>

I diagrammi di questa sezione forniscono i flussi di lavoro per un evento del ciclo di vita di creazione e per un evento del ciclo di vita di eliminazione.

![\[Flusso di lavoro per creare un evento del ciclo di vita.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/3939f77c-4221-4c23-a3a1-3e8a294b2b32.png)


Il diagramma precedente per la creazione di un evento del ciclo di vita mostra quanto segue:

1. Lo sviluppatore crea una `hotfix-*` filiale nel CodeCommit repository per sviluppare una soluzione relativa all'hotfix.

1. L'evento di creazione del `hotfix-*` ramo viene acquisito tramite la regola. EventBridge I dettagli dell'evento includono il nome del repository e il nome del ramo.

1. La EventBridge regola richiama la funzione. AWS Lambda `hotfix-lambda-function` La EventBridge regola passa le informazioni sull'evento alla funzione Lambda come input.

1. La funzione Lambda elabora l'input per recuperare il nome del repository e il nome del ramo. Avvia il prodotto Service Catalog con i valori recuperati dall'input elaborato.

1. Il prodotto Service Catalog include una configurazione della pipeline che implementerà la soluzione negli ambienti Stage e Production. Il blocco pipeline include le fasi di origine, compilazione e distribuzione. Inoltre, è prevista una fase di approvazione manuale per promuovere l'implementazione per l'ambiente di produzione.

1. La fase di origine recupera il codice dal repository e dal `hotfix-*` ramo creati nella prima fase. Il codice viene passato alla fase di compilazione tramite un bucket Amazon S3 per gli artefatti. Nella fase di creazione, viene creata un'immagine del contenitore che include l'hotfix sviluppato nella `hotfix-*` filiale e inserito in Amazon Elastic Container Registry (Amazon ECR) Elastic Container Registry (Amazon ECR).

1. La fase di distribuzione sull'ambiente di fase aggiorna Amazon Elastic Container Service (Amazon ECS) con l'immagine del contenitore più recente che include l'hotfix. L'hotfix viene distribuito creando ed eseguendo un set di modifiche. CloudFormation 

1. La funzione `prcreation-lambda` Lambda viene richiamata dopo una corretta implementazione nell'ambiente Stage. Questa funzione Lambda crea un PR dal `hotfix-*` ramo ai `main` rami `develop` e del repository. La funzione Lambda assicura che la correzione sviluppata nel `hotfix-*` ramo venga ricongiunta e inclusa nelle distribuzioni successive.

1. Una fase di approvazione manuale aiuta a garantire che le parti interessate necessarie esaminino la correzione e approvino l'implementazione in produzione.

1. La fase di distribuzione nell'ambiente di produzione aggiorna Amazon ECS con l'immagine del contenitore più recente che include l'hotfix. L'hotfix viene distribuito creando ed eseguendo un set di modifiche. CloudFormation 

![\[Flusso di lavoro per eliminare un evento del ciclo di vita.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/192aa897-bd9b-4a9f-804e-340371612b3b.png)


Il diagramma precedente per l'eliminazione di un evento del ciclo di vita mostra quanto segue:

1. Lo sviluppatore elimina il `hotfix-*` ramo dopo la corretta implementazione dell'hotfix nell'ambiente di produzione.

1. L'evento di eliminazione del `hotfix-*` ramo viene acquisito tramite una EventBridge regola. I dettagli dell'evento includono il nome del repository e il nome del ramo.

1. La EventBridge regola richiama la funzione Lambda. La EventBridge regola passa le informazioni sull'evento alla funzione Lambda come input.

1. La funzione Lambda elabora l'input per recuperare il nome del repository e il nome del ramo. La funzione Lambda determina il rispettivo prodotto Service Catalog dall'input passato e quindi termina il prodotto.

1. La cessazione del prodotto fornito da Service Catalog elimina la pipeline e le risorse pertinenti create in precedenza in quel prodotto.

**Automazione e scalabilità**
+ Il modello include una EventBridge regola e una funzione Lambda, in grado di gestire più richieste di creazione di branch hotfix in parallelo. La funzione Lambda fornisce al prodotto Service Catalog la regola dell'evento corrispondente.
+ La configurazione della pipeline viene gestita utilizzando il prodotto Service Catalog, che fornisce funzionalità di controllo della versione. La soluzione è inoltre scalabile automaticamente per gestire più sviluppi di hotfix per la stessa applicazione in parallelo.
+ La funzione [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) assicura che queste modifiche all'hotfix vengano reintegrate anche nei branch `main` e nei branch tramite la creazione automatica di una richiesta pull. `develop` Questo approccio è essenziale per mantenere aggiornate le `main` e le `develop` branch con tutte le correzioni ed evitare potenziali regressioni del codice. Questo processo aiuta a mantenere la coerenza tra i rami e a prevenire le regressioni del codice assicurando che tutti i rami di lunga durata dispongano delle correzioni più recenti.

## Tools (Strumenti)
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-tools"></a>

**Servizi AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita tra e. Account AWS Regioni AWS
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)è un servizio di compilazione completamente gestito che consente di compilare codice sorgente, eseguire test unitari e produrre artefatti pronti per l'implementazione.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)è un servizio di controllo delle versioni che consente di archiviare e gestire in modo privato gli archivi Git, senza dover gestire il proprio sistema di controllo del codice sorgente. AWS CodeCommit non è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, vedi [Come migrare il tuo AWS CodeCommit repository verso un altro provider Git](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/).
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)ti aiuta a modellare e configurare rapidamente le diverse fasi di una versione del software e ad automatizzare i passaggi necessari per rilasciare continuamente le modifiche al software.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) è un servizio di registro di immagini di container gestito sicuro, scalabile e affidabile.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) è un servizio rapido e scalabile di gestione dei container che ti aiuta a eseguire, arrestare e gestire container in un cluster.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)consente di gestire centralmente i cataloghi di servizi IT approvati. AWS Gli utenti finali possono distribuire rapidamente soltanto i servizi IT approvati di cui hanno bisogno, in accordo con i vincoli stabiliti dall'organizzazione.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Altri strumenti**
+ [CloudFormation Linter (cfn-lint)](https://github.com/aws-cloudformation/cfn-lint) [è un linter che verifica i modelli CloudFormation YAML o JSON rispetto alle specifiche delle risorse. CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Esegue anche altri controlli, come la verifica di valori validi per le proprietà delle risorse e il rispetto delle migliori pratiche.
+ [cfn-nag](https://github.com/stelligent/cfn_nag) è uno strumento open source che identifica potenziali problemi di sicurezza nei CloudFormation modelli mediante la ricerca di modelli.
+ [Docker](https://www.docker.com/) è un insieme di prodotti Platform as a Service (PaaS) che utilizzano la virtualizzazione a livello di sistema operativo per fornire software in container. Questo modello utilizza Docker per creare e testare le immagini dei container localmente.
+ [Git](https://git-scm.com/docs) è un sistema di controllo delle versioni distribuito e open source.

**Archivio di codice**

Il codice per questo pattern è disponibile nel repository GitHub [dynamic\$1hotfix\$1codepipeline](https://github.com/aws-samples/dynamic_hotfix_codepipeline).

## Best practice
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-best-practices"></a>

Rivedi e modifica i ruoli IAM e le policy di controllo dei servizi (SCP) nel tuo ambiente per assicurarti che limitino l'accesso in modo appropriato. Questo è fondamentale per prevenire qualsiasi azione che possa prevalere sulle misure di sicurezza incluse in questo modello. Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le [best practice relative alla [concessione dei privilegi minimi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e alla sicurezza nella documentazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) IAM.

## Epiche
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-epics"></a>

### Configura l'ambiente di lavoro
<a name="set-up-the-work-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clonare il repository. | Per clonare il [repository](https://github.com/aws-samples/dynamic_hotfix_codepipeline) di esempio in una nuova directory nella posizione di lavoro, esegui il comando seguente:<pre>git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git</pre> | AWS DevOps | 
| Esporta le variabili di ambiente per la distribuzione CloudFormation in stack. | Definisci le seguenti variabili di ambiente che verranno utilizzate come input per gli CloudFormation stack più avanti in questo schema.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export BucketStartName=<BucketName></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export ProdAccount=<prodaccountnumber><br />export StageAccount=<stage/preprodaccountnumber><br />export QAAccount=<qaccountnumber><br />export ToolsAccount=<toolsaccountnumber><br />export DepRegion=<region></pre> | AWS DevOps | 

### Imposta i prerequisiti richiesti in Account AWS
<a name="set-up-prerequisites-required-in-aws-accounts"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea le risorse necessarie CI/CD nell'account degli strumenti. | Per distribuire lo CloudFormation stack nell'account degli strumenti, usa i seguenti comandi. (Rimuovi il `QAAccount` parametro se non utilizzi l'account QA per la configurazione.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre>Prendi nota delle risorse che il CodeCommit repository e Amazon ECR hanno creato dallo stack precedente. Questi parametri sono necessari per configurare il `main` ramo della pipeline nelle fasi successive. | AWS DevOps | 
| Crea le risorse necessarie per CI/CD gli account di carico di lavoro. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Aggiorna la policy S3 Artifact Bucket per consentire l'accesso agli account dei carichi di lavoro. | Per aggiornare i prerequisiti dello CloudFormation stack nell'account tools, utilizza i seguenti comandi per aggiungere tutte le autorizzazioni necessarie per gli account di carico di lavoro Stage e Production. (Rimuovi il `QAAccount` parametro se non lo usi per la configurazione).<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} PutPolicy=true \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre> | AWS DevOps | 

### Configura la funzione Lambda e le risorse del Service Catalog nell'account degli strumenti
<a name="set-up-lam-function-and-sc-resources-in-tools-account"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura il portafoglio e i prodotti Service Catalog. | Per configurare il portafoglio e i prodotti Service Catalog, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Configura le funzioni Lambda. | Questa soluzione utilizza le seguenti funzioni Lambda per gestire i flussi di lavoro degli hotfix:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)Per consentire alle funzioni Lambda di fornire e terminare i prodotti Service Catalog quando le `hotfix ` filiali vengono create o eliminate tramite la EventBridge regola associata, utilizza i seguenti passaggi:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Crea una pipeline per la filiale principale e distribuisci l'applicazione negli account dei carichi di lavoro
<a name="create-pipeline-for-main-branch-and-deploy-application-in-workload-accounts"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura la pipeline per la `main` filiale. | Per configurare la pipeline per il ramo principale, esegui il seguente comando nell'account degli strumenti. Sostituisci i parametri per `MainProductId` e `MainProductArtifactId` con i valori degli `servicecatalogsetup` stack output.<pre>#InToolsAccount<br />aws servicecatalog provision-product \<br />    --product-id <MainProductId> \<br />    --provisioning-artifact-id <MainProductArtifactId> \<br />    --provisioned-product-name "${ApplicationName}-main-pipeline" \<br />    --provisioning-parameters Key=CodeCommitRepoName,Value="${ApplicationName}-repository" Key=ECRRepository,Value="${ApplicationName}-app" \<br />    --region=${DepRegion}</pre> | AWS DevOps | 
| Distribuisci l'applicazione utilizzando la `main` filiale. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Crea la pipeline per un ramo hotfix-\$1 e distribuisci l'hotfix
<a name="create-the-pipeline-for-a-hotfix--branch-and-deploy-the-hotfix"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una `hotfix-*` filiale e applica le modifiche. | Per creare una pipeline per la `hotfix-*` filiale e distribuire l'hotfix negli account del carico di lavoro, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Elimina il `hotfix-check1` ramo. | Per eliminare il `hotfix-check1` ramo creato in precedenza, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Eseguire la pulizia delle risorse
<a name="clean-up-resources"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Pulisci le risorse distribuite. | Per ripulire le risorse distribuite in precedenza, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>##In Tools Account##<br />aws cloudformation delete-stack --stack-name servicecatalogsetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prlambdasetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prereqs --region ${DepRegion}</pre><pre>##In Workload Accounts##<br />aws cloudformation delete-stack --stack-name inframainstack --region ${DepRegion}</pre>Per ulteriori informazioni, vedere [Eliminazione dei prodotti forniti nella documentazione](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) del Service Catalog. | AWS DevOps | 

## Risoluzione dei problemi
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Le modifiche che hai apportato al CodeCommit repository non vengono distribuite. | Controlla la presenza di errori nei CodeBuild log nell'azione di compilazione di Docker. Per ulteriori informazioni, consulta la [documentazione relativa ad CodeBuild ](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html). | 
| Il prodotto Service Catalog non viene fornito. | Esamina gli CloudFormation stack correlati per verificare la presenza di eventi non riusciti. Per ulteriori informazioni, consulta la [documentazione relativa ad CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html). | 

## Risorse correlate
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-resources"></a>
+ [Comandi Git di base](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-basic-git.html)
+ [Configura una policy IAM per limitare i push e le unioni a una filiale](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html#how-to-conditional-branch-create-policy)
+ [Connect a un AWS CodeCommit repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Concessione dell'accesso agli utenti](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)
+ [Trasferimento di un'immagine Docker a un repository privato Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Risoluzione dei problemi AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html)
+ [AWS CodePipeline Che cos'è?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)

## Informazioni aggiuntive
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional"></a>

Questo modello è progettato per ambienti con una configurazione Gitflow adottata per il flusso di lavoro di sviluppo del CI/CD processo. Le pipeline seguono il ciclo di implementazione che parte dallo sviluppo e passa attraverso il controllo della qualità (QA), la fase e gli ambienti di produzione. La CI/CD configurazione include due filiali git con implementazioni promozionali negli ambienti come segue:
+ La `develop` filiale si distribuisce nell'ambiente di sviluppo.
+ La `main` filiale si occupa degli ambienti di controllo qualità, stage e produzione.

In questa configurazione, è difficile applicare un hotfix o una patch di sicurezza più velocemente del normale ciclo di distribuzione mentre è in corso lo sviluppo attivo di nuove funzionalità. È necessario un processo dedicato per rispondere agli hotfix o alle richieste di sicurezza, garantendo che gli ambienti live rimangano correttamente funzionanti e sicuri.

Tuttavia, è possibile utilizzare altre opzioni disponibili senza richiedere un processo di distribuzione dedicato se:
+ Il CI/CD processo è ben equipaggiato con test automatizzati, come test funzionali e end-to-end test, che eliminano la necessità di test manuali e impediscono ritardi nelle implementazioni in produzione. Tuttavia, se i test automatici non sono ben integrati nel CI/CD processo, apportare una piccola correzione all'ambiente di produzione può diventare complesso e complicato per gli sviluppatori. Questo perché potrebbero esserci nuove funzionalità in attesa di approvazione e approvazione nell'ambiente di controllo qualità. Un hotfix o una correzione di sicurezza non possono essere messi in produzione in modo semplice e simultaneo.
+ I team di sviluppo implementano continuamente nuove funzionalità nell'ambiente di produzione, integrando hotfix o patch di sicurezza nella distribuzione pianificata di ogni nuova funzionalità. In altre parole, il prossimo aggiornamento delle funzionalità dell'ambiente di produzione comprende due componenti: l'aggiunta di una nuova funzionalità e l'inclusione dell'hotfix o della patch di sicurezza. Tuttavia, se il ciclo di implementazione non è continuo, possono esserci più nuove funzionalità in attesa di approvazione nell'ambiente di controllo qualità. La gestione di versioni diverse e la garanzia che vengano riapplicate le modifiche corrette possono quindi diventare complesse e soggette a errori.

**Nota**  
Se utilizzi la [versione 2](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types.html#:~:text=V2%20type%20pipelines%20have%20the%20same%20structure) di AWS CodePipeline con i trigger appropriati configurati nella `hotfix` filiale, avrai comunque bisogno di un processo dedicato per rispondere alle richieste non pianificate. Nella versione 2, puoi impostare i trigger per le richieste push o pull. L'esecuzione verrà messa in coda o eseguita immediatamente, a seconda dello stato precedente della pipeline. Tuttavia, con una pipeline dedicata, le correzioni vengono applicate immediatamente all'ambiente di produzione, garantendo che i problemi urgenti vengano risolti senza indugio.