

# Sincronización de pilas con código fuente almacenado en un repositorio de Git con sincronización de Git
<a name="git-sync"></a>

Con la sincronización de Git, puede administrar sus pilas de CloudFormation con control de código fuente. Para ello, debe configurar CloudFormation para que monitoree un repositorio de Git. El repositorio se monitorea para detectar cambios en dos archivos:
+ Un archivo de plantilla de CloudFormation que define una pila.
+ Un archivo de implementación de pila que contiene los parámetros que configuran la pila.

Con la sincronización de Git, puede utilizar las solicitudes de extracción y el seguimiento de versiones para configurar, implementar y actualizar sus pilas de CloudFormation desde una ubicación centralizada. Al realizar cambios en la plantilla o el archivo de implementación, CloudFormation actualiza automáticamente la pila. Si utiliza solicitudes de extracción, CloudFormation puede dejar un comentario en la solicitud de extracción en la que se expliquen los cambios que se realizarán en la pila antes de actualizarla. Sin embargo, debe habilitar esta característica primero. 

La sincronización de Git proporciona una interfaz de consola que puede usar para vincular a un repositorio, generar un archivo de implementación de la pila, actualizar una plantilla de CloudFormation y enviar una solicitud de extracción a su repositorio. La sincronización de Git también proporciona un panel de estado que puede usar para monitorear, editar y solucionar problemas de las implementaciones activas de las pilas de sincronización de Git. Se accede a la sincronización de Git a través de la [consola de CloudFormation](https://console.aws.amazon.com/cloudformation/) al [crear una pila](cfn-console-create-stack.md). También, puede acceder a la sincronización de Git con CodeConnections. Para obtener más información, consulte [Cómo trabajar con configuraciones de sincronización para repositorios enlazados](https://docs.aws.amazon.com/dtconsole/latest/userguide/configurations.html) en la *Guía del usuario para desarrolladores sobre herramientas de la consola*.

La sincronización de Git es compatible con los repositorios de [GitHub](https://github.com/), [GitHub Enterprise](https://github.com/enterprise), [GitLab](https://about.gitlab.com/), [Bitbucket](https://bitbucket.org) y [GitLab autoadministrado](https://docs.gitlab.com/subscriptions/self_managed/)

**nota**  
La sincronización de Git está disponible en las siguientes regiones: EE. UU. Este (Norte de Virginia), EE. UU. Este (Ohio), EE. UU. Oeste (Norte de California), EE. UU. Oeste (Oregón), Canadá (Central), Asia Pacífico (Mumbai), Asia Pacífico (Tokio), Asia Pacífico (Seúl), Asia Pacífico (Singapur), Asia Pacífico (Sídney), Europa (Irlanda), Europa (Londres), Europa (París), Europa (Estocolmo), Europa (Fráncfort), Europa (Milán) y América del Sur (São Paolo).

Para obtener información sobre el uso de la sincronización de Git con una estrategia de cuentas múltiples, consulte la siguiente entrada del blog [Usar la sincronización de CloudFormation Git para configurar los recursos en las cuentas de los clientes](https://aws.amazon.com/blogs/devops/use-aws-cloudformation-git-sync-to-configure-resources-in-customer-accounts/). 

**Topics**
+ [Cómo funciona la sincronización de Git](git-sync-concepts-terms.md)
+ [Requisitos previos](git-sync-prereq.md)
+ [Creación de una pila a partir del código fuente del repositorio](git-sync-create-stack-from-repository-source-code.md)
+ [Habilitación de los comentarios sobre solicitudes de extracción](gitsync-enable-comments-on-pull-requests.md)
+ [Panel de estado](git-sync-status.md)

# Cómo funciona la sincronización de Git con CloudFormation
<a name="git-sync-concepts-terms"></a>

En este tema se describe cómo funciona la sincronización de Git y se introducen los conceptos clave necesarios para trabajar con ella.

**Topics**
+ [Cómo funciona la sincronización de Git](#git-sync-concepts-terms-how)
+ [Comentarios sobre solicitudes de extracción](#git-sync-comments-on-pull-requests)
+ [Archivo de implementación de la pila](#git-sync-concepts-terms-depoyment-file)
+ [Archivo de plantilla de CloudFormation](#git-sync-concepts-terms-template-file)
+ [Repositorio de definiciones de plantilla](#git-sync-concepts-terms-template-definition-repository)

## Cómo funciona la sincronización de Git
<a name="git-sync-concepts-terms-how"></a>

Para utilizar la sincronización de Git, primero debe conectar un proveedor de Git a CloudFormation mediante el servicio [CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/APIReference/Welcome.html). En los procedimiento de esta guía, la conexión se crea a través de la consola de CodeConnections. También puede crear la conexión con la AWS CLI. Puede utilizar cualquiera de los siguientes proveedores de Git:
+ [GitHub](https://github.com/)
+ [GitHub Enterprise](https://github.com/enterprise/)
+ [GitLab](https://about.gitlab.com/)
+ [Bitbucket](https://bitbucket.org)
+ [GitLab autoadministrado](https://docs.gitlab.com/subscriptions/self_managed/)

A continuación, cree una plantilla de CloudFormation que defina su pila y agréguela a su repositorio. Este archivo de plantilla está supervisado. CloudFormation actualiza la pila automáticamente cuando se realizan cambios en ella.

En la consola de CloudFormation, cree una nueva pila y elija **Sincronizar desde Git** para indicar a CloudFormation que utilice la sincronización de Git. Deberá especificar el repositorio y la rama que desea que CloudFormation supervise, y la plantilla de CloudFormation del repositorio que define la pila.

Durante la configuración, puede proporcionar su propio archivo de implementación de pila desde su repositorio o hacer que la sincronización de Git genere uno por usted. El archivo de implementación de la pila contiene parámetros y valores que configuran los recursos de la pila. Este archivo de implementación de pila está supervisado. CloudFormation actualiza la pila automáticamente cuando se realizan cambios en ella.

La sincronización de Git crea una solicitud de extracción en su repositorio para sincronizar su pila con el archivo de plantilla de CloudFormation y el archivo de implementación de la pila. Si la sincronización de Git genera el archivo de implementación de la pila por usted, la sincronización de Git lo envía a su repositorio.

A continuación, combine la solicitud de extracción con su repositorio para que CloudFormation aprovisione la pila, la configure con sus parámetros de implementación y comience a monitorear su repositorio para detectar cambios.

A partir de ese momento, cada vez que realice cambios en el archivo de plantilla o en el archivo de implementación de la pila y los confirme en el repositorio, CloudFormation detectará automáticamente los cambios. Si su equipo usa solicitudes de extracción, los miembros de su equipo pueden revisar y aprobar los cambios antes de implementarlos. Una vez que se acepta la solicitud de cambios, CloudFormation los implementa.

Puede supervisar el estado de su configuración de sincronización de Git para la pila y ver un historial de las confirmaciones aplicadas a la pila en la consola de CloudFormation. La consola también proporciona herramientas para reconfigurar la sincronización de Git y solucionar problemas. 

## Comentarios sobre solicitudes de extracción
<a name="git-sync-comments-on-pull-requests"></a>

Puede elegir que CloudFormation cree un resumen de los cambios de código en la solicitud de extracción a través del servicio CodeConnections al activar la opción **Habilitar comentarios en la solicitud de extracción** en la consola. Al brindar un resumen de los cambios en las solicitudes de extracción, los miembros del equipo pueden revisar y comprender fácilmente el impacto de las modificaciones propuestas antes de fusionar la solicitud de extracción. Para obtener más información, consulte [Cómo habilitar a CloudFormation para que publique un resumen de los cambios de pila en las solicitudes de cambios](gitsync-enable-comments-on-pull-requests.md).

## Archivo de implementación de la pila
<a name="git-sync-concepts-terms-depoyment-file"></a>

Un archivo de implementación de la pila es un archivo con notación de objetos JavaScript (JSON) o YAML que contiene parámetros y valores que administran la pila de CloudFormation. Este se supervisa para detectar cambios. Cuando los cambios en el archivo se confirman en el repositorio, la pila asociada se actualiza automáticamente.

El archivo de implementación de la pila contiene un par valor-clave y dos diccionarios:
+ `template-file-path`

  Esta es la ruta completa del repositorio del archivo de plantilla de CloudFormation. El archivo de plantilla declara los recursos de la pila de CloudFormation asociada a este archivo de implementación.
+ `parameters`

  El diccionario de parámetros contiene pares de clave-valor que configuran los recursos de la pila. Un archivo de implementación de la pila puede tener hasta 50 parámetros.
+ `tags`

  El diccionario de etiqueta contiene pares clave-valor que puede utilizar para identificar y clasificar los recursos de la pila. Un archivo de implementación de la pila puede tener hasta 50 etiquetas.

Puede proporcionar su propio archivo de implementación de la pila o hacer que la sincronización de Git cree uno por usted y envíe automáticamente una solicitud de extracción a su repositorio. Puede gestionar los parámetros y las etiquetas editando el archivo de implementación de la pila y confirmando los cambios en el repositorio.

A continuación, se muestra un ejemplo de un archivo de implementación de pila de sincronización de Git:

```
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'
```

## Archivo de plantilla de CloudFormation
<a name="git-sync-concepts-terms-template-file"></a>

Un archivo de plantilla contiene una declaración de los recursos de AWS que componen una pila de CloudFormation. Con la sincronización de Git, el archivo de plantilla se almacena en su repositorio de Git y el archivo de implementación de la pila hace referencia a él. Puede gestionar la pila editando el archivo de plantilla y confirmando los cambios en el repositorio.

Para obtener más información, consulte [Trabajo con plantillas de CloudFormation](template-guide.md).

## Repositorio de definiciones de plantilla
<a name="git-sync-concepts-terms-template-definition-repository"></a>

El repositorio de definiciones de plantillas es el repositorio de Git que está vinculado a CloudFormation mediante la sincronización de Git. El repositorio se supervisa para detectar cambios en la plantilla de CloudFormation y en el archivo de implementación de la pila. Cuando los cambios en el archivo se confirman en el repositorio, la pila asociada se actualiza automáticamente.

**importante**  
Al configurar el repositorio de definiciones de plantillas en la consola de sincronización de Git, seleccione el *repositorio* y la *rama* correctos en la conexión de Git. La sincronización de Git solo supervisa la rama y el repositorio configurados para detectar cambios en la plantilla de CloudFormation y los archivos de implementación de la pila.

# Requisitos previos para sincronizar pilas con un repositorio de Git mediante la sincronización de Git
<a name="git-sync-prereq"></a>

Antes de sincronizar una pila de CloudFormation con su repositorio de Git, compruebe que se cumplan los siguientes requisitos.

**Topics**
+ [Repositorio de Git](#git-sync-prereq-repo)
+ [Plantilla de CloudFormation](#git-sync-prereq-template)
+ [Rol de servicio de sincronización de Git](#git-sync-prereq-iam)
+ [Permisos de IAM para los usuarios de la consola](#git-sync-prereq-user-permissions)

## Repositorio de Git
<a name="git-sync-prereq-repo"></a>

Debe tener un repositorio de Git alojado en una de las siguientes plataformas.
+ [GitHub](https://github.com/)
+ [GitHub Enterprise](https://github.com/enterprise)
+ [GitLab](https://about.gitlab.com/)
+ [Bitbucket](https://bitbucket.org)
+ [GitLab autoadministrado](https://docs.gitlab.com/subscriptions/self_managed/)

El repositorio puede ser público o privado. Deberá conectar este repositorio de Git a CloudFormation a través de la [consola de Conexiones](https://console.aws.amazon.com/codesuite/settings/connections).

## Plantilla de CloudFormation
<a name="git-sync-prereq-template"></a>

El repositorio de Git debe contener un archivo de [plantilla de CloudFormation](git-sync-concepts-terms.md#git-sync-concepts-terms-template-file) verificado en la ramificación que pretende conectar con la sincronización de Git. El [archivo de implementación de la pila](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file) hará referencia a esta plantilla.

## Rol de servicio de sincronización de Git
<a name="git-sync-prereq-iam"></a>

La sincronización de Git requiere un rol de IAM. Puede elegir que se cree un rol de IAM para la pila al configurar la sincronización de Git o puede utilizar un rol existente.

**nota**  
Un rol de IAM generado automáticamente solo aplica permisos a la pila para la que se generó el rol. Para volver a utilizar un rol de IAM generado automáticamente, debe editar el rol de la nueva pila.

### Permisos necesarios para la creación de un rol de servicio de sincronización de Git
<a name="git-sync-prereq-permissions"></a>

El rol de IAM que proporcione para la sincronización de Git requiere los siguientes permisos.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ValidateTemplate`
+ `events:PutRule`
+ `events:PutTargets`

**nota**  
Los permisos necesarios anteriores se agregan automáticamente a los roles de IAM que genera la sincronización de Git.

El siguiente ejemplo de rol de IAM incluye los permisos para la sincronización de Git.

------
#### [ 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 confianza
<a name="git-sync-prereq-trust-policy"></a>

Debe proporcionar la siguiente política de confianza a la hora de crear el rol para definir la relación de confianza.

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

****  

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

------

Le recomendamos que utilice las claves de condición `aws:SourceArn` y `aws:SourceAccount` para protegerse contra el problema del suplente confuso. La cuenta de origen es el ID de su cuenta y el ARN de origen es el ARN de la conexión en el servicio de [CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/APIReference/Welcome.html) que permite a CloudFormation conectarse a su repositorio de 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 obtener más información sobre el problema del suplente confuso, consulte [Prevención de la sustitución confusa entre servicios](cross-service-confused-deputy-prevention.md).

## Permisos de IAM para los usuarios de la consola
<a name="git-sync-prereq-user-permissions"></a>

Para configurar correctamente la sincronización de Git a través de la consola CloudFormation, los usuarios finales también deben tener permisos a través de IAM.

Se requieren los siguientes permisos de `codeconnections` para crear y administrar la conexión a su repositorio 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`

Los usuarios de la consola también deben tener los siguientes permisos de `cloudformation` para ver y administrar las pilas durante el proceso de configuración de la sincronización de Git.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:GetTemplate`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ListStacks`
+ `cloudformation:ValidateTemplate`

**nota**  
Aunque los permisos del conjunto de cambios (`cloudformation:CreateChangeSet`, `cloudformation:DeleteChangeSet`, `cloudformation:DescribeChangeSet`, `cloudformation:ExecuteChangeSet`) podrían no ser estrictamente necesarios para el uso exclusivo de la consola, se recomiendan para habilitar las capacidades de inspección y gestión del full stack.

El siguiente ejemplo de política de IAM incluye los permisos de usuario necesarios para configurar la sincronización de Git a través de la consola.

------
#### [ 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**  
Al crear una política de IAM que incluya los permisos `codeconnections:CreateForcedTargetSync` y `codeconnections:CreatePullRequestForResource`, es posible que usted vea una advertencia en la consola de IAM que indique que estas acciones no existen. Esta advertencia se puede ignorar y la política se seguirá creando correctamente. Estos permisos son necesarios para determinadas operaciones de sincronización de Git a pesar de que la consola de IAM no los reconozca.

# Creación de una pila a partir del código fuente del repositorio con sincronización de Git
<a name="git-sync-create-stack-from-repository-source-code"></a>

En este tema se explica cómo crear una pila de CloudFormation que se sincronice con un repositorio de Git mediante la sincronización de Git.

**importante**  
Antes de continuar, complete todos los [requisitos previos](git-sync-prereq.md) de la sección anterior. 

## Creación de una pila a partir del código fuente del repositorio
<a name="create-stack-from-repository-source-code"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS en la que creó la pila.

1. En la página **Pilas**, elija **Crear pila** y, a continuación, elija **Con recursos nuevos (estándar)**.

1. En la página **Crear pila**, proceda del modo siguiente:

   1. En **Requisito previo: preparar la plantilla**, mantenga seleccionada la opción **Seleccione una plantilla existente**.

   1. En **Especificar plantilla**, elija **Sincronizar desde Git** y, a continuación, seleccione **Siguiente**.

1. En la página **Especificar los detalles de la pila**, en **Nombre de la pila**, ingrese un nombre para la pila. Los nombres de pilas pueden incluir letras (A-Z y a-z), números (0-9) y guiones (-).

1. En **Archivo de implementación de Stack**, **Creación del archivo de implementación**:
   + Si *no* ha creado un archivo de implementación de pilas y lo ha agregado al repositorio, elija **Crear el archivo con los siguientes parámetros y colocarlo en mi repositorio**.
   + Si tiene archivo de implementación de pila en su repositorio, seleccione **Proporciono mi propio archivo en mi repositorio**.

1. En **Repositorio de definiciones de plantillas**, seleccione **Elegir un repositorio de Git vinculado** para seleccionar un repositorio de Git que ya está vinculado a CloudFormation o **Vincular un repositorio de Git** para vincular uno nuevo. Si elige **Vincular un repositorio de Git**, haga lo siguiente:

   1. En **Seleccionar el proveedor de repositorios**, elija una de las siguientes opciones:
      + **GitHub**
      + **GitHub Enterprise Server**
      + **GitLab**
      + **Bitbucket**
      + **GitLab autoadministrado**

   1. Para **Conexión**, elija una conexión de la lista. Si no aparece ninguna opción en la lista **Conexión**, elija **agregar una nueva conexión** para ir a la [Consola de conexiones](https://console.aws.amazon.com/codesuite/settings/connections) y crear una conexión con su repositorio.

1. En la lista de **Repositorios**, seleccione el repositorio de Git que contenga el archivo de plantillas de la pila.

1. En la lista de **Ramas**, seleccione la rama que quiere que supervise la sincronización de Git sync.
**nota**  
La sincronización de Git solo supervisa la rama seleccionada para detectar cambios en la plantilla de CloudFormation y los archivos de implementación de la pila. Cualquier cambio que desee aplicar a su pila debe estar registrado en esta rama.

1. Para la **Ruta del archivo de implementación**, especifique la ruta completa, incluido el nombre del archivo de implementación de la pila, desde la raíz de la rama de repositorio.

   Si CloudFormation genera el archivo por usted, aquí es donde se guardará el archivo en su repositorio. Si proporciona el archivo, esta es la ubicación del archivo en su repositorio.

1. Agregar un **rol de IAM**. El rol de IAM incluye los permisos necesarios para que CloudFormation sincronice la pila desde su repositorio de Git. Puede elegir **Nuevo rol de IAM** para generar un nuevo rol o elegir **Rol de IAM existente** para seleccionar un rol existente de su Cuenta de AWS. Si decide generar un nuevo rol, los permisos necesarios se incluyen en el rol.

1. Cómo habilitar o desactivar los comentarios en una solicitud de extracción:
   + Para incluir la información posterior al conjunto de cambios de CloudFormation en las solicitudes de cambios para actualizaciones de pila, mantenga activada la opción **Habilitar comentarios en las solicitudes de cambios**.
   + Si desactiva esta opción, CloudFormation no describirá las diferencias entre la configuración de la pila actual y los cambios propuestos en las solicitudes de incorporación de cambios cuando se actualicen los archivos del repositorio.

1. Para **Ruta del archivo de plantillas**, especifique la ruta completa desde la raíz de su repositorio para el archivo de plantillas de la pila.

1. (Opcional) Para especificar los parámetros de la pila, seleccione **Agregar parámetro**, brinde una clave y un valor para cada parámetro y, a continuación, seleccione **Siguiente**. Para obtener más información, consulte [Archivo de implementación de la pila](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file).

   Por ejemplo, para especificar un parámetro **port=8080** en el archivo de implementación de la pila, haga lo siguiente:

   1. Elija **Add parameter (Añadir parámetro)**.

   1. En **Clave**, escriba **port**.

   1. En **Valor**, introduzca **8080**.

1. (Opcional) Para especificar etiquetas de pila, seleccione **Agregar nueva etiqueta**, ingrese un valor y una clave de etiqueta, y luego elija **Siguiente**. Para obtener más información, consulte [Archivo de implementación de la pila](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file).

1. Seleccione **Siguiente** para continuar con **Configurar las opciones de la pila**. Para obtener más información acerca de cómo configurar opciones de la pila, consulte [Configurar las opciones la pila](cfn-console-create-stack.md#configure-stack-options).

   Cuando haya completado la configuración de la pila, seleccione **Siguiente** para continuar.

1. Revise la configuración de la pila y confirme lo siguiente:
   + La plantilla de la pila se configuró correctamente y se estableció en **Sincronizar desde Git**.
   + El archivo de implementación se configuró correctamente.
   + El repositorio de definiciones de plantillas se configuró correctamente y, en particular, se seleccionó el **Repositorio** y **Nombre de rama** correctos.
   + La vista previa del archivo de implementación es correcta y contiene los parámetros y valores esperados.

1. Seleccione **Enviar** para crear la pila.

   Después de que selecciona **Enviar**, se crea automáticamente una solicitud de extracción en su repositorio de Git. Debe combinar esta solicitud de extracción en su repositorio de Git para crear su pila. Una vez que se crea la pila, CloudFormation supervisa su repositorio de Git en busca de cambios.

## Actualización de la pila desde el repositorio de Git
<a name="update-stack-from-repository-source-code"></a>

Para actualizar la pila, realice los cambios directamente en el archivo de plantilla o en el archivo de implementación de la pila en su repositorio de Git. Tras confirmar los cambios en la rama supervisada, CloudFormation actualiza automáticamente la pila. Si utiliza solicitudes de extracción, se crea automáticamente una solicitud de extracción en su repositorio de Git antes de que se actualice la pila. Debe combinar esta solicitud de extracción en su repositorio de Git para actualizar su pila.

En la consola de CloudFormation, puede seleccionar la pila y elegir la pestaña **Sincronización de Git** para ver información sobre el estado de la pila y los eventos de sincronización. Para obtener más información, consulte [Panel de estado de sincronización de Git](git-sync-status.md).

# Cómo habilitar a CloudFormation para que publique un resumen de los cambios de pila en las solicitudes de cambios
<a name="gitsync-enable-comments-on-pull-requests"></a>

En este tema, se muestra cómo habilitar CloudFormation para publicar un resumen de los cambios de pila en las solicitudes de incorporación de cambios en tu repositorio de Git.

Al habilitar la característica de comentarios en las solicitudes de incorporación de cambios, permite que CloudFormation publique un comentario que describa las diferencias entre la configuración de la pila actual y los cambios propuestos cuando se actualicen los archivos del repositorio. Este comentario ofrece un resumen de los recursos que se agregarán, modificarán o eliminarán, lo que permitirá realizar una revisión exhaustiva del código antes de fusionar la solicitud de extracción.

**Habilitación de los comentarios en las solicitudes de incorporación de cambios para una nueva pila (consola)**  
Al crear la pila, en la página **Especificar los detalles de la pila**, en el **Repositorio de definiciones de plantillas**, asegúrese de que la opción **Habilitar comentarios en las solicitudes de extracción** esté activada. Esta es la configuración predeterminada para las nuevas pilas. 

**Habilitación de los comentarios en las solicitudes de extracción de una nueva pila (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, seleccione la Región de AWS en la que creó su pila.

1. En la página **Pilas**, seleccione la pila en ejecución que desea actualizar.

1. Elija la pestaña **Sincronización con Git** y, a continuación, **Editar**.

1. En la página **Editar configuración de sincronización con Git**, en **Repositorio de definiciones de plantillas**, active la opción **Habilitar comentarios en solicitudes de extracción**.

1. Seleccione **Update configuration (Actualizar la configuración)**.

# Panel de estado de sincronización de Git
<a name="git-sync-status"></a>

Para ver el estado de una implementación de sincronización de Git AWS CloudFormation, seleccione la pila en la consola de CloudFormation y elija la pestaña de **Sincronización de Git**.

La pestaña de Sincronización de Git se divide en dos paneles: **Estado de sincronización de Git** y **Últimos eventos de sincronización**.

## Estado de sincronización de Git
<a name="git-sync-status-info"></a>

El panel superior proporciona la siguiente información sobre la configuración de sincronización de Git para la pila.

****Repositorio****  
 Un enlace al repositorio que está conectado a la sincronización de Git

****Proveedor de repositorio****  
El nombre del proveedor de repositorio

****Rama****  
El nombre de la rama que supervisa la sincronización de Git

****Ruta del archivo de implementación****  
La ruta completa al archivo de implementación de la pila para esta pila

****Estado de sincronización del repositorio****  
El estado de la operación de sincronización más reciente

****Mensaje de estado de sincronización del repositorio****  
El mensaje de la operación de sincronización más reciente

****Estado de sincronización de Git****  
El estado de la sincronización de Git para esta pila

****Estado de aprovisionamiento****  
El estado de la operación de aprovisionamiento

En la parte superior derecha del panel, use los siguientes botones para modificar o actualizar la sincronización de Git:
+ **Editar**: edita la configuración de sincronización de Git.
+ **Reintentar la última confirmación**: actualiza la pila de acuerdo con la confirmación más reciente en el repositorio.
+ **Desconectar**: desconecta la sincronización de Git de la pila.
+ **Actualizar**: actualiza el panel de estado de sincronización de Git.

## Últimos eventos de sincronización
<a name="git-sync-status-sync-events"></a>

El panel de **Eventos de sincronización más recientes** muestra una tabla de confirmaciones que se aplicaron a la pila.

Puede ordenar la tabla con las flechas del encabezado de cada columna. La tabla se puede ordenar de forma ascendente o descendente de acuerdo con lo siguiente:
+ **Fecha**
+ **ID de confirmación**
+ **Evento**
+ **Fecha**
+ **Tipo de evento**

## Estados de pilas admitidos
<a name="git-sync-status-stack-state"></a>

La sincronización de Git solo se puede configurar para una pila si la pila se encuentra en uno de los siguientes estados admitidos:
+ `CREATE_COMPLETE`
+ `UPDATE_COMPLETE`
+ `UPDATE_ROLLBACK_COMPLETE`
+ `IMPORT_COMPLETE`
+ `IMPORT_ROLLBACK_COMPLETE`

La siguiente tabla contiene una lista completa de los códigos de estado de la pila con descripciones:


| Estado de la pila y estado detallado opcional | Descripción | 
| --- | --- | 
|  `CREATE_COMPLETE`  |  Creación correcta de una o varias pilas.  | 
|  `CREATE_IN_PROGRESS`  |  Creación continua de una o varias pilas.  | 
|  `CREATE_FAILED`  |  Creación incorrecta de una o varias pilas. Consulte los eventos de pila para ver los mensajes de error asociados. Algunos de los posibles motivos de que la creación no se haya realizado correctamente incluyen la falta de permisos para trabajar con todos los recursos de pila, el rechazo de los valores de los parámetros por parte de un servicio de AWS o que se ha agotado el tiempo de espera durante la creación del recurso.  | 
|  `DELETE_COMPLETE`  |  Eliminación correcta de una o varias pilas. Las pilas eliminadas se conservan y se pueden ver durante 90 días.  | 
|  `DELETE_FAILED`  |  Eliminación incorrecta de una o varias pilas. Dado que la eliminación no se ha realizado correctamente, es posible que algunos recursos aún se sigan ejecutando; sin embargo, no puede trabajar ni actualizar la pila. Vuelva a eliminar la pila o consulte los eventos de la pila para ver los mensajes de error asociados.  | 
|  `DELETE_IN_PROGRESS`  |  Eliminación continua de una o varias pilas.  | 
| `REVIEW_IN_PROGRESS` | Creación continua de una o varias pilas con un StackId esperado, pero sin plantillas ni recursos. Una pila con este código de estado cuenta para el [número máximo posible de pilas](cloudformation-limits.md).  | 
|  `ROLLBACK_COMPLETE`  |  Eliminación correcta de una o varias pilas después de un error en la creación de la pila o después de que se haya cancelado explícitamente la creación de la pila. La pila vuelve al estado anterior de trabajo. Se eliminan todos los recursos que se hayan creado durante la acción de creación de pila. Este estado solo existe después de la creación fallida de una pila. Esto significa que todas las operaciones de la pila creada parcialmente se ha limpiado de forma apropiada. Cuando en este estado, solo puede realizarse una operación de eliminación.  | 
|  `ROLLBACK_FAILED`  |  Eliminación incorrecta de una o varias pilas después de un error en la creación de pila o después de que se haya cancelado explícitamente la creación de pila. Elimine la pila o consulte los eventos de pila para ver los mensajes de error asociados.  | 
|  `ROLLBACK_IN_PROGRESS`  |  Eliminación continua de una o varias pilas después de un error en la creación de pila o después de que se haya cancelado explícitamente la creación de pila.  | 
|  `UPDATE_COMPLETE`  | Actualización correcta de una o varias pilas. | 
|  `UPDATE_COMPLETE_CLEANUP_IN_PROGRESS`  |  Eliminación continua de recursos antiguos para una o varias pilas después de una actualización correcta de las pilas. Para las actualizaciones de pilas que requieren que se sustituyan los recursos, CloudFormation crea los nuevos recursos en primer lugar y, a continuación, elimina los antiguos para ayudar a reducir interrupciones con la pila. En este estado, la pila se ha actualizado y se puede utilizar, pero CloudFormation sigue eliminando los recursos antiguos.  | 
|  `UPDATE_FAILED`  | Actualización incorrecta de una o varias pilas. Consulte los eventos de pila para ver los mensajes de error asociados. | 
|  `UPDATE_IN_PROGRESS`  |  Actualización continua de una o varias pilas.  | 
|  `UPDATE_ROLLBACK_COMPLETE`  |  Recuperación correcta del estado activo anterior de una o varias pilas después de un error en la actualización de las pilas.  | 
|  `UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS`  |  Eliminación continua de recursos nuevos para una o varias pilas después de una actualización incorrecta de las pilas. En este estado, se ha restaurado el estado anterior de la pila y se puede utilizar, pero CloudFormation sigue eliminando los nuevos recursos que ha creado durante la actualización de la pila.  | 
|  `UPDATE_ROLLBACK_FAILED`  |  Restauración incorrecta del estado activo anterior de una o varias pilas después de un error en la actualización de las pilas. En este estado, puede eliminar la pila o [continuar con la restauración](using-cfn-updating-stacks-continueupdaterollback.md). Probablemente necesite corregir errores antes de que la pila vuelva a estar operativa. También puede contactar con Soporte para restaurar la pila a un estado útil.  | 
|  `UPDATE_ROLLBACK_IN_PROGRESS`  |  Recuperación continua del estado activo anterior de una o varias pilas después de un error en la actualización de las pilas.  | 
|  `IMPORT_IN_PROGRESS`  |  La operación de importación está actualmente en curso.  | 
|  `IMPORT_COMPLETE`  |  La operación de importación se ha completado correctamente para todos los recursos de la pila compatibles con `resource import`.  | 
|  `IMPORT_ROLLBACK_IN_PROGRESS`  |  La importación volverá a la configuración de la plantilla anterior.  | 
|  `IMPORT_ROLLBACK_FAILED`  |  La operación de restauración de importación ha generado un error para un recurso de la pila como mínimo. Los resultados estarán disponibles para los recursos que CloudFormation haya importado correctamente.  | 
|  `IMPORT_ROLLBACK_COMPLETE`  |  La importación ha vuelto correctamente a la configuración de plantilla anterior.  | 