

# Sincronizar as pilhas com o código-fonte armazenado em um repositório Git com a sincronização do Git
<a name="git-sync"></a>

Com o Git Sync, é possível gerenciar as pilhas do CloudFormation com o controle de fonte. Você faz isso configurando o CloudFormation para monitorar um repositório Git. O repositório é monitorado quanto a alterações em dois arquivos:
+ Um arquivo de modelo do CloudFormation que define uma pilha
+ Um arquivo de implantação da pilha que contém os parâmetros que configuram a pilha

Com o Git sync, é possível usar pull requests e o rastreamento de versão para configurar, implantar e atualizar as pilhas do CloudFormation de um local centralizado. Quando você confirma alterações para o modelo ou para o arquivo de implantação, o CloudFormation atualiza a pilha automaticamente. Se você usa pull requests, o CloudFormation pode deixar um comentário sobre a pull request explicando quais alterações serão feitas na sua pilha antes de realmente atualizá-la. No entanto, esse recurso deverá ser habilitado primeiro. 

O Git Sync fornece uma interface de console que você pode usar para vincular a um repositório, gerar um arquivo de implantação da pilha, atualizar um modelo do CloudFormation e enviar uma solicitação pull ao seu repositório. Além disso, o Git Sync fornece um painel de status que pode ser usado para monitorar, editar e solucionar problemas de implantações ativas da pilha do Git Sync. O Git Sync é acessado por meio do [console do CloudFormation](https://console.aws.amazon.com/cloudformation/) quando você[ cria uma pilha](cfn-console-create-stack.md). Você também pode acessar a sincronização do Git usando CodeConnections. Para obter mais informações, consulte [Como trabalhar com configurações de sincronização para repositórios vinculados](https://docs.aws.amazon.com/dtconsole/latest/userguide/configurations.html) no *Guia do usuário do Console do Developer Tools*.

A sincronização do Git é compatível com os repositórios do [GitHub](https://github.com/), [GitHub Enterprise](https://github.com/enterprise), [GitLab](https://about.gitlab.com/), [Bitbucket](https://bitbucket.org) e [GitLab autogerenciado](https://docs.gitlab.com/subscriptions/self_managed/).

**nota**  
O Git Sync está disponível nas seguintes regiões: Leste dos EUA (Norte da Virgínia), Leste dos EUA (Ohio), Oeste dos EUA (Norte da Califórnia), Oeste dos EUA (Oregon), Canadá (Central), Ásia-Pacífico (Mumbai), Ásia-Pacífico (Tóquio), Ásia-Pacífico (Seul), Ásia-Pacífico (Singapura), Ásia-Pacífico (Sydney), Europa (Irlanda), Europa (Londres), Europa (Paris), Europa (Estocolmo), Europa (Frankfurt), Europa (Milão) e América do Sul (São Paulo).

Para obter informações sobre como usar o Git sync com uma estratégia de várias contas, consulte a postagem do blog a seguir [Use CloudFormation Git sync to configure resources in customer accounts](https://aws.amazon.com/blogs/devops/use-aws-cloudformation-git-sync-to-configure-resources-in-customer-accounts/). 

**Topics**
+ [Como a sincronização do Git funciona](git-sync-concepts-terms.md)
+ [Pré-requisitos](git-sync-prereq.md)
+ [Criar uma pilha com base no código-fonte do repositório](git-sync-create-stack-from-repository-source-code.md)
+ [Habilitar comentários em solicitações pull](gitsync-enable-comments-on-pull-requests.md)
+ [Painel de status](git-sync-status.md)

# Como o Git sync funciona com o CloudFormation
<a name="git-sync-concepts-terms"></a>

Este tópico descreve como a sincronização do Git funciona e apresenta os principais conceitos necessários para trabalhar com ela.

**Topics**
+ [Como a sincronização do Git funciona](#git-sync-concepts-terms-how)
+ [Comentários sobre solicitações pull](#git-sync-comments-on-pull-requests)
+ [Arquivo de implantação da pilha](#git-sync-concepts-terms-depoyment-file)
+ [Arquivo de modelo do CloudFormation](#git-sync-concepts-terms-template-file)
+ [Repositório de definição de modelo](#git-sync-concepts-terms-template-definition-repository)

## Como a sincronização do Git funciona
<a name="git-sync-concepts-terms-how"></a>

Para usar a sincronização do Git sync, primeiro você deve conectar um provedor do Git ao CloudFormation usando o serviço [CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/APIReference/Welcome.html). Nos procedimentos deste guia, a conexão é criada por meio do console do CodeConnections. Se preferir, crie a conexão com a AWS CLI. É possível usar os seguintes provedores do Git:
+ [GitHub](https://github.com/)
+ [GitHub Enterprise](https://github.com/enterprise/)
+ [GitLab](https://about.gitlab.com/)
+ [Bitbucket](https://bitbucket.org)
+ [GitLab autogerenciado](https://docs.gitlab.com/subscriptions/self_managed/)

A seguir, crie um modelo do CloudFormation que defina a pilha e adicione-o ao repositório. Este arquivo de modelo é monitorado. O CloudFormation atualiza a pilha automaticamente quando as alterações são confirmadas para ela.

No console do CloudFormation, você cria uma pilha e escolhe **Sincronizar a partir do Git** para fazer com que o CloudFormation use a sincronização do Git. Você especificará o repositório e a ramificação que deseja que o CloudFormation monitore, bem como especificará o modelo do CloudFormation que define a pilha em seu repositório.

Durante a configuração, é possível fornecer o próprio arquivo de implantação da pilha do seu repositório ou fazer com que o Git Sync gere um arquivo para você. O arquivo de implantação da pilha contém parâmetros e valores que configuram os recursos na pilha. Este arquivo de implantação da pilha é monitorado. O CloudFormation atualiza a pilha automaticamente quando as alterações são confirmadas para ela.

O Git Sync cria uma solicitação pull em seu repositório para sincronizar a pilha com o arquivo de modelo do CloudFormation e o arquivo de implantação da pilha. Se o Git Sync gerar o arquivo de implantação da pilha para você, ele será enviado ao seu repositório pelo Git Sync.

Depois, mescle a solicitação pull com o repositório para que o CloudFormation provisione a pilha, configure-a com os parâmetros de implantação e comece a monitorar as alterações no repositório.

Daí em diante, sempre que você fizer alterações no arquivo de modelo ou no arquivo de implantação de pilha e as confirmar no repositório, o CloudFormation detectará automaticamente as alterações. Se sua equipe usa pull requests, os membros da equipe podem então revisar e aprovar as alterações antes que elas sejam implantadas. Depois que a pull request for aceita, o CloudFormation implantará suas alterações.

É possível monitorar o status da configuração de sincronização do Git para a pilha e ver um histórico de confirmações aplicadas à pilha no console do CloudFormation. Além disso, o console fornece ferramentas para a reconfiguração do Git Sync e para a solução de problemas. 

## Comentários sobre solicitações pull
<a name="git-sync-comments-on-pull-requests"></a>

Você pode optar por fazer com que o CloudFormation crie um resumo das alterações de código nas pull requests por meio do serviço CodeConnections ativando a opção **Habilitar comentário na pull request** no console. Fornecer um resumo das alterações nas solicitações pull significa que os membros da equipe podem facilmente revisar e entender o impacto das modificações propostas antes de mesclar a solicitação pull. Para obter mais informações, consulte [Permitir que o CloudFormation publique um resumo das alterações de pilha em solicitações pull](gitsync-enable-comments-on-pull-requests.md).

## Arquivo de implantação da pilha
<a name="git-sync-concepts-terms-depoyment-file"></a>

Um arquivo de implantação da pilha corresponde a um arquivo formatado em JavaScript Object Notation (JSON) ou em YAML padrão que contém os parâmetros e os valores que gerenciam a pilha do CloudFormation. Ele é monitorado quanto a alterações. Quando alterações no arquivo são confirmadas no repositório, a pilha associada é atualizada automaticamente.

O arquivo de implantação da pilha contém um par chave/valor e dois dicionários:
+ `template-file-path`

  Este é o caminho completo do repositório para o arquivo de modelo do CloudFormation. O arquivo de modelo declara os recursos para a pilha do CloudFormation associada a este arquivo de implantação.
+ `parameters`

  O dicionário de parâmetros contém pares chave/valor que configuram os recursos na pilha. Um arquivo de implantação da pilha pode ter, no máximo, 50 parâmetros.
+ `tags`

  O dicionário de etiquetas contém pares chave/valor opcionais que você pode usar para identificar e categorizar os recursos na pilha. Um arquivo de implantação da pilha pode ter, no máximo, 50 etiquetas.

É possível fornecer o próprio arquivo de implantação da pilha ou fazer com que o Git Sync crie um arquivo para você e envie automaticamente uma solicitação pull para o seu repositório. Você pode gerenciar os parâmetros e as etiquetas ao editar o arquivo de implantação da pilha e ao confirmar as alterações no repositório.

Veja a seguir um exemplo de um arquivo de implantação da pilha do Git Sync:

```
template-file-path: fargate-srvc/my-stack-template.yaml

parameters: 
    image: public.ecr.aws/lts/nginx:latest
    task_size: x-small
    max_capacity: 5
    port: 8080
    env: production
tags:
    cost-center: '123456'
    org: 'AWS'
```

## Arquivo de modelo do CloudFormation
<a name="git-sync-concepts-terms-template-file"></a>

Um arquivo de modelo contém uma declaração dos recursos da AWS que compõem uma pilha do CloudFormation. Com o Git Sync, o arquivo de modelo é armazenado no repositório Git e referenciado pelo arquivo de implantação da pilha. É possível gerenciar a pilha ao editar o arquivo de modelo e ao confirmar as alterações para o repositório.

Para obter mais informações, consulte [Trabalhar com modelos do CloudFormation](template-guide.md).

## Repositório de definição de modelo
<a name="git-sync-concepts-terms-template-definition-repository"></a>

O repositório de definição de modelo corresponde ao repositório Git vinculado ao CloudFormation por meio do Git Sync. O repositório é monitorado quanto a alterações para o modelo do CloudFormation e para o arquivo de implantação da pilha. Quando você confirma as alterações para o arquivo, a pilha associada é atualizada automaticamente.

**Importante**  
Ao configurar o repositório de definição de modelo no console do Git Sync, selecione o *repositório* e a *ramificação* adequados da conexão do Git. O Git Sync monitora somente o repositório e a ramificação configurados em busca de alterações para o modelo do CloudFormation e para o arquivo de implantação da pilha.

# Pré-requisitos para sincronizar pilhas com um repositório Git usando o Git sync
<a name="git-sync-prereq"></a>

Antes de sincronizar uma pilha do CloudFormation com o repositório Git, verifique se os requisitos a seguir são atendidos.

**Topics**
+ [Repositório Git](#git-sync-prereq-repo)
+ [Modelo do CloudFormation](#git-sync-prereq-template)
+ [Perfil de serviço de sincronização do Git](#git-sync-prereq-iam)
+ [Permissões do IAM para usuários do console](#git-sync-prereq-user-permissions)

## Repositório Git
<a name="git-sync-prereq-repo"></a>

É necessário ter um repositório Git hospedado em uma das plataformas a seguir.
+ [GitHub](https://github.com/)
+ [GitHub Enterprise](https://github.com/enterprise)
+ [GitLab](https://about.gitlab.com/)
+ [Bitbucket](https://bitbucket.org)
+ [GitLab autogerenciado](https://docs.gitlab.com/subscriptions/self_managed/)

O repositório pode ser público ou privado. Será necessário conectar esse repositório Git ao CloudFormation por meio do [console do Connections](https://console.aws.amazon.com/codesuite/settings/connections).

## Modelo do CloudFormation
<a name="git-sync-prereq-template"></a>

O repositório Git deve conter um [arquivo de modelo do CloudFormation](git-sync-concepts-terms.md#git-sync-concepts-terms-template-file) verificado na ramificação que você pretende conectar com a sincronização do Git. Esse modelo será referenciado pelo [arquivo de implantação da pilha](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file).

## Perfil de serviço de sincronização do Git
<a name="git-sync-prereq-iam"></a>

A sincronização do Git requer um perfil do IAM. É possível optar por criar um perfil do IAM para a pilha ao configurar a sincronização do Git ou usar um perfil existente.

**nota**  
Um perfil do IAM gerado automaticamente aplica permissões somente à pilha para a qual o perfil é gerado. Para reutilizar um perfil do IAM gerado automaticamente, é necessário editar o perfil para a nova pilha.

### Permissões necessárias para o perfil de serviço de sincronização do Git
<a name="git-sync-prereq-permissions"></a>

O perfil do IAM fornecido para a sincronização do Git requer as permissões a seguir.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ValidateTemplate`
+ `events:PutRule`
+ `events:PutTargets`

**nota**  
As permissões necessárias, citadas anteriormente, são adicionadas automaticamente aos perfis do IAM gerados pelo Git Sync.

O exemplo de perfil do IAM apresentado a seguir inclui as permissões de pré-requisitos para o Git Sync.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SyncToCloudFormation",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:DescribeStackEvents",
                "cloudformation:DescribeStacks",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:GetTemplate",
                "cloudformation:ListChangeSets",
                "cloudformation:ListStacks",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "PolicyForManagedRules",
            "Effect": "Allow",
            "Action": [
                "events:PutRule",
                "events:PutTargets"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                "events:ManagedBy": ["cloudformation.sync.codeconnections.amazonaws.com"]
                }
            }
        },
        {
            "Sid": "PolicyForDescribingRule",
            "Effect": "Allow",
            "Action": "events:DescribeRule",
            "Resource": "*"
        }
    ]
}
```

------

#### Política de confiança
<a name="git-sync-prereq-trust-policy"></a>

Você deve fornecer a política de confiança apresentada a seguir ao criar o perfil para definir a relação de confiança.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CfnGitSyncTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.sync.codeconnections.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Recomendamos o uso das chaves de condição `aws:SourceArn` e `aws:SourceAccount` para se proteger contra o problema confused deputy. A conta de origem é o ID da sua conta e o ARN de origem é o ARN da conexão no serviço [CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/APIReference/Welcome.html) que permite que o CloudFormation se conecte ao repositório do Git.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CfnGitSyncTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.sync.codeconnections.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:codeconnections:us-east-1:123456789012:connection/EXAMPLE64-8aad-4d5d-8878-dfcab0bc441f"
        }
      }
    }
  ]
}
```

------

Para obter mais informações sobre o problema confused deputy, veja [Prevenção contra o ataque do “substituto confuso” em todos os serviços](cross-service-confused-deputy-prevention.md).

## Permissões do IAM para usuários do console
<a name="git-sync-prereq-user-permissions"></a>

Para configurar com sucesso a sincronização do Git por meio do console do CloudFormation, os usuários finais também devem receber permissões por meio do IAM.

As permissões `codeconnections` a seguir são necessárias para criar e gerenciar a conexão com seu repositório do Git.
+ `codeconnections:CreateRepositoryLink`
+ `codeconnections:CreateSyncConfiguration`
+ `codeconnections:DeleteRepositoryLink`
+ `codeconnections:DeleteSyncConfiguration`
+ `codeconnections:GetRepositoryLink`
+ `codeconnections:GetSyncConfiguration`
+ `codeconnections:ListRepositoryLinks`
+ `codeconnections:ListSyncConfigurations`
+ `codeconnections:ListTagsForResource`
+ `codeconnections:TagResource`
+ `codeconnections:UntagResource`
+ `codeconnections:UpdateRepositoryLink`
+ `codeconnections:UpdateSyncBlocker`
+ `codeconnections:UpdateSyncConfiguration`
+ `codeconnections:UseConnection`

Os usuários do console também devem ter as permissões do `cloudformation` a seguir para visualizar e gerenciar pilhas durante o processo de configuração da sincronização do Git.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:GetTemplate`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ListStacks`
+ `cloudformation:ValidateTemplate`

**nota**  
Embora as permissões do conjunto de alterações (`cloudformation:CreateChangeSet`, `cloudformation:DeleteChangeSet`, `cloudformation:DescribeChangeSet`, `cloudformation:ExecuteChangeSet`) possam não ser estritamente necessárias para uso somente no console, elas são recomendadas para habilitar os recursos completos de inspeção e gerenciamento da pilha.

O exemplo de política do IAM a seguir inclui as permissões do usuário necessárias para configurar a sincronização do Git via console.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeConnectionsPermissions",
            "Effect": "Allow",
            "Action": [
                "codeconnections:CreateRepositoryLink",
                "codeconnections:CreateSyncConfiguration",
                "codeconnections:DeleteRepositoryLink",
                "codeconnections:DeleteSyncConfiguration",
                "codeconnections:GetRepositoryLink",
                "codeconnections:GetSyncConfiguration",
                "codeconnections:ListRepositoryLinks",
                "codeconnections:ListSyncConfigurations",
                "codeconnections:ListTagsForResource",
                "codeconnections:TagResource",
                "codeconnections:UntagResource",
                "codeconnections:UpdateRepositoryLink",
                "codeconnections:UpdateSyncBlocker",
                "codeconnections:UpdateSyncConfiguration",
                "codeconnections:UseConnection",
                "codeconnections:CreateForcedTargetSync",
                "codeconnections:CreatePullRequestForResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CloudFormationConsolePermissions",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:DescribeStackEvents",
                "cloudformation:DescribeStacks",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:GetTemplate",
                "cloudformation:ListChangeSets",
                "cloudformation:ListStacks",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**nota**  
Ao criar uma política do IAM que inclua as permissões `codeconnections:CreateForcedTargetSync` e `codeconnections:CreatePullRequestForResource`, é possível ver um aviso no console do IAM informando que essas ações não existem. Esse aviso pode ser ignorado e a política ainda será criada com sucesso. Essas permissões são necessárias para determinadas operações de sincronização do Git, apesar de não serem reconhecidas pelo console do IAM.

# Criar uma pilha com base no código-fonte do repositório com a sincronização do Git
<a name="git-sync-create-stack-from-repository-source-code"></a>

Este tópico explica como criar uma pilha do CloudFormation que seja sincronizada com um repositório Git com o Git sync.

**Importante**  
Antes de continuar, preencha todos os [pré-requisitos](git-sync-prereq.md) na seção anterior. 

## Criar uma pilha com base no código-fonte do repositório
<a name="create-stack-from-repository-source-code"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console CloudFormation em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Na barra de navegação na parte superior da tela, escolha a Região da AWS na qual a pilha deve ser criada.

1. Na página **Pilhas**, escolha **Criar pilha** e selecione **Com novos recursos (padrão)**.

1. Na página **Create a stack** (Criar uma pilha), faça o seguinte:

   1. Em **Pré-requisito: preparar modelo**, mantenha a opção ** Escolher um modelo existente** selecionada.

   1. Em **Especificar modelo**, escolha **Sincronizar a partir do Git** e **Próximo**.

1. Na página **Especificar detalhes da pilha**, em **Nome da pilha**, digite um nome para a sua pilha. Os nomes para as pilhas podem incluir letras (A-Z e a-z), números (0 a 9) e travessões (-).

1. Em **Arquivo de implantação da pilha**, **Criação do arquivo de implantação**:
   + Se você *não* criou um arquivo de implantação da pilha e o adicionou ao repositório, escolha **Criar o arquivo usando os parâmetros a seguir e colocá-lo em meu repositório**.
   + Se você tem um arquivo de implantação da pilha em seu repositório, escolha **Estou fornecendo meu próprio arquivo em meu repositório**.

1. Em **Repositório de definição de modelo**, selecione **Escolher um repositório Git vinculado** para escolher um repositório Git que já esteja vinculado ao CloudFormation ou **Vincular um repositório Git** para vincular um novo. Se você escolher **Vincular um repositório Git**, faça o seguinte:

   1. Em **Selecionar provedor de repositório**, escolha uma destas opções:
      + **GitHub**
      + **GitHub Enterprise Server**
      + **GitLab**
      + **Bitbucket**
      + **GitLab autogerenciado**

   1. Em **Conexão**, escolha uma conexão na lista. Se nenhuma opção aparecer na lista **Conexão**, selecione **adicione uma nova conexão** para acessar o [console do Connections](https://console.aws.amazon.com/codesuite/settings/connections) e crie uma conexão para o repositório.

1. Na lista **Repositório**, selecione o repositório Git que contém o arquivo de modelo da pilha.

1. Na lista **Ramificação**, selecione a ramificação que você deseja que o Git Sync monitore.
**nota**  
O Git Sync monitora somente a ramificação selecionada em busca de alterações no modelo do CloudFormation e nos arquivos de implantação da pilha. Quaisquer alterações que você gostaria de aplicar à sua pilha devem ser confirmadas para esta ramificação.

1. Para o **Caminho do arquivo de implantação**, especifique o caminho completo, incluindo o nome do arquivo de implantação da pilha na raiz da ramificação do repositório.

   Se o CloudFormation estiver gerando o arquivo para você, é neste local que o arquivo será confirmado em seu repositório. Se você estiver fornecendo o arquivo, este será o local do arquivo em seu repositório.

1. Adicione um **Perfil do IAM**. O perfil do IAM inclui as permissões necessárias para que o CloudFormation sincronize a pilha pelo seu repositório Git. É possível escolher **Novo perfil do IAM** para gerar um novo perfil ou escolher **Perfil do IAM existente** para selecionar um perfil existente em sua Conta da AWS. Se você optar por gerar um novo perfil, as permissões necessárias serão incluídas no perfil.

1. Habilitar ou desabilitar comentários na solicitação pull:
   + Para que o CloudFormation publique as informações do conjunto de alterações em solicitações pull para atualizações de pilha, mantenha a opção **Habilitar comentário na solicitação pull** ativada.
   + Se você desativar essa opção, o CloudFormation não descreverá as diferenças entre a configuração atual da pilha e as alterações propostas nas solicitações pull quando os arquivos do repositório forem atualizados.

1. Para o **Caminho do arquivo de modelo**, especifique o caminho completo da raiz do seu repositório para o arquivo de modelo de pilha.

1. (Opcional) Para especificar os parâmetros da pilha, escolha **Adicionar parâmetro**, forneça uma chave e um valor para cada parâmetro e escolha **Avançar**. Para obter mais informações, consulte [Arquivo de implantação da pilha](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file).

   Por exemplo, para especificar um parâmetro **port=8080** no arquivo de implantação da pilha, faça o seguinte:

   1. Selecione **Add parameter (Adicionar parâmetro)**.

   1. Em **Chave**, digite **port**.

   1. Em **Valor**, insira **8080**.

1. (Opcional) Para adicionar tags da pilha, escolha **Adicionar nova tag**, forneça uma chave e um valor para cada tag e, em seguida, escolha **Próximo**. Para obter mais informações, consulte [Arquivo de implantação da pilha](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file).

1. Escolha **Próximo** a fim de prosseguir para **Configurar opções da pilha**. Para obter informações sobre como configurar as opções da pilha, consulte [Configurar opções da pilha](cfn-console-create-stack.md#configure-stack-options).

   Quando concluir a configuração da pilha, escolha **Avançar** para continuar.

1. Analise as configurações da pilha e confirme o seguinte:
   + O modelo da pilha está configurado corretamente e definido como **Sincronizar pelo Git**.
   + O arquivo de implantação está configurado corretamente.
   + O repositório de definição de modelo está configurado corretamente e, em particular, o **Repositório** e o **Nome da ramificação** estão selecionados adequadamente.
   + A pré-visualização do arquivo de implantação está correta e contém os parâmetros e os valores esperados.

1. Escolha **Enviar** para criar a pilha.

   Após **Enviar** ser escolhido, uma solicitação pull é criada automaticamente em seu repositório Git. Você deve mesclar essa solicitação pull em seu repositório Git para criar sua pilha. Depois que a pilha é criada, o CloudFormation monitora as alterações no repositório Git.

## Atualize sua pilha a partir do seu repositório Git
<a name="update-stack-from-repository-source-code"></a>

Para atualizar a pilha, realize alterações diretamente no arquivo de modelo ou no arquivo de implantação da pilha no repositório Git. Após você confirmar suas alterações na ramificação monitorada, o CloudFormation atualiza automaticamente a pilha. Se você usa pull requests, uma pull request é criada automaticamente em seu repositório Git antes que a pilha seja atualizada. É necessário mesclar essa solicitação pull em seu repositório Git para atualizar sua pilha.

No console do CloudFormation, é possível selecionar a pilha e escolher a guia **Sincronização do Git** para visualizar informações sobre o status da pilha e sobre os eventos de sincronização. Para obter mais informações, consulte [Painel de status do Git Sync](git-sync-status.md).

# Permitir que o CloudFormation publique um resumo das alterações de pilha em solicitações pull
<a name="gitsync-enable-comments-on-pull-requests"></a>

Este tópico mostra como permitir que o CloudFormation publique um resumo das alterações de pilha em solicitações pull no seu repositório Git.

Ao habilitar o recurso de comentários em solicitações pull, você permite que o CloudFormation publique um comentário descrevendo as diferenças entre a configuração atual da pilha e as alterações propostas quando os arquivos do repositório são atualizados. Esse comentário fornece um resumo dos recursos que serão adicionados, modificados ou excluídos, permitindo que você faça uma revisão completa do código antes de mesclar a solicitação pull.

**Para habilitar comentários em solicitações pull para uma nova pilha (console)**  
Ao criar a pilha, na página **Especificar detalhes da pilha**, em **Repositório de definição de modelos**, verifique se a opção **Habilitar comentário na solicitação pull** está ativada. Essa é a configuração padrão para novas pilhas. 

**Para habilitar comentários em solicitações pull para uma pilha existente (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console CloudFormation em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Na barra de navegação na parte superior da tela, escolha a Região da AWS em que sua pilha foi criada.

1. Na página **Pilhas**, escolha a pilha em execução que você deseja atualizar.

1. Selecione a guia **Sincronizar Git** e, em seguida, escolha **Editar**.

1. Na página **Editar configurações de sincronização do Git**, em **Repositório de definição de modelos**, ative a opção **Habilitar comentário na solicitação pull**.

1. Selecione **Update configuration (Atualizar configuração)**.

# Painel de status do Git Sync
<a name="git-sync-status"></a>

Para visualizar o status de uma implantação do AWS CloudFormation Git Sync, selecione a pilha no console do CloudFormation e escolha a guia **Git Sync**.

A guia Git Sync se divide em dois painéis: **Status do Git Sync** e **Eventos de sincronização mais recentes**.

## Status do Git Sync
<a name="git-sync-status-info"></a>

O painel superior fornece as informações apresentadas a seguir sobre a configuração do Git Sync para a pilha.

****Repositório****  
 Um link para o repositório conectado ao Git Sync

****Provedor do repositório****  
O nome do provedor do repositório

****Ramificação****  
O nome da ramificação que o Git Sync está monitorando

****Caminho do arquivo de implantação****  
O caminho completo para o arquivo de implantação da pilha para esta pilha

****Status de sincronização do repositório****  
O status da operação de sincronização mais recente

****Mensagem de status de sincronização do repositório****  
A mensagem da operação de sincronização mais recente

****Status do Git Sync****  
O status do Git Sync para esta pilha

****Status do provisionamento****  
O status da operação de provisionamento

No canto superior direito do painel, use os seguintes botões para modificar ou atualizar o Git Sync:
+ **Editar**: edite a configuração do Git Sync.
+ **Tentar novamente a confirmação mais recente**: atualize a pilha de acordo com a confirmação mais recente para o repositório.
+ **Desconectar**: desconecte o Git Sync da pilha.
+ **Atualizar**: atualize o painel de status do Git Sync.

## Eventos de sincronização mais recentes
<a name="git-sync-status-sync-events"></a>

O painel **Eventos de sincronização mais recentes** exibe uma tabela das confirmações que foram aplicadas à pilha.

É possível classificar a tabela usando as setas no cabeçalho de cada coluna. A tabela pode ser classificada em ordem crescente ou decrescente de acordo com o seguinte:
+ **Data**
+ **ID de confirmação**
+ **Evento**
+ **Data**
+ **Tipo de evento**

## Estados de pilhas com suporte
<a name="git-sync-status-stack-state"></a>

O Git Sync só poderá ser configurado para uma pilha se ela estiver em um dos seguintes estados com suporte:
+ `CREATE_COMPLETE`
+ `UPDATE_COMPLETE`
+ `UPDATE_ROLLBACK_COMPLETE`
+ `IMPORT_COMPLETE`
+ `IMPORT_ROLLBACK_COMPLETE`

A seguinte tabela contém uma lista completa dos códigos de status da pilha com descrições:


| Status da pilha e status detalhado opcional | Descrição | 
| --- | --- | 
|  `CREATE_COMPLETE`  |  Criação bem-sucedida de uma ou mais pilhas.  | 
|  `CREATE_IN_PROGRESS`  |  Criação contínua de uma ou mais pilhas.  | 
|  `CREATE_FAILED`  |  Criação malsucedida de uma ou mais pilhas. Visualize os eventos da pilha para ver as mensagens de erro associadas. As possíveis razões para uma falha na criação incluem permissões insuficientes para trabalhar com todos os recursos na pilha, valores de parâmetro rejeitados por um produto da AWS ou um tempo limite durante a criação de recursos.  | 
|  `DELETE_COMPLETE`  |  Exclusão bem-sucedida de uma ou mais pilhas. As pilhas excluídas serão retidas e poderão ser visualizadas por 90 dias.  | 
|  `DELETE_FAILED`  |  Exclusão malsucedida de uma ou mais pilhas. Como a exclusão falhou, alguns recursos ainda poderão estar em execução. No entanto, não é possível trabalhar com a pilha, tampouco atualizá-la. Exclua a pilha novamente ou visualize os eventos de pilha para ver as mensagens de erro associadas.  | 
|  `DELETE_IN_PROGRESS`  |  Remoção contínua de uma ou mais pilhas.  | 
| `REVIEW_IN_PROGRESS` | Criação contínua de uma ou mais pilhas com um StackId esperado, mas sem modelos ou recursos. Uma pilha com este código de status conta contra o [número máximo possível de pilhas](cloudformation-limits.md).  | 
|  `ROLLBACK_COMPLETE`  |  Remoção bem-sucedida de uma ou mais pilhas após uma falha na criação de uma pilha ou após um cancelamento explícito da criação de uma pilha. A pilha retorna ao estado operacional anterior. Quaisquer recursos criados durante a ação de criação da pilha serão excluídos. Esse status ocorre somente após uma falha de criação de uma pilha. Ele significa que todas as operações da pilha parcialmente criada foram adequadamente limpas. Ao entrar nesse estado, a única operação possível é a exclusão.  | 
|  `ROLLBACK_FAILED`  |  Remoção malsucedida de uma ou mais pilhas após uma falha na criação de uma pilha ou após um cancelamento explícito da criação de uma pilha. Exclua a pilha ou visualize os eventos de pilha para ver as mensagens de erro associadas.  | 
|  `ROLLBACK_IN_PROGRESS`  |  Remoção contínua de uma ou mais pilhas após uma falha na criação de uma pilha ou após um cancelamento explícito da criação de uma pilha.  | 
|  `UPDATE_COMPLETE`  | Atualização bem-sucedida de uma ou mais pilhas. | 
|  `UPDATE_COMPLETE_CLEANUP_IN_PROGRESS`  |  Remoção contínua de recursos antigos para uma ou mais pilhas após uma atualização bem-sucedida da pilha. Para atualizações de pilha que exigem a substituição de recursos, o CloudFormation cria os novos recursos primeiro e, em seguida, exclui os recursos antigos para ajudar a reduzir as interrupções com a pilha. Nesse estado, a pilha foi atualizado e é utilizável, mas o CloudFormation ainda está excluindo os recursos antigos.  | 
|  `UPDATE_FAILED`  | Atualização bem-sucedida de uma ou mais pilhas. Visualize os eventos da pilha para ver as mensagens de erro associadas. | 
|  `UPDATE_IN_PROGRESS`  |  Atualização contínua de uma ou mais pilhas.  | 
|  `UPDATE_ROLLBACK_COMPLETE`  |  Retorno bem-sucedido de uma ou mais pilhas para um estado de trabalho anterior após uma falha na atualização da pilha.  | 
|  `UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS`  |  Remoção contínua de recursos novos para uma ou mais pilhas após uma atualização falha da pilha. Nesse estado, a pilha foi revertida para seu estado de trabalho anterior e é utilizável, mas o CloudFormation ainda está excluindo os recursos novos criados durante a atualização da pilha.  | 
|  `UPDATE_ROLLBACK_FAILED`  |  Retorno malsucedido de uma ou mais pilhas para um estado de trabalho anterior após uma falha na atualização da pilha. Quando estiver neste estado, você pode excluir a pilha ou [continuar a reversão](using-cfn-updating-stacks-continueupdaterollback.md). Talvez você precise corrigir erros para que a pilha possa retornar a um estado operacional. Se preferir, entre em contato com o Suporte para restaurar a pilha para um estado utilizável.  | 
|  `UPDATE_ROLLBACK_IN_PROGRESS`  |  Retorno contínuo de uma ou mais pilhas para o estado de trabalho anterior após falha na atualização da pilha.  | 
|  `IMPORT_IN_PROGRESS`  |  A operação de importação está em andamento.  | 
|  `IMPORT_COMPLETE`  |  A operação de importação foi concluída com êxito para todos os recursos da pilha que oferecem suporte a `resource import`.  | 
|  `IMPORT_ROLLBACK_IN_PROGRESS`  |  A importação será revertida para a configuração do modelo anterior.  | 
|  `IMPORT_ROLLBACK_FAILED`  |  Houve uma falha na operação de reversão de importação para pelo menos um recurso na pilha. Os resultados serão disponibilizados para os recursos importados com êxito pelo CloudFormation.  | 
|  `IMPORT_ROLLBACK_COMPLETE`  |  A importação foi revertida com êxito para a configuração de modelo anterior.  | 