

# Uso de la herramienta de migración de la AWS CLI v1-to-v2 para actualizar la versión 1 de la AWS CLI a la versión 2 de la AWS CLI
<a name="cli-migration-tool"></a>

En este tema se describe la herramienta de migración de la AWS CLI v1-to-v2.

Recomendamos a los usuarios de la versión 1 de AWS CLI que actualicen a la versión 2 de AWS CLI para acceder a las nuevas características y al rendimiento mejorado. Hay cambios de comportamiento entre la versión 1 de AWS CLI y la versión 2 de AWS CLI que pueden requerir que actualice los scripts o comandos para conseguir el mismo comportamiento. La herramienta de migración de la AWS CLI v1-to-v2 analiza los scripts bash que contienen comandos de la versión 1 de la AWS CLI y detecta el uso de funciones que se han actualizado con cambios importantes en la versión 2 de la AWS CLI. Además, la herramienta puede modificar automáticamente los scripts para corregir la mayoría de los problemas que detecte. Esta herramienta mejora la experiencia de actualización al detectar y modificar automáticamente los comandos de la versión 1 de la AWS CLI en scripts bash para evitar problemas inesperados al actualizar a la versión 2.

En comparación con el modo de depuración de actualizaciones, la herramienta de migración de la AWS CLI v1-to-v2 es una herramienta independiente y no requiere la ejecución de comandos de la AWS CLI. Para obtener una comparación exhaustiva entre el modo de depuración de actualizaciones y la herramienta de migración de la AWS CLI v1-to-v2, consulte [Uso de herramientas de migración de la AWS CLI para mitigar las interrupciones](cliv2-migration.md#using-migration-tools) en [Guía de migración para la versión 2 de la AWS CLI](cliv2-migration.md).

Para obtener más información, consulte [Cambios importantes entre la AWS CLI versión 1 y la AWS CLI versión 2](cliv2-migration-changes.md#cliv2-migration-changes-breaking) en [Nuevas características y cambios en la versión 2 de la AWS CLI](cliv2-migration-changes.md).

## Funcionamiento
<a name="migration-tool-how-it-works"></a>

La herramienta de migración de la AWS CLI v1-to-v2 es un paquete de Python capaz de linting scripts bash que utilizan la versión 1 de la AWS CLI. Al ser un linter estático, no depende de la versión 1 de la AWS CLI que haya instalado en la máquina. El linter se invoca a través de la línea de comandos, donde se proporciona como parámetro la ruta del archivo local al script bash.

La herramienta de migración también puede producir automáticamente un script bash modificado que resuelve la mayoría de los resultados que detecta modificando los comandos de la versión 1 de la AWS CLI utilizados en el script. La herramienta de migración modifica los comandos para que sean compatibles con la versión 2 de AWS y retiene el comportamiento de la versión 1.

Para algunos resultados, la herramienta de migración de la AWS CLI v1-to-v2 puede detectarlos pero no ofrecer una solución automática. En estos casos, la herramienta de migración las marca como detecciones que requieren una revisión manual.

Consulte [Limitaciones](#migration-tool-limitations) para obtener una lista exhaustiva de los cambios importantes y las correcciones automáticas que admite la herramienta de migración de la AWS CLI v1-to-v2.

## Requisitos previos
<a name="migration-tool-prerequisites"></a>

### Python
<a name="migration-tool-prerequisites-python"></a>

Para usar esta herramienta, debe tener instalado Python 3.9 o una versión posterior.

Para comprobar que tiene instalada una versión correcta de Python, ejecute el siguiente comando en un terminal y confirme que el resultado muestra una versión de Python de al menos 3.9.

```
$ python3 --version
```

Si tiene una versión anterior de Python o no tiene Python instalado, puede descargar una versión compatible desde la [página oficial de descargas de Python](https://www.python.org/downloads/).

### pip
<a name="migration-tool-prerequisites-pip"></a>

Además de tener instalada una versión compatible de Python, debe tener instalado `pip`.

Para comprobar que `pip` se ha instalado, ejecute el siguiente comando:

```
$ python3 -m pip --version
```

Si ha instalado `pip`, se mostrará un resultado similar al que se incluye a continuación:

```
pip 25.0.1 from ~/.local/lib/python3.13/site-packages (python 3.13)
```

Si no ha instalado `pip`, consulte [Instalar pip](https://docs.aws.amazon.com/cli/v1/userguide/install-linux.html#install-linux-pip-pip).

## Instalación
<a name="migration-tool-installation"></a>

Instale la herramienta de migración de la AWS CLI v1-to-v2 en un nuevo entorno virtual:

```
$ python3 -m venv .venv
$ source .venv/bin/activate
$ python3 -m pip install aws-cli-migrate
```

## Uso
<a name="migration-tool-usage"></a>

### Modo de prueba (predeterminado)
<a name="migration-tool-usage-dryrun"></a>

Con el modo de prueba, puede detectar automáticamente los comandos de la versión 1 de la AWS CLI que están sujetos a cambios importantes sin modificar el script de entrada:

```
$ migrate-aws-cli --script upload_s3_files.sh
```

### Modo de reparación automática
<a name="migration-tool-usage-autofix"></a>

Con el modo de reparación automática, puede detectar y actualizar automáticamente los comandos de la versión 1 de la AWS CLI en el script de entrada para mitigar las interrupciones causadas por los cambios ingresados en la versión 2 de la AWS CLI, siempre que sea posible:

```
$ migrate-aws-cli --script upload_s3_files.sh --fix
```

si lo desea, puede proporcionar una ruta de salida mediante el parámetro `--output` para escribir el script actualizado, en lugar de actualizar el script de entrada:

```
$ migrate-aws-cli --script upload_s3_files.sh --output upload_s3_files_v2.sh --fix
```

### modo interactivo
<a name="migration-tool-usage-interactive"></a>

Con el modo interactivo, puede detectar automáticamente los comandos de la versión 1 de la AWS CLI que están sujetos a cambios importantes. La mayoría de los resultados mostrarán una solución sugerida para mitigar las interrupciones en la versión 2 de la AWS CLI. Puede revisar las correcciones sugeridas y decidir si las aplica. Si lo desea, proporcione una ruta de salida mediante el parámetro `--output` para controlar dónde escribir el script actualizado:

```
$ migrate-aws-cli --script upload_s3_files.sh --interactive \
--output upload_s3_files_v2.sh
```

el siguiente fragmento de código resultante es un resultado de ejemplo en modo interactivo:

```
14 14│ 
15 15│ aws s3 ls s3://mybucket
16 16│ 
17   │-aws s3 cp s3://amzn-demo-bucket s3://amzn-demo-bucket2 --recursive
   17│+aws s3 cp s3://amzn-demo-bucket s3://amzn-demo-bucket2 --recursive --copy-props none
18 18│ 
19 19│ TEMPLATE_KEY="cloudformation/$(basename "$TEMPLATE_FILE")"
20 20│ 

examples/upload_s3_files.sh:17 [s3-copy] In AWS CLI v2, object properties will be copied 
from the source in multipart copies between S3 buckets. If a copy is or becomes multipart 
after upgrading to AWS CLI v2, extra API calls will be made. See 
https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration-changes.html#cliv2-migration-s3-copy-metadata.

Apply this fix? [y] yes, [n] no, [a] accept all of type, [r] reject all of type, [u] update all, 
[s] save and exit, [q] quit:
```

la solución sugerida se muestra en un formato similar a un diff de Git. La herramienta de migración sugiere eliminar las líneas que comiencen con un `-` y sugiere agregar líneas que comiencen con un `+`. En el ejemplo anterior, la sugerencia puede interpretarse como la adición del parámetro `--copy-props none` al comando de la versión 1 de la AWS CLI que ejecuta una copia de Amazon S3.

Para cada corrección sugerida, puede ingresar cualquiera de los siguientes controles:
+ Ingrese `y` para aceptar la corrección sugerida.
+ Ingrese `n` para rechazar la corrección actual.
+ Ingrese `a` para aceptar todas las correcciones del mismo tipo.
+ Ingrese `r` para rechazar todas las correcciones del mismo tipo.
+ Ingrese `u` para aceptar todas las correcciones restantes.
+ Ingrese `s` para guardar y salir.
+ Ingrese `q` para salir sin guardar.

Es posible que algunos resultados estén marcados para su revisión manual sin que se sugiera una solución. Debe revisar estos resultados y comprobar si los cambios importantes a los que se hace referencia lo afectan. Si estos resultados lo afectan, debe seguir las instrucciones especificadas en la descripción del resultado para realizar los cambios necesarios a fin de evitar o prepararse para los cambios importantes ingresados en la versión 2 de la AWS CLI.

## Limitaciones
<a name="migration-tool-limitations"></a>

La herramienta de migración de la AWS CLI v1-to-v2 no admite actualmente todos los cambios importantes ingresados en la versión 2 de la AWS CLI y tiene casos de falsos positivos en los que genera detecciones de comandos incluso si no se produjeran cambios importantes.

Recomendamos encarecidamente a los clientes que entiendan [Cambios importantes entre la AWS CLI versión 1 y la AWS CLI versión 2](cliv2-migration-changes.md#cliv2-migration-changes-breaking) publicado en [Nuevas características y cambios en la versión 2 de la AWS CLI](cliv2-migration-changes.md).

### Análisis basado en texto
<a name="migration-tool-limitations-static-linter"></a>

La herramienta de migración analiza el script sin ejecutarlo. Esto limita la forma en que detecta los comandos de la AWS CLI para los cambios importantes. La herramienta de migración solo puede examinar el texto de un comando de la AWS CLI. No puede detectar los problemas que surgen en tiempo de ejecución, como almacenar parámetros obsoletos en una variable en lugar de pasarlos directamente a la AWS CLI.

### Detección de cambios importantes no compatible
<a name="migration-tool-limitations-unsupported-changes"></a>

El grado de compatibilidad con los cambios importantes en la herramienta de migración se resume en la siguiente tabla.


| Cambios importantes | Detección admitida | Compatible con la reparación automática | 
| --- | --- | --- | 
| [Se ha agregado una variable de entorno para establecer la codificación de los archivos de texto](cliv2-migration-changes.md#cliv2-migration-encodingenvvar) | No | No | 
| [Los parámetros binarios se pasan como cadenas codificadas en base64 de forma predeterminada](cliv2-migration-changes.md#cliv2-migration-binaryparam) | Sí | Sí | 
| [Mejora de la gestión de Amazon S3 de las propiedades y etiquetas de los archivos para las copias multiparte](cliv2-migration-changes.md#cliv2-migration-s3-copy-metadata) | Sí | Sí | 
| [No hay recuperación automática de las URL `http://` o `https://` para los parámetros](cliv2-migration-changes.md#cliv2-migration-paramfile) | No | No | 
| [Paginador usado para toda la salida de forma predeterminada](cliv2-migration-changes.md#cliv2-migration-output-pager) | Sí | Sí | 
| [Los valores de salida de la marca de tiempo están estandarizados según el formato ISO 8601](cliv2-migration-changes.md#cliv2-migration-timestamp) | No | No | 
| [Control mejorado de las implementaciones de CloudFormation que no producen cambios](cliv2-migration-changes.md#cliv2-migration-cfn) | Sí | Sí | 
| [Se ha cambiado el comportamiento predeterminado del punto de conexión regional de Amazon S3 para la región `us-east-1`](cliv2-migration-changes.md#cliv2-migration-s3-regional-endpoint) | No | No | 
| [Se ha cambiado el comportamiento predeterminado de los puntos de conexión de AWS STS regionales](cliv2-migration-changes.md#cliv2-migration-sts-regional-endpoint) | No | No | 
| [Se ha eliminado `ecr get-login` y se ha reemplazado por `ecr get-login-password`](cliv2-migration-changes.md#cliv2-migration-ecr-get-login) | Sí | No | 
| [AWS CLIEl soporte de la versión 2 de la para complementos está cambiando](cliv2-migration-changes.md#cliv2-migration-profile-plugins) | No | No | 
| [Se ha eliminado la compatibilidad con los alias ocultos](cliv2-migration-changes.md#cliv2-migration-aliases) | Sí | Sí | 
| [No se admite la opción `api_versions` del archivo de configuración](cliv2-migration-changes.md#cliv2-migration-api-versions) | No | No | 
| [La AWS CLI versión 2 solo usa Signature v4 para autenticar las solicitudes de Amazon S3](cliv2-migration-changes.md#cliv2-migration-sigv4) | No | No | 
| [La AWS CLI versión 2 es más coherente con los parámetros de paginación](cliv2-migration-changes.md#cliv2-migration-skeleton-paging) | Sí | No | 
| [La AWS CLI versión 2 proporciona códigos de retorno más coherentes en todos los comandos](cliv2-migration-changes.md#cliv2-migration-return-codes) | No | No | 