

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Migración a AWS CodeCommit
<a name="how-to-migrate-repository"></a>

Puede migrar un repositorio de Git a un repositorio de CodeCommit de varias formas: puede clonarlo, crear un reflejo, migrar todas o solo algunas de sus ramificaciones, etc. También puede migrar el contenido local sin versión del equipo a CodeCommit.

Los siguientes temas muestran algunas de las formas que puede utilizar para migrar un repositorio. Los pasos podrían variar función del tipo, estilo o complejidad del repositorio, así como de las decisiones que tome sobre qué va a migrar y cómo va a hacerlo. En el caso de repositorios de gran tamaño, es posible que desee considerar la [migración incremental](how-to-push-large-repositories.md).

**nota**  
Puede migrar a CodeCommit desde otros sistemas de control de versiones, como, por ejemplo, Perforce, Subversion o TFS, pero debe migrar a Git en primer lugar.   
Para ver más opciones, consulte la documentación de Git.  
También puede consultar la información sobre [la migración a Git](http://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git) en el libro *Pro Git* de Scott Chacon y Ben Straub.

**Topics**
+ [

# Migrar un repositorio de Git a AWS CodeCommit
](how-to-migrate-repository-existing.md)
+ [Migre el contenido a CodeCommit](how-to-migrate-repository-local.md)
+ [Migrar de forma incremental un repositorio](how-to-push-large-repositories.md)

# Migrar un repositorio de Git a AWS CodeCommit
<a name="how-to-migrate-repository-existing"></a>

Puedes migrar un repositorio de Git existente a un CodeCommit repositorio. Los procedimientos incluidos en este tema muestran cómo migrar a CodeCommit un proyecto que se aloja en otro repositorio Git. Como parte de este proceso:
+ Complete la configuración inicial requerida para CodeCommit.
+ Cree un CodeCommit repositorio.
+ Clona el repositorio y envíalo a él CodeCommit.
+ Vea los archivos del CodeCommit repositorio.
+ Comparte el CodeCommit repositorio con tu equipo.

![\[Migración de un repositorio de Git a CodeCommit\]](http://docs.aws.amazon.com/es_es/codecommit/latest/userguide/images/codecommit-migrate-existing.png)


**Topics**
+ [

## Paso 0: Se requiere una configuración para acceder a CodeCommit
](#how-to-migrate-existing-setup)
+ [

## Paso 1: Crea un repositorio CodeCommit
](#how-to-migrate-existing-create)
+ [

## Paso 2: clona el repositorio y envíalo al CodeCommit repositorio
](#how-to-migrate-existing-clone)
+ [

## Paso 3: Ver los archivos en CodeCommit
](#how-to-migrate-existing-view)
+ [

## Paso 4: Compartir el repositorio CodeCommit
](#how-to-migrate-existing-share)

## Paso 0: Se requiere una configuración para acceder a CodeCommit
<a name="how-to-migrate-existing-setup"></a>

Antes de poder migrar un repositorio a CodeCommit, debe crear y configurar un usuario de IAM para el acceso a su ordenador local CodeCommit y configurarlo. También deberá instalar la AWS CLI para administrar CodeCommit. Aunque puedes realizar la mayoría de CodeCommit las tareas sin él, AWS CLI ofrece flexibilidad a la hora de trabajar con Git en la línea de comandos o en la terminal. 

Si ya lo tienes configurado CodeCommit, puedes pasar a[Paso 1: Crea un repositorio CodeCommit](#how-to-migrate-existing-create).

**Para crear y configurar un usuario de IAM para acceder CodeCommit**

1. Para crear una cuenta de Amazon Web Services, acceda a [http://aws.amazon.com](https://aws.amazon.com/) y seleccione **Registrarse**.

1. Cree un usuario de IAM o use uno existente en su cuenta de Amazon Web Services. Asegúrese de que tiene un ID de clave de acceso y una clave de acceso secreta asociados a ese usuario de IAM. Para obtener más información, consulte [Creación de un usuario de IAM en su cuenta de Amazon Web Services](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html).
**nota**  
CodeCommit requiere AWS Key Management Service. Si utiliza un usuario de IAM existente, asegúrese de que no haya políticas adjuntas al usuario que denieguen expresamente las AWS KMS acciones requeridas por CodeCommit él. Para obtener más información, consulte [AWS KMS y cifrado](encryption.md).

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. En la consola de IAM, en el panel de navegación, elija **Usuarios** y, a continuación, elija el usuario de IAM que desee configurar para el acceso. CodeCommit 

1. En la pestaña **Permissions**, seleccione **Add Permissions**. 

1. En **Grant permissions**, elija **Attach existing policies directly**.

1. En la lista de políticas, seleccione **AWSCodeCommitPowerUser**u otra política gestionada de CodeCommit acceso. Para obtener más información, consulte [AWS políticas gestionadas para CodeCommit](security-iam-awsmanpol.md).

   Una vez que haya seleccionado la política que desee asociar, seleccione **Siguiente: Revisar** para revisar la lista de políticas que se van a asociar al usuario de IAM. Si la lista es correcta, seleccione **Add permissions**.

    Para obtener más información sobre las políticas CodeCommit administradas y sobre cómo compartir el acceso a los repositorios con otros grupos y usuarios, consulte [Compartir un repositorio](how-to-share-repository.md) y[Autenticación y control de acceso para AWS CodeCommit](auth-and-access-control.md).

**Para instalar y configurar AWS CLI**

1. En su máquina local, descargue e instale el AWS CLI. Este es un requisito previo para interactuar con él CodeCommit desde la línea de comandos. Le recomendamos que instale la versión 2 de AWS CLI . Es la versión principal más reciente AWS CLI y es compatible con todas las funciones más recientes. Es la única versión de la AWS CLI que admite el uso de una cuenta raíz, un acceso federado o credenciales temporales con**git-remote-codecommit**.

   Para obtener más información, consulte [Cómo configurar la interfaz de línea de AWS comandos](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html).
**nota**  
CodeCommit solo funciona con AWS CLI las versiones 1.7.38 y posteriores. Como práctica recomendada, instale o actualice AWS CLI a la última versión disponible. Para determinar qué versión de la AWS CLI ha instalado, ejecute el **aws --version** comando.  
Para actualizar una versión anterior AWS CLI a la versión más reciente, consulte [Instalación del AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html).

1. Ejecute este comando para comprobar que los CodeCommit comandos de AWS CLI están instalados.

   ```
   aws codecommit help
   ```

   Este comando devuelve una lista de CodeCommit comandos.

1. Configure el AWS CLI con un perfil mediante el **configure** comando, de la siguiente manera:.

   ```
   aws configure
   ```

   Cuando se le solicite, especifique la clave de AWS acceso y la clave de acceso AWS secreta del usuario de IAM con CodeCommit el que va a utilizarlas. Además, asegúrese de especificar Región de AWS dónde se encuentra el repositorio, por ejemplo`us-east-2`. Cuando se le pregunte el formato de salida predeterminado, indique `json`. Por ejemplo, si está configurando un perfil para un usuario de IAM:

   ```
   AWS Access Key ID [None]: Type your IAM user AWS access key ID here, and then press Enter
   AWS Secret Access Key [None]: Type your IAM user AWS secret access key here, and then press Enter
   Default region name [None]: Type a supported region for CodeCommit here, and then press Enter
   Default output format [None]: Type json here, and then press Enter
   ```

   Para obtener más información sobre la creación y configuración de perfiles para utilizarlos con el AWS CLI, consulte lo siguiente:
   + [Perfiles con nombre](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
   + [Uso de un rol de IAM en el AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)
   + [Comando Set](https://docs.aws.amazon.com/cli/latest/reference/set.html)
   + [Conexión a AWS CodeCommit repositorios con credenciales rotativas](temporary-access.md)

   Para conectarse a un repositorio o a un recurso de otro Región de AWS, debe volver a configurarlo AWS CLI con el nombre de región predeterminado. Los nombres de región predeterminados admitidos CodeCommit incluyen:
   + us-east-2
   + us-east-1
   + eu-west-1
   + us-west-2
   + ap-northeast-1
   + ap-southeast-1
   + ap-southeast-2
   + ap-southeast-3
   + me-central-1
   + eu-central-1
   + ap-northeast-2
   + sa-east-1
   + us-west-1
   + eu-west-2
   + ap-south-1
   + ap-south-1
   + ca-central-1
   + us-gov-west-1
   + us-gov-east-1
   + eu-north-1
   + ap-east-1
   + me-south-1
   + cn-north-1
   + cn-northwest-1
   + eu-south-1
   + ap-northeast-3
   + af-south-1
   + il-central-1

   Para obtener más información sobre CodeCommit y Región de AWS, consulte[Regiones y puntos de conexión de Git](regions.md). Para obtener más información sobre IAM, claves de acceso y claves secretas, consulte [¿Cómo puedo obtener credenciales?](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_Introduction.html#IAM_SecurityCredentials) y [Gestión de claves de acceso para usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html). Para obtener más información sobre los perfiles AWS CLI y, consulte [Perfiles con nombre](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

A continuación, deberá instalar Git. 
+ **Para Linux, macOS o Unix**:

  Para trabajar con archivos, confirmaciones y otra información de los CodeCommit repositorios, debes instalar Git en tu máquina local. CodeCommit es compatible con las versiones 1.7.9 y posteriores de Git. La versión 2.28 de Git admite la configuración del nombre de la ramificación para las confirmaciones iniciales. Recomendamos usar una versión reciente de Git.

  Para instalar Git, le recomendamos sitios web como [Git Downloads](http://git-scm.com/downloads).
**nota**  
Git es una plataforma en evolución que se actualiza periódicamente. Ocasionalmente, un cambio en una función puede afectar a su forma de trabajar con CodeCommit ella. Si tienes problemas con una versión específica de Git CodeCommit, consulta la información en[Solución de problemas](troubleshooting.md).
+ **Para Windows:** 

  Para trabajar con archivos, confirmaciones y otra información de los CodeCommit repositorios, debes instalar Git en tu máquina local. CodeCommit es compatible con las versiones 1.7.9 y posteriores de Git. La versión 2.28 de Git admite la configuración del nombre de la ramificación para las confirmaciones iniciales. Recomendamos usar una versión reciente de Git.

  Para instalar Git, le recomendamos sitios web como [Git for Windows](https://gitforwindows.org/). Si utiliza este enlace para instalar Git, puede aceptar todos los ajustes predeterminados de la instalación excepto los siguientes: 
  + Cuando se le pida durante el paso **Ajustar su entorno PATH**, seleccione la opción de usar Git desde la línea de comandos.
  + (Opcional) Si pretendes usar HTTPS con el asistente de credenciales que viene incluido en el en AWS CLI lugar de configurar las credenciales de Git para CodeCommit, en la página **Configuración de opciones adicionales**, asegúrate de que la opción Habilitar el **administrador de credenciales de Git esté desactivada**. El administrador de credenciales de Git solo es compatible CodeCommit si los usuarios de IAM configuran las credenciales de Git. Para obtener más información, consulte [Para usuarios HTTPS mediante credenciales de Git](setting-up-gc.md) y [Git para Windows: he instalado Git para Windows, pero no tengo permiso para acceder a mi repositorio (403)](troubleshooting-ch.md#troubleshooting-windowshttps).
**nota**  
Git es una plataforma en evolución que se actualiza periódicamente. Ocasionalmente, un cambio en una función puede afectar a la forma en que funciona. CodeCommit Si tienes problemas con una versión específica de Git CodeCommit, consulta la información en[Solución de problemas](troubleshooting.md).

CodeCommit admite la autenticación HTTPS y SSH. Para completar la configuración, debes configurar las credenciales de Git para CodeCommit (HTTPS, recomendado para la mayoría de los usuarios), un par de claves SSH para usar al acceder CodeCommit (SSH), **git-remote-codecommit** (recomendado para los usuarios que usan acceso federado) o el asistente de credenciales incluido en el (HTTPS). AWS CLI 
+ Para las credenciales de Git en todos los sistemas operativos compatibles, consulte [Paso 3: Crear credenciales de Git para las conexiones HTTPS a CodeCommit](setting-up-gc.md#setting-up-gc-iam).
+ Para SSH en Linux, macOS o Unix, consulte [SSH y Linux, macOS o Unix: configura las claves públicas y privadas para Git y CodeCommit](setting-up-ssh-unixes.md#setting-up-ssh-unixes-keys-unixes).
+  Para SSH en Windows, consulte [Paso 3: Configura las claves públicas y privadas para Git y CodeCommit](setting-up-ssh-windows.md#setting-up-ssh-windows-keys-windows).
+ Para **git-remote-codecommit**, consulte [Pasos de configuración para las conexiones HTTPS a AWS CodeCommit con git-remote-codecommit](setting-up-git-remote-codecommit.md).
+ Para ver el ayudante de credenciales en Linux, macOS o Unix, consulte [Configurar el ayudante de credenciales (Linux, macOS o Unix)](setting-up-https-unixes.md#setting-up-https-unixes-ch-config).
+ Para el auxiliar de credenciales en Windows, consulte [Configuración del auxiliar de credenciales (Windows)](setting-up-https-windows.md#setting-up-https-windows-ch-config).

## Paso 1: Crea un repositorio CodeCommit
<a name="how-to-migrate-existing-create"></a>

En esta sección, utilizará la CodeCommit consola para crear el CodeCommit repositorio que utilizará para el resto de este tutorial. Para usar la AWS CLI para crear el repositorio, consulte[Creación de un repositorio (AWS CLI)](how-to-create-repository.md#how-to-create-repository-cli).

1. Abra la CodeCommit consola en [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. En el selector de regiones, elige la ubicación en la Región de AWS que deseas crear el repositorio. Para obtener más información, consulte [Regiones y puntos de conexión de Git](regions.md).

1. En la página **Repositorios**, seleccione **Crear repositorio**. 

1. En la página **Create repository (Crear repositorio)**, en el campo **Repository name (Nombre de repositorio)**, escriba un nombre para el repositorio.
**nota**  
Los nombres de repositorio distinguen entre mayúsculas y minúsculas. El nombre debe ser único en la Región de AWS y de su cuenta de Amazon Web Services.

1. (Opcional) En **Descripción**, introduzca una descripción para el repositorio. Esto puede ayudarle a usted y a otros usuarios a conocer el propósito del repositorio. 
**nota**  
El campo de descripción muestra Marcado en la consola y acepta todos los caracteres HTML y caracteres Unicode válidos. Si es un desarrollador de aplicaciones que utiliza `GetRepository` o `BatchGetRepositories` APIs y tiene previsto mostrar el campo de descripción del repositorio en un navegador web, consulte la [referencia de la CodeCommit API](https://docs.aws.amazon.com/codecommit/latest/APIReference/).

1. (Opcional) Selecciona **Añadir etiqueta** para añadir una o más etiquetas de repositorio (una etiqueta de atributo personalizada que te ayuda a organizar y gestionar tus AWS recursos) a tu repositorio. Para obtener más información, consulte [Etiquetar repositorios en AWS CodeCommit](how-to-tag-repository.md).

1. (Opcional) Amplíe la **configuración adicional** para especificar si desea utilizar la clave predeterminada Clave administrada de AWS o la propia clave gestionada por el cliente para cifrar y descifrar los datos de este repositorio. Si decide utilizar su propia clave gestionada por el cliente, debe asegurarse de que esté disponible en el Región de AWS lugar donde vaya a crear el repositorio y de que la clave esté activa. Para obtener más información, consulte [AWS Key Management Service y cifrado para AWS CodeCommit repositorios](encryption.md).

1. (Opcional) Seleccione **Habilitar Amazon CodeGuru Reviewer para Java y Python** si este repositorio contiene código Java o Python y desea que CodeGuru Reviewer lo analice. CodeGuru Reviewer utiliza varios modelos de aprendizaje automático para detectar defectos en el código y sugerir mejoras y correcciones en las solicitudes de incorporación de cambios. Para obtener más información, consulte la [https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/Welcome.html](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/Welcome.html).

1. Seleccione **Crear**. 

![\[Crear un repositorio para migrar un repositorio de Git a CodeCommit\]](http://docs.aws.amazon.com/es_es/codecommit/latest/userguide/images/codecommit-create-repo-migrate-existing.png)


Una vez creado, el repositorio aparece en la lista **Repositories (Repositorios)**. En la columna URL, seleccione el icono de copia y, a continuación, elija el protocolo (SSH o HTTPS) que se utiliza para conectar a CodeCommit. Copie la dirección URL.

Por ejemplo, si has asignado un nombre a tu repositorio *MyClonedRepository* y utilizas las credenciales de Git con HTTPS en la región EE.UU. Este (Ohio), la URL tendrá el siguiente aspecto:

```
https://git-codecommit.us-east-2.amazonaws.com/MyClonedRepository
```

Necesita esta URL más adelante en [Paso 2: clona el repositorio y envíalo al CodeCommit repositorio](#how-to-migrate-existing-clone).

## Paso 2: clona el repositorio y envíalo al CodeCommit repositorio
<a name="how-to-migrate-existing-clone"></a>

En esta sección, clona un repositorio Git en el equipo local, lo que dará lugar a lo que se denomina un repositorio local. A continuación, insertas el contenido del repositorio local en el CodeCommit repositorio que creaste anteriormente.

1. Desde la terminal o la línea de comandos de su equipo local, ejecute el **git clone** comando con la `--mirror` opción de clonar una copia simple del repositorio remoto en una nueva carpeta denominada*aws-codecommit-demo*. Se trata de un repositorio vacío concebido solamente para la migración. No es el repositorio local para interactuar con el repositorio migrado. CodeCommit Puede crearlo más adelante, una vez CodeCommit finalizada la migración.

   En el siguiente ejemplo, se clona una aplicación de demostración alojada en GitHub (*https://github.com/awslabs/aws-demo-php-simple-app.git*) en un repositorio local de un directorio denominado*aws-codecommit-demo*. 

   ```
   git clone --mirror https://github.com/awslabs/aws-demo-php-simple-app.git aws-codecommit-demo
   ```

1. Cambie los directorios por el directorio en el que ha realizado la clonación.

   ```
   cd aws-codecommit-demo
   ```

1. Ejecute el **git push** comando y especifique la URL y el nombre del CodeCommit repositorio de destino y la **--all** opción. (Esta es la URL que copió en [Paso 1: Crea un repositorio CodeCommit](#how-to-migrate-existing-create)).

   Por ejemplo, si has asignado un nombre a tu repositorio *MyClonedRepository* y estás configurado para usar HTTPS, debes ejecutar el siguiente comando:

   ```
   git push https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --all
   ```
**nota**  
La opción **--all** solo envía todas las ramificaciones al repositorio. No envía otras referencias, como, por ejemplo, etiquetas. Si desea enviar etiquetas, espere hasta que se haya completado el envío inicial y, a continuación, envíe de nuevo, esta vez con la opción **--tags**.  

   ```
   git push ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --tags
   ```
Para obtener más información, consulte [Git push](https://git-scm.com/docs/git-push) en el sitio web de Git. Para obtener más información sobre el envío de grandes repositorios, especialmente cuando se envían todas las referencias a la vez (por ejemplo, con la opción **--mirror**), consulte [Migrar de forma incremental un repositorio](how-to-push-large-repositories.md).

Puede eliminar la *aws-codecommit-demo* carpeta y su contenido después de migrar el repositorio a CodeCommit. Para crear un repositorio local con todas las referencias correctas para trabajar con el repositorio CodeCommit, ejecuta el `git clone` comando sin la `--mirror` opción:

```
git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository
```

## Paso 3: Ver los archivos en CodeCommit
<a name="how-to-migrate-existing-view"></a>

Una vez que haya introducido el contenido de su directorio, podrá utilizar la CodeCommit consola para ver rápidamente todos los archivos de ese repositorio.

1. Abre la CodeCommit consola en [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. En **Repositorios**, elige el nombre del repositorio (por ejemplo,). *MyClonedRepository* 

1. Consulta los archivos del repositorio para ver las ramas, el clon URLs, la configuración y mucho más.  
![\[Vista de un repositorio clonado en CodeCommit\]](http://docs.aws.amazon.com/es_es/codecommit/latest/userguide/images/codecommit-cloned-repo-url.png)

## Paso 4: Compartir el repositorio CodeCommit
<a name="how-to-migrate-existing-share"></a>

Al crear un repositorio en CodeCommit, se generan dos puntos de conexión: uno para las conexiones HTTPS y otro para las conexiones SSH. Ambas proporcionan conexiones seguras a través de una red. Los usuarios pueden utilizar cualquiera de los dos protocolos. Ambos puntos de enlace permanecen activos, independientemente del protocolo que recomiende a los usuarios. Antes de poder compartir sus repositorios con otros usuarios, debe crear políticas de IAM que permitan a otros usuarios acceder a su repositorio. Proporcione las instrucciones de acceso a sus usuarios. 

**Creación de una política administrada por el cliente para su repositorio**

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. En el área de navegación **Dashboard**, elija **Policies** y, a continuación, seleccione **Create Policy**. 

1. En la página **Crear política**, seleccione **Importar política administrada**.

1. En la página **Importar políticas administradas**, en **Filtrar políticas**, introduzca **AWSCodeCommitPowerUser**. Seleccione el botón situado junto al nombre de la política y, a continuación, seleccione **Importar**.

1. En la página **Crear política**, elija **JSON**. Sustituya la parte «\$1» de la `Resource` línea correspondiente a CodeCommit las acciones por el nombre de recurso de Amazon (ARN) del CodeCommit repositorio, como se muestra a continuación:

   ```
   "Resource": [
    "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo"
    ]
   ```
**sugerencia**  
**Para buscar el ARN del CodeCommit repositorio, vaya a la CodeCommit consola, elija el nombre del repositorio de la lista y, a continuación, elija Configuración.** Para obtener más información, consulte [Visualización de la información de los repositorios](how-to-view-repository-details.md).

   Si desea que esta política se aplique a más de un repositorio, añada cada repositorio como recurso y especifique su ARN. Añada una coma entre cada declaración de recursos, tal y como se muestra aquí:

   ```
   "Resource": [
    "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
    "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo"
    ]
   ```

   Cuando haya terminado de editar, seleccione **Revisar la política**.

1. En la página **de revisión de la política**, en **Nombre**, introduzca un nombre nuevo para la política (por ejemplo,*AWSCodeCommitPowerUser-MyDemoRepo*). Opcionalmente, puede proporcionar una descripción opcional para esta política.

1. Seleccione **Crear política**.

Para administrar el acceso a su repositorio, cree un grupo para los usuarios de IAM, añada usuarios de IAM a este grupo y adjunte la política administrada por el cliente que haya creado en el paso anterior. Adjunte cualquier otra política necesaria para el acceso, como IAMUser SSHKeys oIAMSelfManageServiceSpecificCredentials. 

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el área de navegación **Dashboard**, elija **Groups** y, a continuación, seleccione **Create New Group**. 

1. En la página **Set Group Name (Establecer nombre del grupo)**, en **Group Name (Nombre del grupo)**, introduzca un nombre para el grupo (por ejemplo, *MyDemoRepoGroup*) y seleccione **Next Step (Siguiente paso)**. Tenga en cuenta la posibilidad de incluir el nombre del repositorio como parte del nombre del grupo.
**nota**  
Este nombre debe ser exclusivo de una cuenta de Amazon Web Services.

1. Selecciona la casilla situada junto a la política gestionada por el cliente que creaste en la sección anterior (por ejemplo, **AWSCodeCommitPowerUser-MyDemoRepo**). 

1. En la página **Review**, elija **Create Group**. IAM crea este grupo con las políticas especificadas ya adjuntas. El grupo aparece en la lista de grupos asociados con su cuenta de Amazon Web Services.

1. Seleccione su grupo de la lista. 

1. En la página de resumen de grupo, elija la pestaña **Users** y, continuación, seleccione **Add Users to Group**. En la lista que muestra todos los usuarios asociados a tu cuenta de Amazon Web Services, selecciona las casillas situadas junto a los usuarios a los que quieres permitir el acceso al CodeCommit repositorio y, a continuación, selecciona **Añadir usuarios**.
**sugerencia**  
Puede usar el cuadro de búsqueda para encontrar rápidamente a los usuarios por su nombre.

1. Cuando haya agregado sus usuarios, cierre la consola de IAM.

Una vez que haya creado un usuario de IAM al que pueda acceder CodeCommit mediante el grupo de políticas y las políticas que configuró, envíe a ese usuario la información necesaria para conectarse al repositorio.

1. Abra la CodeCommit consola en [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. En el selector de regiones, elija el Región de AWS lugar donde se creó el repositorio. Los repositorios son específicos de un Región de AWS. Para obtener más información, consulte [Regiones y puntos de conexión de Git](regions.md).

1. En la página **Repositories (Repositorios)**, elija el repositorio que desea compartir. 

1. En **Clone URL (URL de clonación)**, elija el protocolo que desee que utilicen los usuarios. Esto copiará la URL de clonación del protocolo de conexión. 

1. Envía a tus usuarios la URL del clon junto con cualquier otra instrucción, como instalar AWS CLI, configurar un perfil o instalar Git. Asegúrese de incluir la información de configuración para el protocolo de conexión (por ejemplo, HTTPS). 

# Migre contenido local o no versionado a AWS CodeCommit
<a name="how-to-migrate-repository-local"></a>

Los procedimientos de este tema muestran cómo migrar un proyecto o contenido local existente en su equipo a un CodeCommit repositorio. Como parte de este proceso:
+ Complete la configuración inicial necesaria para CodeCommit.
+ Cree un CodeCommit repositorio.
+ Coloca una carpeta local bajo el control de versiones de Git y envía el contenido de esa carpeta al CodeCommit repositorio.
+ Visualiza los archivos del CodeCommit repositorio.
+ Comparte el CodeCommit repositorio con tu equipo.

![\[Migrar un proyecto local a CodeCommit\]](http://docs.aws.amazon.com/es_es/codecommit/latest/userguide/images/codecommit-migrate-local.png)


**Topics**
+ [

## Paso 0: Se requiere una configuración para acceder a CodeCommit
](#how-to-migrate-local-setup)
+ [

## Paso 1: Crea un repositorio CodeCommit
](#how-to-migrate-local-create)
+ [

## Paso 2: migra el contenido local al CodeCommit repositorio
](#how-to-migrate-local-version)
+ [

## Paso 3: Ver los archivos en CodeCommit
](#how-to-migrate-local-view)
+ [

## Paso 4: Comparte el CodeCommit repositorio
](#how-to-migrate-local-share)

## Paso 0: Se requiere una configuración para acceder a CodeCommit
<a name="how-to-migrate-local-setup"></a>

Antes de poder migrar el contenido local a CodeCommit, debe crear y configurar un usuario de IAM para el acceso al equipo local CodeCommit y configurarlo. También deberá instalar la AWS CLI para administrar CodeCommit. Aunque puedes realizar la mayoría de CodeCommit las tareas sin él, AWS CLI ofrece flexibilidad a la hora de trabajar con Git. 

Si ya lo tienes configurado CodeCommit, puedes pasar a[Paso 1: Crea un repositorio CodeCommit](#how-to-migrate-local-create).

**Para crear y configurar un usuario de IAM para acceder CodeCommit**

1. Para crear una cuenta de Amazon Web Services, acceda a [http://aws.amazon.com](https://aws.amazon.com/) y seleccione **Registrarse**.

1. Cree un usuario de IAM o use uno existente en su cuenta de Amazon Web Services. Asegúrese de que tiene un ID de clave de acceso y una clave de acceso secreta asociados a ese usuario de IAM. Para obtener más información, consulte [Creación de un usuario de IAM en su cuenta de Amazon Web Services](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html).
**nota**  
CodeCommit requiere AWS Key Management Service. Si utiliza un usuario de IAM existente, asegúrese de que no haya políticas adjuntas al usuario que denieguen expresamente las AWS KMS acciones requeridas por CodeCommit él. Para obtener más información, consulte [AWS KMS y cifrado](encryption.md).

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. En la consola de IAM, en el panel de navegación, elija **Usuarios** y, a continuación, elija el usuario de IAM que desee configurar para el acceso. CodeCommit 

1. En la pestaña **Permissions**, seleccione **Add Permissions**. 

1. En **Grant permissions**, elija **Attach existing policies directly**.

1. En la lista de políticas, seleccione **AWSCodeCommitPowerUser**u otra política gestionada de CodeCommit acceso. Para obtener más información, consulte [AWS políticas gestionadas para CodeCommit](security-iam-awsmanpol.md).

   Una vez que haya seleccionado la política que desee asociar, seleccione **Siguiente: Revisar** para revisar la lista de políticas que se van a asociar al usuario de IAM. Si la lista es correcta, seleccione **Add permissions**.

    Para obtener más información sobre las políticas CodeCommit administradas y sobre cómo compartir el acceso a los repositorios con otros grupos y usuarios, consulte [Compartir un repositorio](how-to-share-repository.md) y[Autenticación y control de acceso para AWS CodeCommit](auth-and-access-control.md).

**Para instalar y configurar el AWS CLI**

1. En su máquina local, descargue e instale el AWS CLI. Este es un requisito previo para interactuar con él CodeCommit desde la línea de comandos. Le recomendamos que instale la versión 2 de AWS CLI . Es la versión principal más reciente AWS CLI y es compatible con todas las funciones más recientes. Es la única versión de la AWS CLI que admite el uso de una cuenta raíz, un acceso federado o credenciales temporales con**git-remote-codecommit**.

   Para obtener más información, consulte [Cómo configurar la interfaz de línea de AWS comandos](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html).
**nota**  
CodeCommit solo funciona con AWS CLI las versiones 1.7.38 y posteriores. Como práctica recomendada, instale o actualice AWS CLI a la última versión disponible. Para determinar qué versión de la AWS CLI ha instalado, ejecute el **aws --version** comando.  
Para actualizar una versión anterior AWS CLI a la versión más reciente, consulte [Instalación del AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html).

1. Ejecute este comando para comprobar que los CodeCommit comandos de AWS CLI están instalados.

   ```
   aws codecommit help
   ```

   Este comando devuelve una lista de CodeCommit comandos.

1. Configure el AWS CLI con un perfil mediante el **configure** comando, de la siguiente manera:.

   ```
   aws configure
   ```

   Cuando se le solicite, especifique la clave de AWS acceso y la clave de acceso AWS secreta del usuario de IAM con CodeCommit el que va a utilizarlas. Además, asegúrese de especificar Región de AWS dónde se encuentra el repositorio, por ejemplo`us-east-2`. Cuando se le pregunte el formato de salida predeterminado, indique `json`. Por ejemplo, si está configurando un perfil para un usuario de IAM:

   ```
   AWS Access Key ID [None]: Type your IAM user AWS access key ID here, and then press Enter
   AWS Secret Access Key [None]: Type your IAM user AWS secret access key here, and then press Enter
   Default region name [None]: Type a supported region for CodeCommit here, and then press Enter
   Default output format [None]: Type json here, and then press Enter
   ```

   Para obtener más información sobre la creación y configuración de perfiles para utilizarlos con el AWS CLI, consulte lo siguiente:
   + [Perfiles con nombre](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
   + [Uso de un rol de IAM en el AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)
   + [Comando Set](https://docs.aws.amazon.com/cli/latest/reference/set.html)
   + [Conexión a AWS CodeCommit repositorios con credenciales rotativas](temporary-access.md)

   Para conectarse a un repositorio o un recurso de otro Región de AWS, debe volver a configurarlo AWS CLI con el nombre de región predeterminado. Los nombres de región predeterminados admitidos CodeCommit incluyen:
   + us-east-2
   + us-east-1
   + eu-west-1
   + us-west-2
   + ap-northeast-1
   + ap-southeast-1
   + ap-southeast-2
   + ap-southeast-3
   + me-central-1
   + eu-central-1
   + ap-northeast-2
   + sa-east-1
   + us-west-1
   + eu-west-2
   + ap-south-1
   + ap-south-1
   + ca-central-1
   + us-gov-west-1
   + us-gov-east-1
   + eu-north-1
   + ap-east-1
   + me-south-1
   + cn-north-1
   + cn-northwest-1
   + eu-south-1
   + ap-northeast-3
   + af-south-1
   + il-central-1

   Para obtener más información sobre CodeCommit y Región de AWS, consulte[Regiones y puntos de conexión de Git](regions.md). Para obtener más información sobre IAM, claves de acceso y claves secretas, consulte [¿Cómo puedo obtener credenciales?](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_Introduction.html#IAM_SecurityCredentials) y [Gestión de claves de acceso para usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html). Para obtener más información sobre los perfiles AWS CLI y, consulte [Perfiles con nombre](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

A continuación, deberá instalar Git. 
+ **Para Linux, macOS o Unix**:

  Para trabajar con archivos, confirmaciones y otra información de los CodeCommit repositorios, debes instalar Git en tu máquina local. CodeCommit es compatible con las versiones 1.7.9 y posteriores de Git. La versión 2.28 de Git admite la configuración del nombre de la ramificación para las confirmaciones iniciales. Recomendamos usar una versión reciente de Git.

  Para instalar Git, le recomendamos sitios web como [Git Downloads](http://git-scm.com/downloads).
**nota**  
Git es una plataforma en evolución que se actualiza periódicamente. En ocasiones, un cambio en una función puede afectar a su funcionamiento. CodeCommit Si tienes problemas con una versión específica de Git CodeCommit, consulta la información en[Solución de problemas](troubleshooting.md).
+ **Para Windows:** 

  Para trabajar con archivos, confirmaciones y otra información de los CodeCommit repositorios, debes instalar Git en tu máquina local. CodeCommit es compatible con las versiones 1.7.9 y posteriores de Git. La versión 2.28 de Git admite la configuración del nombre de la ramificación para las confirmaciones iniciales. Recomendamos usar una versión reciente de Git.

  Para instalar Git, le recomendamos sitios web como [Git for Windows](https://gitforwindows.org/). Si utiliza este enlace para instalar Git, puede aceptar todos los ajustes predeterminados de la instalación excepto los siguientes: 
  + Cuando se le pida durante el paso **Ajustar su entorno PATH**, seleccione la opción de usar Git desde la línea de comandos.
  + (Opcional) Si pretendes usar HTTPS con el asistente de credenciales que viene incluido en el en AWS CLI lugar de configurar las credenciales de Git para CodeCommit, en la página **Configuración de opciones adicionales**, asegúrate de que la opción Habilitar el **administrador de credenciales de Git esté desactivada**. El administrador de credenciales de Git solo es compatible CodeCommit si los usuarios de IAM configuran las credenciales de Git. Para obtener más información, consulte [Para usuarios HTTPS mediante credenciales de Git](setting-up-gc.md) y [Git para Windows: he instalado Git para Windows, pero no tengo permiso para acceder a mi repositorio (403)](troubleshooting-ch.md#troubleshooting-windowshttps).
**nota**  
Git es una plataforma en evolución que se actualiza periódicamente. En ocasiones, un cambio en una función puede afectar a su funcionamiento. CodeCommit Si tienes problemas con una versión específica de Git CodeCommit, consulta la información en[Solución de problemas](troubleshooting.md).

CodeCommit admite la autenticación HTTPS y SSH. Para completar la configuración, debes configurar las credenciales de Git para CodeCommit (HTTPS, recomendado para la mayoría de los usuarios), un par de claves SSH (SSH) para usar al acceder CodeCommit **git-remote-codecommit** (recomendado para los usuarios que usan acceso federado) o el asistente de credenciales incluido en el. AWS CLI
+ Para las credenciales de Git en todos los sistemas operativos compatibles, consulte [Paso 3: Crear credenciales de Git para las conexiones HTTPS a CodeCommit](setting-up-gc.md#setting-up-gc-iam).
+ Para SSH en Linux, macOS o Unix, consulte [SSH y Linux, macOS o Unix: configura las claves públicas y privadas para Git y CodeCommit](setting-up-ssh-unixes.md#setting-up-ssh-unixes-keys-unixes).
+  Para SSH en Windows, consulte [Paso 3: Configura las claves públicas y privadas para Git y CodeCommit](setting-up-ssh-windows.md#setting-up-ssh-windows-keys-windows).
+ Para **git-remote-codecommit**, consulte [Pasos de configuración para las conexiones HTTPS a AWS CodeCommit con git-remote-codecommit](setting-up-git-remote-codecommit.md).
+ Para ver el ayudante de credenciales en Linux, macOS o Unix, consulte [Configurar el ayudante de credenciales (Linux, macOS o Unix)](setting-up-https-unixes.md#setting-up-https-unixes-ch-config).
+ Para el auxiliar de credenciales en Windows, consulte [Configuración del auxiliar de credenciales (Windows)](setting-up-https-windows.md#setting-up-https-windows-ch-config).

## Paso 1: Crea un repositorio CodeCommit
<a name="how-to-migrate-local-create"></a>

En esta sección, utilizará la CodeCommit consola para crear el CodeCommit repositorio que utilizará para el resto de este tutorial. Para usar la AWS CLI para crear el repositorio, consulte[Creación de un repositorio (AWS CLI)](how-to-create-repository.md#how-to-create-repository-cli).

1. Abra la CodeCommit consola en [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. En el selector de regiones, elige Región de AWS dónde quieres crear el repositorio. Para obtener más información, consulte [Regiones y puntos de conexión de Git](regions.md).

1. En la página **Repositorios**, seleccione **Crear repositorio**. 

1. En la página **Create repository (Crear repositorio)**, en el campo **Repository name (Nombre de repositorio)**, escriba un nombre para el repositorio.
**nota**  
Los nombres de repositorio distinguen entre mayúsculas y minúsculas. El nombre debe ser único en la Región de AWS y de su cuenta de Amazon Web Services.

1. (Opcional) En **Descripción**, introduzca una descripción para el repositorio. Esto puede ayudarle a usted y a otros usuarios a conocer el propósito del repositorio. 
**nota**  
El campo de descripción muestra Marcado en la consola y acepta todos los caracteres HTML y caracteres Unicode válidos. Si es un desarrollador de aplicaciones que utiliza `GetRepository` o `BatchGetRepositories` APIs y tiene previsto mostrar el campo de descripción del repositorio en un navegador web, consulte la [referencia de la CodeCommit API](https://docs.aws.amazon.com/codecommit/latest/APIReference/).

1. (Opcional) Selecciona **Añadir etiqueta** para añadir una o más etiquetas de repositorio (una etiqueta de atributo personalizada que te ayuda a organizar y gestionar tus AWS recursos) a tu repositorio. Para obtener más información, consulte [Etiquetar repositorios en AWS CodeCommit](how-to-tag-repository.md).

1. (Opcional) Amplíe la **configuración adicional** para especificar si desea utilizar la clave predeterminada Clave administrada de AWS o la propia clave gestionada por el cliente para cifrar y descifrar los datos de este repositorio. Si decide utilizar su propia clave gestionada por el cliente, debe asegurarse de que esté disponible en el Región de AWS lugar donde vaya a crear el repositorio y de que la clave esté activa. Para obtener más información, consulte [AWS Key Management Service y cifrado para AWS CodeCommit repositorios](encryption.md).

1. (Opcional) Seleccione **Habilitar Amazon CodeGuru Reviewer para Java y Python** si este repositorio contiene código Java o Python y desea que CodeGuru Reviewer lo analice. CodeGuru Reviewer utiliza varios modelos de aprendizaje automático para detectar defectos en el código y sugerir mejoras y correcciones en las solicitudes de incorporación de cambios. Para obtener más información, consulte la [https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/Welcome.html](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/Welcome.html).

1. Seleccione **Crear**. 

Una vez creado, el repositorio aparece en la lista **Repositories (Repositorios)**. En la columna URL, seleccione el icono de copia y, a continuación, elija el protocolo (HTTPS o SSH) que se utiliza para conectar a CodeCommit. Copie la dirección URL.

Por ejemplo, si has asignado un nombre a tu repositorio *MyFirstRepo* y utilizas HTTPS, la URL tendría el siguiente aspecto:

```
https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyFirstRepo
```

Necesita esta URL más adelante en [Paso 2: migra el contenido local al CodeCommit repositorio](#how-to-migrate-local-version).

## Paso 2: migra el contenido local al CodeCommit repositorio
<a name="how-to-migrate-local-version"></a>

Ahora que tienes un CodeCommit repositorio, puedes elegir un directorio en tu computadora local para convertirlo en un repositorio Git local. El comando **git init** se puede utilizar para convertir el contenido sin versión existente en un repositorio de Git o, si aún no dispone de archivos o contenido, para inicializar un nuevo repositorio vacío.

1. En el terminal o en la línea de comandos del equipo local, cambie los directorios al directorio que desee utilizar como origen del repositorio.

1. Ejecute el siguiente comando para configurar Git para que use una ramificación predeterminada llamada **main**:

   ```
   git config --local init.defaultBranch main
   ```

   También puede ejecutar este comando para establecer como nombre de ramificación predeterminado todos los repositorios de **main** recién creados:

   ```
   git config --global init.defaultBranch main
   ```

1. Ejecute el comando **git init** para inicializar el control de versiones de Git en el directorio. En la raíz del directorio se crea un subdirectorio .git que permite realizar un seguimiento del control de versiones. La carpeta .git también contiene todos los metadatos que necesita el repositorio. 

   ```
   git init
   ```

1. Compruebe el estado del directorio inicializado ejecutando el siguiente comando:

   ```
   git status
   ```

   Añada los archivos que desea incluir en el control de versiones. En este tutorial, ejecuta el comando `git add` con el especificador `.` para añadir todos los archivos de este directorio. Para ver otras opciones, consulte la documentación de Git. 

   ```
   git add .
   ```

1. Cree una confirmación para añadir archivos con un mensaje de confirmación. 

   ```
   git commit -m "Initial commit"
   ```

1. Ejecuta el **git push** comando especificando la URL y el nombre del CodeCommit repositorio de destino y la `--all` opción. (Esta es la URL que copió en [Paso 1: Crea un repositorio CodeCommit](#how-to-migrate-local-create)).

   Por ejemplo, si has asignado un nombre a tu repositorio *MyFirstRepo* y estás configurado para usar HTTPS, debes ejecutar el siguiente comando:

   ```
   git push https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyFirstRepo --all
   ```

## Paso 3: Ver los archivos en CodeCommit
<a name="how-to-migrate-local-view"></a>

Después de introducir el contenido de su directorio, puede utilizar la CodeCommit consola para ver rápidamente todos los archivos del repositorio.

1. Abre la CodeCommit consola en [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. En **Repositorios**, elija el nombre del repositorio (por ejemplo,*MyFirstRepository*) de la lista. 

1. Vea los archivos del repositorio para ver las ramas, el clon URLs, la configuración y más.

## Paso 4: Comparte el CodeCommit repositorio
<a name="how-to-migrate-local-share"></a>

Al crear un repositorio en CodeCommit, se generan dos puntos de conexión: uno para las conexiones HTTPS y otro para las conexiones SSH. Ambas proporcionan conexiones seguras a través de una red. Los usuarios pueden utilizar cualquiera de los dos protocolos. Ambos puntos de enlace permanecen activos, independientemente del protocolo que recomiende a los usuarios. Antes de poder compartir sus repositorios con otros usuarios, debe crear políticas de IAM que permitan a otros usuarios acceder a su repositorio. Proporcione las instrucciones de acceso a sus usuarios. 

**Creación de una política administrada por el cliente para su repositorio**

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. En el área de navegación **Dashboard**, elija **Policies** y, a continuación, seleccione **Create Policy**. 

1. En la página **Crear política**, seleccione **Importar política administrada**.

1. En la página **Importar políticas administradas**, en **Filtrar políticas**, introduzca **AWSCodeCommitPowerUser**. Seleccione el botón situado junto al nombre de la política y, a continuación, seleccione **Importar**.

1. En la página **Crear política**, elija **JSON**. Sustituya la parte «\$1» de la `Resource` línea correspondiente a CodeCommit las acciones por el nombre de recurso de Amazon (ARN) del CodeCommit repositorio, como se muestra aquí:

   ```
   "Resource": [
    "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo"
    ]
   ```
**sugerencia**  
**Para buscar el ARN del CodeCommit repositorio, vaya a la CodeCommit consola, elija el nombre del repositorio de la lista y, a continuación, elija Configuración.** Para obtener más información, consulte [Visualización de la información de los repositorios](how-to-view-repository-details.md).

   Si desea que esta política se aplique a más de un repositorio, añada cada repositorio como recurso y especifique su ARN. Añada una coma entre cada declaración de recursos, tal y como se muestra aquí:

   ```
   "Resource": [
    "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
    "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo"
    ]
   ```

   Cuando haya terminado de editar, seleccione **Revisar la política**.

1. En la página **de revisión de la política**, en **Nombre**, introduzca un nombre nuevo para la política (por ejemplo,*AWSCodeCommitPowerUser-MyDemoRepo*). Opcionalmente, puede proporcionar una descripción opcional para esta política.

1. Seleccione **Crear política**.

Para administrar el acceso a su repositorio, cree un grupo para los usuarios de IAM, añada usuarios de IAM a este grupo y adjunte la política administrada por el cliente que haya creado en el paso anterior. Adjunte cualquier otra política necesaria para el acceso, como, por ejemplo, `IAMSelfManageServiceSpecificCredentials` o `IAMUserSSHKeys`. 

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el área de navegación **Dashboard**, elija **Groups** y, a continuación, seleccione **Create New Group**. 

1. En la página **Set Group Name (Establecer nombre del grupo)**, en **Group Name (Nombre del grupo)**, introduzca un nombre para el grupo (por ejemplo, *MyDemoRepoGroup*) y seleccione **Next Step (Siguiente paso)**. Tenga en cuenta la posibilidad de incluir el nombre del repositorio como parte del nombre del grupo.
**nota**  
Este nombre debe ser exclusivo de una cuenta de Amazon Web Services.

1. Selecciona la casilla situada junto a la política gestionada por el cliente que creaste en la sección anterior (por ejemplo, **AWSCodeCommitPowerUser-MyDemoRepo**). 

1. En la página **Review**, elija **Create Group**. IAM crea este grupo con las políticas especificadas ya adjuntas. El grupo aparece en la lista de grupos asociados con su cuenta de Amazon Web Services.

1. Seleccione su grupo de la lista. 

1. En la página de resumen de grupo, elija la pestaña **Users** y, continuación, seleccione **Add Users to Group**. En la lista que muestra todos los usuarios asociados a tu cuenta de Amazon Web Services, selecciona las casillas situadas junto a los usuarios a los que quieres permitir el acceso al CodeCommit repositorio y, a continuación, selecciona **Añadir usuarios**.
**sugerencia**  
Puede usar el cuadro de búsqueda para encontrar rápidamente a los usuarios por su nombre.

1. Cuando haya agregado sus usuarios, cierre la consola de IAM.

Una vez que haya creado un usuario de IAM para utilizarlo como acceso CodeCommit mediante el grupo de políticas y las políticas que configuró, envíe a ese usuario la información necesaria para conectarse al repositorio.

1. Abra la CodeCommit consola en [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. En el selector de regiones, elija el Región de AWS lugar donde se creó el repositorio. Los repositorios son específicos de un Región de AWS. Para obtener más información, consulte [Regiones y puntos de conexión de Git](regions.md).

1. En la página **Repositories (Repositorios)**, elija el repositorio que desea compartir. 

1. En **Clone URL (URL de clonación)**, elija el protocolo que desee que utilicen los usuarios. Esto copiará la URL de clonación del protocolo de conexión. 

1. Envía a tus usuarios la URL del clon junto con cualquier otra instrucción, como instalar AWS CLI, configurar un perfil o instalar Git. Asegúrese de incluir la información de configuración para el protocolo de conexión (por ejemplo, HTTPS). 

# Migrar de forma incremental un repositorio
<a name="how-to-push-large-repositories"></a>

Al migrar a AWS CodeCommit, considere la posibilidad de enviar su repositorio en incrementos o fragmentos para reducir las posibilidades de que un problema de red intermitente o una degradación del rendimiento de la red provoque un error en toda la transferencia. Al realizar envíos incrementales con un script como el incluido aquí, puede reiniciar la migración y enviar únicamente aquellas confirmaciones que no se hayan podido enviar en el primer intento.

Los procedimientos incluidos en este tema explican cómo crear y ejecutar un script que migre su repositorio de forma incremental y envíe de nuevo solo aquellos fragmentos que no se han podido enviar hasta que se complete toda la migración.

Estas instrucciones se han redactado presuponiendo que ya ha completado los pasos indicados en [Configuración ](setting-up.md) y [Creación de un repositorio](how-to-create-repository.md). 

**Topics**
+ [

## Paso 0: Determinar si realizar una migración de forma incremental
](#how-to-push-large-repositories-determine)
+ [

## Paso 1: Instale los requisitos previos y añada el CodeCommit repositorio como remoto
](#how-to-push-large-repositories-prereq)
+ [

## Paso 2: Crear el script para migrar de forma incremental
](#how-to-push-large-repositories-createscript)
+ [

## Paso 3: Ejecute el script y migre de forma incremental a CodeCommit
](#how-to-push-large-repositories-runscript)
+ [

## Anexo: script de muestra `incremental-repo-migration.py`
](#how-to-push-large-repositories-sample)

## Paso 0: Determinar si realizar una migración de forma incremental
<a name="how-to-push-large-repositories-determine"></a>

A la hora de determinar el tamaño total de su repositorio y decidir si migrar de forma incremental, debe considerar determinados factores. El factor más evidente es el tamaño total de los elementos del repositorio. Los factores, como el historial acumulado del repositorio, también pueden contribuir al tamaño. Un repositorio con años de historia y ramificaciones puede ser muy grande, aunque sus elementos individuales no lo sean. Puede utilizar distintas estrategias para simplificar la migración de estos repositorios y que sea más eficaz. Por ejemplo, puede utilizar una estrategia de clonación superficial para clonar un repositorio con un largo historial de desarrollo o puede desactivar la compresión delta para archivos binarios grandes. Puede buscar otras opciones en la documentación de Git o puede optar por establecer y configurar envíos incrementales para migrar el repositorio utilizando el script de muestra incluido en este tema `incremental-repo-migration.py`. 

Es posible que le interese configurar envíos incrementales en caso de que se cumpla una o más de las siguientes condiciones:
+ El repositorio que desea migrar tiene más de cinco años de historia.
+ Su conexión a Internet está sometida a interrupciones intermitentes, pérdidas de paquetes, respuestas lentas o cualquier otra interrupción del servicio.
+ El tamaño total del repositorio es superior a 2 GB e intenta migrar todo el repositorio.
+ El repositorio contiene elementos grandes o binarios que no se comprimen bien, como archivos de imágenes grandes con más de cinco versiones controladas.
+ Ya has intentado realizar una migración CodeCommit y has recibido un mensaje de «error de servicio interno». 

Aunque no se cumpla ninguna de las condiciones anteriores, también puede optar por enviar de forma incremental.

## Paso 1: Instale los requisitos previos y añada el CodeCommit repositorio como remoto
<a name="how-to-push-large-repositories-prereq"></a>

Puede crear su propio script personalizado con sus propios requisitos previos. Si utiliza el ejemplo incluido en este tema, debe:
+ Instalar los requisitos previos.
+ Clonar el repositorio en su equipo local.
+ Añada el CodeCommit repositorio como remoto al repositorio que desee migrar.

**Configurado para ejecutar incremental-repo-migration .py**

1.  En el equipo local, instale Python 2.6 o posterior. Para obtener más información y las versiones más recientes, consulte [el sitio web de Python](https://www.python.org/downloads/).

1. En la misma computadora, instale GitPython, que es una biblioteca de Python que se usa para interactuar con los repositorios de Git. Para obtener más información, consulte la [documentación de GitPython](http://gitpython.readthedocs.org/en/stable/).

1.  Utilice el comando **git clone --mirror** para clonar el repositorio que desea migrar a su equipo local. Desde el terminal (Linux, macOS o Unix) o el símbolo del sistema (Windows), utilice el comando **git clone --mirror** para crear un repositorio local para el repositorio, incluido el directorio en el que desea crear el repositorio local. Por ejemplo, para clonar un repositorio de Git llamado *MyMigrationRepo* con una URL *https://example.com/my-repo/* de en un directorio llamado*my-repo*:

   ```
   git clone --mirror https://example.com/my-repo/MyMigrationRepo.git my-repo
   ```

   El resultado debería ser similar al siguiente, que indica que el repositorio se ha clonado en un repositorio local vacío denominado my-repo:

   ```
   Cloning into bare repository 'my-repo'...
   remote: Counting objects: 20, done.
   remote: Compressing objects: 100% (17/17), done.
   remote: Total 20 (delta 5), reused 15 (delta 3)
   Unpacking objects: 100% (20/20), done.
   Checking connectivity... done.
   ```

1. Cambia los directorios al repositorio local del repositorio que acabas de clonar (por ejemplo,*my-repo*). En ese directorio, utilice el comando **git remote add *DefaultRemoteName* *RemoteRepositoryURL*** para añadir el repositorio de CodeCommit como repositorio remoto del repositorio local.
**nota**  
Si envía repositorios de gran tamaño, considere la posibilidad de utilizar SSH en lugar de HTTPS. Si envía un cambio grande, un gran número de cambios o un repositorio grande, a menudo las conexiones HTTPS de ejecución prolongada suelen interrumpirse de forma prematura debido a problemas de red o de configuración del cortafuegos. Para obtener más información sobre la configuración de CodeCommit SSH, consulte o. [Para conexiones SSH en Linux, macOS o Unix](setting-up-ssh-unixes.md) [Para conexiones SSH en Windows](setting-up-ssh-windows.md)

    Por ejemplo, utilice el siguiente comando para añadir el punto de conexión SSH a un CodeCommit repositorio MyDestinationRepo denominado repositorio remoto para el nombre remoto: `codecommit` 

   ```
   git remote add codecommit ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDestinationRepo
   ```
**sugerencia**  
Dado que se trata de un clon, el nombre remoto predeterminado (`origin`) ya está en uso. Deberá utilizar otro nombre remoto. Aunque el ejemplo utiliza `codecommit`, puede usar el nombre que desee. Utilice el comando **git remote show** para revisar la lista de remotos configurados para su repositorio local.

1. Utilice el comando **git remote -v** para mostrar la búsqueda y el envío de la configuración de su repositorio local y confirmar que están configurados correctamente. Por ejemplo:

   ```
   codecommit  ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDestinationRepo (fetch)
   codecommit  ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDestinationRepo (push)
   ```
**sugerencia**  
Si siguen apareciendo entradas de búsqueda y envío para otro repositorio remoto (por ejemplo, entradas de origen), utilice el comando **git remote set-url --delete** para eliminarlas.

## Paso 2: Crear el script para migrar de forma incremental
<a name="how-to-push-large-repositories-createscript"></a>

Estos pasos se han escrito partiendo del supuesto de que está utilizando el script de ejemplo `incremental-repo-migration.py`. 

1. Abra un editor de texto y pegue el contenido [del script de muestra](#how-to-push-large-repositories-sample) en un documento vacío.

1. Guarde el documento en un directorio de documentos (no el directorio de trabajo de su repositorio local) y nómbrelo `incremental-repo-migration.py`. Asegúrese de que el directorio que elija esté configurado en sus variables del entorno local o de la ruta, para poder ejecutar el script de Python desde una línea de comandos o terminal.

## Paso 3: Ejecute el script y migre de forma incremental a CodeCommit
<a name="how-to-push-large-repositories-runscript"></a>

 Ahora que ha creado su `incremental-repo-migration.py` script, puede usarlo para migrar de forma incremental un repositorio local a un repositorio. CodeCommit De forma predeterminada, el script envía las confirmaciones en lotes de 1 000 e intenta utilizar la configuración de Git para el directorio desde el que se ejecuta como la configuración del repositorio local y del repositorio remoto. Puede utilizar las opciones incluidas en `incremental-repo-migration.py` para configurar otros ajustes, si es necesario.

1. Desde el terminal o la línea de comandos, cambie los directorios al repositorio local al que desea migrar.

1. Desde el directorio ejecute el siguiente comando:

   ```
   python incremental-repo-migration.py
   ```

1. El script se ejecuta y muestra el progreso en el terminal o en la línea de comandos. El progreso de algunos repositorios grandes es más lento. El script se detiene si intenta enviarlo sin éxito tres veces seguidas. A continuación, podrá volver a ejecutar el script que empieza de nuevo desde el lote que ha devuelto un error. Podrá volver a ejecutar el script hasta que todo se envíe correctamente y se haya completado la migración.

**sugerencia**  
Puede ejecutar `incremental-repo-migration.py` desde cualquier directorio siempre y cuando utilice las opciones `-l` y `-r` para especificar la configuración local y remota. Por ejemplo, si quieres usar el script de cualquier directorio para migrar un repositorio local ubicado en /tmp/ *my-repo* a un remoto con el siguiente apodo: *codecommit*  

```
python incremental-repo-migration.py -l "/tmp/my-repo" -r "codecommit" 
```
 También puede utilizar la opción `-b` para cambiar el tamaño del lote predeterminado utilizado para los envíos incrementales. Por ejemplo, si envía regularmente un repositorio con archivos binarios muy grandes que cambian con frecuencia y trabaja desde una ubicación con un ancho de banda de la red limitado, le recomendamos que utilice la opción `-b` para cambiar el tamaño de 1 000 a 500. Por ejemplo:  

```
python incremental-repo-migration.py -b 500
```
De este modo, el repositorio local envía de forma incremental en lotes de 500 confirmaciones. Si decide cambiar el tamaño del lote de nuevo al migrar el repositorio (por ejemplo, si decide reducir el tamaño del lote después de un intento erróneo), recuerde utilizar la opción `-c` para eliminar las etiquetas del lote antes de restablecer el tamaño del lote con `-b`:  

```
python incremental-repo-migration.py -c
python incremental-repo-migration.py -b 250
```

**importante**  
No utilice la opción `-c` si desea volver a ejecutar el script después de un intento erróneo. La opción `-c` elimina las etiquetas que se utilizan para crear los lotes de confirmaciones. Utilice la opción `-c` solo si desea cambiar el tamaño del lote y empezar de nuevo, o si decide que ya no quiere utilizar el script.

## Anexo: script de muestra `incremental-repo-migration.py`
<a name="how-to-push-large-repositories-sample"></a>

Para su comodidad, hemos desarrollado un script de Python de muestra, `incremental-repo-migration.py`, para enviar un repositorio de forma incremental. Este script es un ejemplo de código abierto y se proporciona tal cual.

```
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Amazon Software License (the "License").
# You may not use this file except in compliance with the License. A copy of the License is located at
#    http://aws.amazon.com/asl/
# This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied. See the License for
# the specific language governing permissions and limitations under the License.

#!/usr/bin/env python

import os
import sys
from optparse import OptionParser
from git import Repo, TagReference, RemoteProgress, GitCommandError


class PushProgressPrinter(RemoteProgress):
    def update(self, op_code, cur_count, max_count=None, message=""):
        op_id = op_code & self.OP_MASK
        stage_id = op_code & self.STAGE_MASK
        if op_id == self.WRITING and stage_id == self.BEGIN:
            print("\tObjects: %d" % max_count)


class RepositoryMigration:
    MAX_COMMITS_TOLERANCE_PERCENT = 0.05
    PUSH_RETRY_LIMIT = 3
    MIGRATION_TAG_PREFIX = "codecommit_migration_"

    def migrate_repository_in_parts(
        self, repo_dir, remote_name, commit_batch_size, clean
    ):
        self.next_tag_number = 0
        self.migration_tags = []
        self.walked_commits = set()
        self.local_repo = Repo(repo_dir)
        self.remote_name = remote_name
        self.max_commits_per_push = commit_batch_size
        self.max_commits_tolerance = (
            self.max_commits_per_push * self.MAX_COMMITS_TOLERANCE_PERCENT
        )

        try:
            self.remote_repo = self.local_repo.remote(remote_name)
            self.get_remote_migration_tags()
        except (ValueError, GitCommandError):
            print(
                "Could not contact the remote repository. The most common reasons for this error are that the name of the remote repository is incorrect, or that you do not have permissions to interact with that remote repository."
            )
            sys.exit(1)

        if clean:
            self.clean_up(clean_up_remote=True)
            return

        self.clean_up()

        print("Analyzing repository")
        head_commit = self.local_repo.head.commit
        sys.setrecursionlimit(max(sys.getrecursionlimit(), head_commit.count()))

        # tag commits on default branch
        leftover_commits = self.migrate_commit(head_commit)
        self.tag_commits([commit for (commit, commit_count) in leftover_commits])

        # tag commits on each branch
        for branch in self.local_repo.heads:
            leftover_commits = self.migrate_commit(branch.commit)
            self.tag_commits([commit for (commit, commit_count) in leftover_commits])

        # push the tags
        self.push_migration_tags()

        # push all branch references
        for branch in self.local_repo.heads:
            print("Pushing branch %s" % branch.name)
            self.do_push_with_retries(ref=branch.name)

        # push all tags
        print("Pushing tags")
        self.do_push_with_retries(push_tags=True)

        self.get_remote_migration_tags()
        self.clean_up(clean_up_remote=True)

        print("Migration to CodeCommit was successful")

    def migrate_commit(self, commit):
        if commit in self.walked_commits:
            return []

        pending_ancestor_pushes = []
        commit_count = 1

        if len(commit.parents) > 1:
            # This is a merge commit
            # Ensure that all parents are pushed first
            for parent_commit in commit.parents:
                pending_ancestor_pushes.extend(self.migrate_commit(parent_commit))
        elif len(commit.parents) == 1:
            # Split linear history into individual pushes
            next_ancestor, commits_to_next_ancestor = self.find_next_ancestor_for_push(
                commit.parents[0]
            )
            commit_count += commits_to_next_ancestor
            pending_ancestor_pushes.extend(self.migrate_commit(next_ancestor))

        self.walked_commits.add(commit)

        return self.stage_push(commit, commit_count, pending_ancestor_pushes)

    def find_next_ancestor_for_push(self, commit):
        commit_count = 0

        # Traverse linear history until we reach our commit limit, a merge commit, or an initial commit
        while (
            len(commit.parents) == 1
            and commit_count < self.max_commits_per_push
            and commit not in self.walked_commits
        ):
            commit_count += 1
            self.walked_commits.add(commit)
            commit = commit.parents[0]

        return commit, commit_count

    def stage_push(self, commit, commit_count, pending_ancestor_pushes):
        # Determine whether we can roll up pending ancestor pushes into this push
        combined_commit_count = commit_count + sum(
            ancestor_commit_count
            for (ancestor, ancestor_commit_count) in pending_ancestor_pushes
        )

        if combined_commit_count < self.max_commits_per_push:
            # don't push anything, roll up all pending ancestor pushes into this pending push
            return [(commit, combined_commit_count)]

        if combined_commit_count <= (
            self.max_commits_per_push + self.max_commits_tolerance
        ):
            # roll up everything into this commit and push
            self.tag_commits([commit])
            return []

        if commit_count >= self.max_commits_per_push:
            # need to push each pending ancestor and this commit
            self.tag_commits(
                [
                    ancestor
                    for (ancestor, ancestor_commit_count) in pending_ancestor_pushes
                ]
            )
            self.tag_commits([commit])
            return []

        # push each pending ancestor, but roll up this commit
        self.tag_commits(
            [ancestor for (ancestor, ancestor_commit_count) in pending_ancestor_pushes]
        )
        return [(commit, commit_count)]

    def tag_commits(self, commits):
        for commit in commits:
            self.next_tag_number += 1
            tag_name = self.MIGRATION_TAG_PREFIX + str(self.next_tag_number)

            if tag_name not in self.remote_migration_tags:
                tag = self.local_repo.create_tag(tag_name, ref=commit)
                self.migration_tags.append(tag)
            elif self.remote_migration_tags[tag_name] != str(commit):
                print(
                    "Migration tags on the remote do not match the local tags. Most likely your batch size has changed since the last time you ran this script. Please run this script with the --clean option, and try again."
                )
                sys.exit(1)

    def push_migration_tags(self):
        print("Will attempt to push %d tags" % len(self.migration_tags))
        self.migration_tags.sort(
            key=lambda tag: int(tag.name.replace(self.MIGRATION_TAG_PREFIX, ""))
        )
        for tag in self.migration_tags:
            print(
                "Pushing tag %s (out of %d tags), commit %s"
                % (tag.name, self.next_tag_number, str(tag.commit))
            )
            self.do_push_with_retries(ref=tag.name)

    def do_push_with_retries(self, ref=None, push_tags=False):
        for i in range(0, self.PUSH_RETRY_LIMIT):
            if i == 0:
                progress_printer = PushProgressPrinter()
            else:
                progress_printer = None

            try:
                if push_tags:
                    infos = self.remote_repo.push(tags=True, progress=progress_printer)
                elif ref is not None:
                    infos = self.remote_repo.push(
                        refspec=ref, progress=progress_printer
                    )
                else:
                    infos = self.remote_repo.push(progress=progress_printer)

                success = True
                if len(infos) == 0:
                    success = False
                else:
                    for info in infos:
                        if (
                            info.flags & info.UP_TO_DATE
                            or info.flags & info.NEW_TAG
                            or info.flags & info.NEW_HEAD
                        ):
                            continue
                        success = False
                        print(info.summary)

                if success:
                    return
            except GitCommandError as err:
                print(err)

        if push_tags:
            print("Pushing all tags failed after %d attempts" % (self.PUSH_RETRY_LIMIT))
        elif ref is not None:
            print("Pushing %s failed after %d attempts" % (ref, self.PUSH_RETRY_LIMIT))
            print(
                "For more information about the cause of this error, run the following command from the local repo: 'git push %s %s'"
                % (self.remote_name, ref)
            )
        else:
            print(
                "Pushing all branches failed after %d attempts"
                % (self.PUSH_RETRY_LIMIT)
            )
        sys.exit(1)

    def get_remote_migration_tags(self):
        remote_tags_output = self.local_repo.git.ls_remote(
            self.remote_name, tags=True
        ).split("\n")
        self.remote_migration_tags = dict(
            (tag.split()[1].replace("refs/tags/", ""), tag.split()[0])
            for tag in remote_tags_output
            if self.MIGRATION_TAG_PREFIX in tag
        )

    def clean_up(self, clean_up_remote=False):
        tags = [
            tag
            for tag in self.local_repo.tags
            if tag.name.startswith(self.MIGRATION_TAG_PREFIX)
        ]

        # delete the local tags
        TagReference.delete(self.local_repo, *tags)

        # delete the remote tags
        if clean_up_remote:
            tags_to_delete = [":" + tag_name for tag_name in self.remote_migration_tags]
            self.remote_repo.push(refspec=tags_to_delete)


parser = OptionParser()
parser.add_option(
    "-l",
    "--local",
    action="store",
    dest="localrepo",
    default=os.getcwd(),
    help="The path to the local repo. If this option is not specified, the script will attempt to use current directory by default. If it is not a local git repo, the script will fail.",
)
parser.add_option(
    "-r",
    "--remote",
    action="store",
    dest="remoterepo",
    default="codecommit",
    help="The name of the remote repository to be used as the push or migration destination. The remote must already be set in the local repo ('git remote add ...'). If this option is not specified, the script will use 'codecommit' by default.",
)
parser.add_option(
    "-b",
    "--batch",
    action="store",
    dest="batchsize",
    default="1000",
    help="Specifies the commit batch size for pushes. If not explicitly set, the default is 1,000 commits.",
)
parser.add_option(
    "-c",
    "--clean",
    action="store_true",
    dest="clean",
    default=False,
    help="Remove the temporary tags created by migration from both the local repo and the remote repository. This option will not do any migration work, just cleanup. Cleanup is done automatically at the end of a successful migration, but not after a failure so that when you re-run the script, the tags from the prior run can be used to identify commit batches that were not pushed successfully.",
)

(options, args) = parser.parse_args()

migration = RepositoryMigration()
migration.migrate_repository_in_parts(
    options.localrepo, options.remoterepo, int(options.batchsize), options.clean
)
```