

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Automatize o gerenciamento dinâmico de pipelines para implantar soluções de hotfix em ambientes Gitflow usando 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*

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

**nota**  
AWS CodeCommit não está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. [Saiba mais](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider)

Este padrão aborda um cenário de gerenciamento de um pipeline dinâmico de hotfix dedicado exclusivamente à implantação segura de soluções de hotfix em um ambiente de produção. A solução é implementada e gerenciada usando um AWS Service Catalog portfólio e um produto. Uma EventBridge regra da Amazon é usada para automação de eventos. As restrições são aplicadas usando as restrições do portfólio do Service Catalog e os perfis do AWS Identity and Access Management (IAM) para desenvolvedores. Somente uma AWS Lambda função tem permissão para iniciar o produto Service Catalog, acionada pela EventBridge regra. Este padrão foi projetado para ambientes com uma configuração específica do Gitflow, descrita em [Informações adicionais](#automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional).

Normalmente, um hotfix é implantado para resolver problemas críticos ou de segurança relatados em um ambiente ativo, como de produção. Os hotfixes devem ser implantados diretamente somente nos ambientes de preparação e produção. Os pipelines de preparação e produção são usados extensivamente para solicitações regulares de desenvolvimento. Esses pipelines não podem ser usados para implantar hotfixes porque há atributos contínuos de garantia de qualidade que não podem ser promovidos à produção. Para lançar hotfixes, este padrão descreve um pipeline dinâmico e de curta duração com os seguintes atributos de segurança:
+ **Criação automática** — Um pipeline de hotfix é criado automaticamente sempre que uma ramificação de hotfix é criada em um AWS CodeCommit repositório. 
+ **Restrições de acesso**: os desenvolvedores não têm acesso para criar esse pipeline fora do processo de hotfix. 
+ **Estágio controlado**: o pipeline tem um estágio controlado com um token de acesso especial, garantindo que uma solicitação de pull (PR) só possa ser criada uma vez. 
+ **Estágios de aprovação**: os estágios de aprovação são incluídos no pipeline para obter as aprovações necessárias das partes interessadas relevantes. 
+ **Exclusão automática** — O pipeline de hotfix é excluído automaticamente sempre que uma `hotfix` ramificação é excluída no CodeCommit repositório após ser mesclada com um PR. 

## Pré-requisitos e limitações
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-prereqs"></a>

**Pré-requisitos **
+  Contas da AWS São necessários três ativos da seguinte forma:
  + Conta de ferramentas: para a configuração de integração contínua e entrega contínua (CI/CD).
  + Conta de preparação: para testes de aceitação do usuário.
  + Conta de produção: para um usuário final comercial.
  + (Opcional) Adicione uma Conta da AWS para atuar como uma conta de controle de qualidade. Essa conta é necessária se você quiser uma configuração de pipeline principal, incluindo controle de qualidade, e uma solução de pipeline de hotfix para testes.
+ Uma AWS CloudFormation pilha com uma condição opcional para ser implantada na conta de controle de qualidade usando o pipeline principal, se necessário. O padrão ainda pode ser testado sem a configuração do pipeline principal, criando e excluindo uma ramificação `hotfix`.
+ Um bucket do Amazon Simple Storage Service (Amazon S3) para armazenar CloudFormation os modelos usados para criar produtos do Service Catalog.
+ Crie regras de aprovação de relações públicas para o CodeCommit repositório de acordo com os requisitos de conformidade (depois de criar o repositório).
+ Restrinja as permissões do IAM de desenvolvedores e líderes de equipe para negar a execução da função do Lambda [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55), pois ela deve ser invocada somente pelo pipeline.

**Limitações**
+ O CloudFormation provedor é usado no estágio de implantação e o aplicativo é implantado usando um conjunto de CloudFormation alterações. Se você quiser usar uma opção de implantação diferente, modifique a CodePipeline pilha conforme necessário.
+ Esse padrão usa outros arquivos AWS CodeBuild de configuração para implantar um microsserviço de amostra. Se você tiver um tipo de workload diferente (por exemplo, workloads com tecnologia sem servidor), deverá atualizar todas as configurações relevantes.
+ Esse padrão implanta o aplicativo em um único lado Região da AWS (por exemplo, Leste dos EUA (Norte da Virgínia) us-east-1). Contas da AWS Para implantar em várias regiões, altere a referência da região em comandos e pilhas.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

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

Os diagramas nesta seção fornecem fluxos de trabalho para um evento do ciclo de vida de criação e para um evento do ciclo de vida de exclusão.

![Fluxo de trabalho para criar um evento de ciclo de vida.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/3939f77c-4221-4c23-a3a1-3e8a294b2b32.png)


O diagrama anterior para criar um evento de ciclo de vida mostra o seguinte:

1. O desenvolvedor cria uma `hotfix-*` ramificação no CodeCommit repositório para desenvolver uma solução relacionada ao hotfix.

1. O evento de criação da `hotfix-*` ramificação é capturado por meio da EventBridge regra. Os detalhes do evento incluem o nome do repositório e o nome da ramificação.

1. A EventBridge regra invoca a AWS Lambda função. `hotfix-lambda-function` A EventBridge regra passa as informações do evento para a função Lambda como entrada.

1. A função do Lambda processa a entrada para recuperar o nome do repositório e o nome da ramificação. Ele lança o produto do Service Catalog com valores recuperados da entrada processada.

1. O produto do Service Catalog inclui uma configuração de pipeline que implantará a solução nos ambientes de preparação e produção. O bloco de pipeline inclui estágios de origem, compilação e implantação. Além disso, há um estágio de aprovação manual para promover a implantação no ambiente de produção.

1. O estágio de origem recupera o código do repositório e da ramificação `hotfix-*` que foram criados na primeira etapa. O código é passado para o estágio de compilação por meio de um bucket do Amazon S3 para artefatos. No estágio de compilação, é criada uma imagem de contêiner que inclui o hotfix que é desenvolvido na ramificação `hotfix-*` e enviado ao Amazon Elastic Container Registry (Amazon ECR).

1. O estágio de implantação ao ambiente de estágio atualiza o Amazon Elastic Container Service (Amazon ECS) com a imagem de contêiner mais recente que inclui o hotfix. O hotfix é implantado criando e executando um CloudFormation conjunto de alterações.

1. A função `prcreation-lambda` do Lambda é invocada após a implantação bem-sucedida no ambiente de preparação. Essa função do Lambda cria uma PR com base na ramificação `hotfix-*` para as ramificações `develop` e `main` do repositório. A função do Lambda garante que a correção desenvolvida na ramificação `hotfix-*` seja mesclada novamente e incluída nas implantações subsequentes.

1. Um estágio de aprovação manual ajuda a garantir que as partes interessadas necessárias revisem a correção e aprovem a implantação na produção.

1. O estágio de implantação ao ambiente de produção atualiza o Amazon ECS com a imagem de contêiner mais recente que inclui o hotfix. O hotfix é implantado criando e executando um CloudFormation conjunto de alterações.

![Fluxo de trabalho para excluir um evento de ciclo de vida.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/192aa897-bd9b-4a9f-804e-340371612b3b.png)


O diagrama anterior para excluir um evento de ciclo de vida mostra o seguinte:

1. O desenvolvedor exclui a ramificação `hotfix-*` após a implantação bem-sucedida do hotfix no ambiente de produção.

1. O evento de exclusão da `hotfix-*` ramificação é capturado por meio de uma EventBridge regra. Os detalhes do evento incluem o nome do repositório e o nome da ramificação.

1. A EventBridge regra invoca a função Lambda. A EventBridge regra passa as informações do evento para a função Lambda como entrada.

1. A função do Lambda processa a entrada para recuperar o nome do repositório e o nome da ramificação. A função do Lambda determina o respectivo produto do Service Catalog com base na entrada passada e, em seguida, encerra o produto.

1. O encerramento do produto provisionado pelo Service Catalog exclui o pipeline e os recursos relevantes que foram criados anteriormente nesse produto.

**Automação e escala**
+ O padrão inclui uma EventBridge regra e uma função Lambda, que podem lidar com várias solicitações de criação de ramificações de hotfix em paralelo. A função do Lambda provisiona o produto do Service Catalog para a regra de evento correspondente.
+ A configuração do pipeline é feita usando o produto do Service Catalog, que fornece recursos de controle de versão. A solução também se expande automaticamente para lidar com vários desenvolvimentos de hotfix para a mesma aplicação em paralelo.
+ A função [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) garante que essas alterações de hotfix também sejam mescladas novamente nas ramificações `main` e `develop` por meio de uma criação automática de solicitação de pull. Essa abordagem é essencial para manter as ramificações `main` e `develop` atualizadas com todas as correções e evitar possíveis regressões de código. Esse processo ajuda a manter a consistência entre as ramificações e evitar regressões de código, garantindo que todas as ramificações de longa duração tenham as correções mais recentes.

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

**Serviços da AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ O [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é um serviço de controle de versão que ajuda no armazenamento e no gerenciamento de repositórios Git de forma privada, sem a necessidade de administrar o próprio sistema de controle de origem. O AWS CodeCommit não está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. Para obter mais informações, consulte [Como migrar seu AWS CodeCommit repositório para outro provedor Git](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/).
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.
+ O [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
+ O [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) é um serviço de gerenciamento de contêineres escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)ajuda você a gerenciar centralmente catálogos de serviços de TI aprovados. AWS Os usuários finais podem implantar rapidamente somente os serviços de TI aprovados de que precisam, seguindo as restrições definidas pela organização.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Outras ferramentas**
+ [CloudFormation Linter (cfn-lint) é um linter](https://github.com/aws-cloudformation/cfn-lint) [que verifica os modelos CloudFormation YAML ou JSON em relação à especificação do recurso. CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Ele também executa outras verificações, como a verificação de valores válidos para as propriedades dos recursos e a adesão às práticas recomendadas.
+ [cfn-nag](https://github.com/stelligent/cfn_nag) é uma ferramenta de código aberto que identifica possíveis problemas de segurança em CloudFormation modelos pesquisando padrões.
+ O [Docker](https://www.docker.com/) é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres. Esse padrão usa o Docker para compilar e testar imagens de contêiner localmente.
+ O [Git](https://git-scm.com/docs) é um sistema de controle de versão distribuído e de código aberto.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [dynamic\_hotfix\_codepipeline](https://github.com/aws-samples/dynamic_hotfix_codepipeline).

## Práticas recomendadas
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-best-practices"></a>

Analise e ajuste os perfis do IAM e as políticas de controle de serviços (SCP) em seu ambiente para garantir que elas restrinjam o acesso de forma adequada. Isso é crucial para evitar quaisquer ações que possam anular as medidas de segurança incluídas neste padrão. Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [Práticas recomendadas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.

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

### Configurar o ambiente de trabalho
<a name="set-up-the-work-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Para clonar o [repositório](https://github.com/aws-samples/dynamic_hotfix_codepipeline) de amostra em um novo diretório em seu local de trabalho, execute o seguinte comando:<pre>git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git</pre> | AWS DevOps | 
| Exporte variáveis de ambiente para implantação CloudFormation de pilha. | Defina as seguintes variáveis de ambiente que serão usadas como entrada para as CloudFormation pilhas posteriormente nesse padrão.[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/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/pt_br/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 | 

### Configure os pré-requisitos necessários em Contas da AWS
<a name="set-up-prerequisites-required-in-aws-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie os recursos necessários CI/CD na conta de ferramentas. | Para implantar a CloudFormation pilha na conta de ferramentas, use os comandos a seguir. (Remova o parâmetro `QAAccount` se você não estiver usando a conta de controle de qualidade para configuração.)<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><br />Anote os recursos que o CodeCommit repositório e o Amazon ECR criaram a partir da pilha anterior. Esses parâmetros são necessários para configurar a ramificação `main` do pipeline nas próximas etapas. | AWS DevOps | 
| Crie os recursos necessários CI/CD nas contas de carga de trabalho. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Atualize a política de bucket de artefatos do S3 para permitir o acesso às contas de workload. | Para atualizar os pré-requisitos da CloudFormation pilha na conta de ferramentas, use os comandos a seguir para adicionar todas as permissões necessárias para as contas de carga de trabalho de estágio e produção. (Remova o parâmetro `QAAccount` se você não o estiver usando para configuração.)<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 | 

### Configurar a função do Lambda e os recursos do Service Catalog na conta de ferramentas
<a name="set-up-lam-function-and-sc-resources-in-tools-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o portfólio e os produtos do Service Catalog. | Para configurar o portfólio e os produtos do Service Catalog, faça o seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Configure as funções do Lambda. | Essa solução usa as seguintes funções do Lambda para gerenciar fluxos de trabalho de hotfix:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<br />Para permitir que as funções do Lambda provisionem e encerrem produtos do Service Catalog quando `hotfix ` ramificações são criadas ou excluídas por meio da EventBridge regra associada, use as seguintes etapas:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Criar um pipeline para a ramificação principal e implantar a aplicação em contas de workload
<a name="create-pipeline-for-main-branch-and-deploy-application-in-workload-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o pipeline da ramificação `main`. | Para configurar o pipeline da ramificação principal, execute o comando a seguir na conta de ferramentas. Substitua os parâmetros de `MainProductId` e `MainProductArtifactId` por valores das saídas da pilha `servicecatalogsetup`.<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 | 
| Implante a aplicação usando a ramificação `main`. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Criar o pipeline para uma ramificação hotfix-\* e implantar o hotfix
<a name="create-the-pipeline-for-a-hotfix--branch-and-deploy-the-hotfix"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma ramificação `hotfix-*` e confirme as alterações. | Para criar um pipeline para a ramificação `hotfix-*` e implantar o hotfix nas contas de workload, faça o seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Exclua a ramificação `hotfix-check1`. | Para excluir a ramificação `hotfix-check1` criada anteriormente, faça o seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe os recursos implantados. | Para limpar os recursos que foram implantados anteriormente, faça o seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/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><br />Para obter mais informações, consulte [Deleting provisioned products](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) na documentação do Service Catalog. | AWS DevOps | 

## Solução de problemas
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| As alterações que você confirmou no CodeCommit repositório não estão sendo implantadas. | Verifique se há erros nos CodeBuild registros na ação de compilação do Docker. Para obter mais informações, consulte a [documentação do CodeBuild ](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html). | 
| O produto do Service Catalog não está sendo provisionado. | Analise as CloudFormation pilhas relacionadas em busca de eventos com falha. Para obter mais informações, consulte a [documentação do CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html). | 

## Recursos relacionados
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-resources"></a>
+ [Comandos básicos do Git](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-basic-git.html)
+ [Configurar uma política do IAM para limitar os envios e mesclagens a uma ramificação](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html#how-to-conditional-branch-create-policy)
+ [Conecte-se a um AWS CodeCommit repositório](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Granting access to users](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)
+ [Enviando uma imagem do Docker para um repositório privado do Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Solução de problemas AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html)
+ [O que é AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)

## Mais informações
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional"></a>

Esse padrão foi projetado para ambientes com uma configuração do Gitflow que é adotada para o fluxo de trabalho de desenvolvimento no CI/CD processo. Os pipelines seguem o ciclo de implantação que começa no desenvolvimento e passa pelos ambientes de garantia de qualidade (QA), preparação e produção. A CI/CD configuração inclui duas ramificações do git com implantações promocionais em ambientes da seguinte forma:
+ A ramificação `develop` é implantada no ambiente de desenvolvimento.
+ A ramificação `main` é implantada nos ambientes de controle de qualidade, preparação e produção.

Nessa configuração, é um desafio aplicar um hotfix ou um patch de segurança mais rápido do que o ciclo normal de implantação enquanto o desenvolvimento ativo de novos recursos está em andamento. É necessário um processo dedicado para atender às solicitações de hotfix ou segurança, garantindo que os ambientes ativos permaneçam funcionando adequadamente e com segurança.

No entanto, você pode usar outras opções disponíveis sem precisar de um processo de implantação dedicado se:
+ O CI/CD processo está bem equipado com testes automatizados, como testes funcionais e end-to-end testes, que eliminam a necessidade de testes manuais e evitam atrasos nas implantações na produção. No entanto, se os testes automatizados não estiverem bem integrados ao CI/CD processo, fazer uma pequena correção no ambiente de produção pode se tornar complexo e complicado para os desenvolvedores. Isso ocorre porque é possível que novos recursos estejam no ambiente de controle de qualidade aguardando aprovação e liberação. Um hotfix ou correção de segurança não pode ser colocado em produção de forma direta e simultânea.
+ As equipes de desenvolvimento implantam continuamente novos recursos no ambiente de produção, integrando hotfixes ou patches de segurança na implantação programada de cada novo recurso. Em outras palavras, a próxima atualização de recursos para o ambiente de produção compreende dois componentes: a adição de um novo recurso e a inclusão do hotfix ou patch de segurança. No entanto, se o ciclo de implantação não for contínuo, pode haver vários novos recursos já aguardando aprovação no ambiente de controle de qualidade. Gerenciar versões diferentes e garantir que as alterações corretas sejam reaplicadas pode se tornar um trabalho complexo e propenso a erros.

**nota**  
Se você estiver usando a [versão 2](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types.html#:~:text=V2%20type%20pipelines%20have%20the%20same%20structure) do AWS CodePipeline com os acionadores adequados configurados na `hotfix` ramificação, ainda precisará de um processo dedicado para atender às solicitações não programadas. Na versão 2, você pode configurar gatilhos para solicitações de push ou pull. A execução será colocada em fila ou executada imediatamente, dependendo do estado anterior do pipeline. No entanto, com um pipeline dedicado, as correções são aplicadas imediatamente ao ambiente de produção, garantindo que problemas urgentes sejam resolvidos sem demora.