

# Nuevas características y cambios en la versión 2 de la AWS CLI
<a name="cliv2-migration-changes"></a>

En este tema se describen las nuevas características y los cambios en el comportamiento entre la versión 1 de la AWS CLI y la versión 2 de la AWS CLI. Estos cambios pueden requerir que actualice los scripts o comandos para obtener el mismo comportamiento en la versión 2 que en la versión 1.

**Topics**
+ [Nuevas características de AWS CLI versión 2](#cliv2-migration-changes-features)
+ [Cambios importantes entre la AWS CLI versión 1 y la AWS CLI versión 2](#cliv2-migration-changes-breaking)

## Nuevas características de AWS CLI versión 2
<a name="cliv2-migration-changes-features"></a>

La versión 2 de la AWS CLI es la versión principal y más reciente de la AWS CLI y es compatible con todas las características más recientes. Algunas características introducidas en la versión 2 no son compatibles con la versión 1 y debe realizar una actualización para acceder a esas características. Estas son algunas de ellas:

**No se necesita intérprete de Python**  
La AWS CLI versión 2 no necesita una instalación por separado de Python. Incluye una versión insertada.

**[Asistentes](cli-usage-wizard.md)**  
Puede utilizar un asistente con la AWS CLI versión 2. El asistente le guía por la creación de determinados comandos.

**[Autenticación del Centro de identidades de IAMConceptos de IAM Identity CenterTutorial: AWS IAM Identity Center y Amazon S3Ejemplos de AWS CLI](cli-configure-sso.md)**  
Si la organización utiliza AWS IAM Identity Center (IAM Identity Center)‎, los usuarios pueden iniciar sesión en Active Directory, en un directorio‎ de IAM Identity Center integrado o en ‎[otra IdP conectada a IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html). A continuación, se asignan a un rol de AWS Identity and Access Management (IAM) que le permite ejecutar comandos de la AWS CLI.

**[Mensaje automático](cli-usage-parameters-prompting.md)**  
Cuando se activa, la AWS CLI versión 2 le puede pedir comandos, parámetros y recursos cuando ejecute un comando de `aws`. 

**[Ejecución de las imágenes oficiales de Amazon ECR Public o Docker para la AWS CLI](getting-started-docker.md)**  
Las imágenes de Docker oficiales para la AWS CLI proporcionan aislamiento, portabilidad y seguridad que AWS apoya y mantiene directamente. De este modo, puede utilizar la AWS CLI versión 2 en un entorno basado en contenedores sin tener que administrar la instalación por su cuenta. 

**[Paginación del lado del cliente](cli-usage-pagination.md#cli-usage-pagination-clientside)**  
La AWS CLI versión 2 proporciona el uso de un programa de paginación en el cliente para la salida. De forma predeterminada, esta característica está activada y devuelve todas las salidas a través del programa de paginación predeterminado del sistema operativo.

**[`aws configure import`](cli-configure-files.md#cli-config-aws_configure_import)**  
Importe las credenciales de `.csv` generadas desde la Consola de administración de AWS. Se importa un archivo `.csv` con el nombre de perfil que coincide con el nombre de usuario de IAM. 

**[https://docs.aws.amazon.com/cli/latest/reference/configure/list-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/configure/list-profiles.html)**  
Muestra los nombres de todos los perfiles que ha configurado. 

**[Formato de salida de transmisión YAML‎](cli-usage-output-format.md#yaml-stream-output)**  
Los formatos `yaml` y `yaml-stream` aprovechan el formato [YAML](https://yaml.org) a la vez que proporcionan una visualización más receptiva de los conjuntos de datos grandes mediante el streaming de datos a usted. Puede comenzar a ver y usar datos YAML antes de que se descargue toda la consulta. 

**[Nuevos comandos `ddb` de alto nivel para DynamoDB](https://docs.aws.amazon.com/cli/latest/reference/ddb/index.html)**  
La AWS CLI versión 2 tiene los comandos de alto nivel de Amazon DynamoDB [https://docs.aws.amazon.com/cli/latest/reference/api/latest/reference/ddb/put.html](https://docs.aws.amazon.com/cli/latest/reference/api/latest/reference/ddb/put.html) y [https://docs.aws.amazon.com/cli/latest/reference/api/latest/reference/ddb/select.html](https://docs.aws.amazon.com/cli/latest/reference/api/latest/reference/ddb/select.html). Estos comandos proporcionan una interfaz simplificada para colocar elementos en las tablas de DynamoDB y buscar en una tabla o índice de DynamoDB. 

**[https://docs.aws.amazon.com/cli/latest/reference/logs/tail.html](https://docs.aws.amazon.com/cli/latest/reference/logs/tail.html)**  
La AWS CLI versión 2 dispone de un comando `aws logs tail` personalizado que pone a la cola los registros de un grupo de Registros de Amazon CloudWatch. De forma predeterminada, el comando devuelve los registros de todos los flujos asociados de CloudWatch Logs durante los últimos diez minutos.

**[Se ha agregado compatibilidad con los metadatos para los comandos `s3` de alto nivel](cli-services-s3-commands.md#using-s3-commands-before-large)**  
La AWS CLI versión 2 agrega el parámetro `--copy-props` a los comandos `s3` de alto nivel. Con este parámetro, puede configurar metadatos y etiquetas adicionales para Amazon Simple Storage Service (Amazon S3).

**[`AWS_REGION`](cli-configure-envvars.md#envvars-list-AWS_REGION)**  
La AWS CLI versión 2 tiene una variable de entorno compatible con SDK de AWS llamada `AWS_REGION`. Esta variable especifica a la que Región de AWS envía solicitudes. Anula la variable de entorno `AWS_DEFAULT_REGION`, que solo es aplicable en la AWS CLI.

## Cambios importantes entre la AWS CLI versión 1 y la AWS CLI versión 2
<a name="cliv2-migration-changes-breaking"></a>

En estas secciones se describen los cambios en el comportamiento entre la AWS CLI versión 1 y la AWS CLI versión 2. Estos cambios pueden requerir que actualice los scripts o comandos para obtener el mismo comportamiento en la versión 2 que en la versión 1.

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

### Se ha agregado una variable de entorno para establecer la codificación de los archivos de texto
<a name="cliv2-migration-encodingenvvar"></a>

 De forma predeterminada, los archivos de texto de [Blob](cli-usage-parameters-types.md#parameter-type-blob) utilizan la misma codificación que la configuración regional instalada. Debido a que la AWS CLI versión 2 utiliza una versión incrustada de Python, las variables de entorno `PYTHONUTF8` y `PYTHONIOENCODING` no se admiten. Para establecer que la codificación de los archivos de texto sea distinta de la configuración regional, utilice la variable de entorno `AWS_CLI_FILE_ENCODING`. El siguiente ejemplo establece la AWS CLI para abrir archivos de texto con `UTF-8` en Windows.

```
AWS_CLI_FILE_ENCODING=UTF-8
```

Para obtener más información, consulte  [Configuración de variables de entorno para la AWS CLI](cli-configure-envvars.md) .

### Los parámetros binarios se pasan como cadenas codificadas en base64 de forma predeterminada
<a name="cliv2-migration-binaryparam"></a>

En la AWS CLI, algunos comandos requerían cadenas codificadas en [base64](https://wikipedia.org/wiki/Base64), mientras que otros requerían cadenas de bytes codificadas en UTF-8. En la AWS CLI versión 1, el paso de datos entre dos tipos de cadenas codificadas requería a menudo algún procesamiento intermedio. La AWS CLI versión 2 aumenta la coherencia de la gestión de los parámetros binarios, lo que ayuda a pasar los valores de un comando a otro de forma más fiable. 

De forma predeterminada, la AWS CLI versión 2 pasa todos los parámetros binarios de entrada y salida como `blobs` (objeto grande binario) de cadena codificada en base64. Para obtener más información, consulte [Blob](cli-usage-parameters-types.md#parameter-type-blob).

Para volver al comportamiento de la AWS CLI versión 1, utilice el archivo de configuración `cli\$1binary\$1format` o el parámetro `--cli-binary-format`.

### Mejora de la gestión de Amazon S3 de las propiedades y etiquetas de los archivos para las copias multiparte
<a name="cliv2-migration-s3-copy-metadata"></a>

Cuando se utilizan los comandos de la AWS CLI versión 1 del espacio de nombres `aws s3` para copiar un archivo de una ubicación de bucket de S3 a otra, y esa operación utiliza la [copia multiparte](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CopyingObjctsMPUapi.html), no se copian las propiedades del archivo del objeto de origen en el de destino.

De forma predeterminada, los comandos correspondientes de la AWS CLI versión 2 transfieren todas las etiquetas y algunas de las propiedades de la copia de origen a la de destino. En comparación con la AWS CLI versión 1, esto puede generar más llamadas a la API de AWS en el punto de conexión de Amazon S3. Para cambiar el comportamiento predeterminado de los comandos `s3` en la AWS CLI versión 2, utilice el parámetro `--copy-props`.

Para obtener más información, consulte [Propiedades de archivo y etiquetas en copias multiparte](cli-services-s3-commands.md#using-s3-commands-before-tags).

### No hay recuperación automática de las URL `http://` o `https://` para los parámetros
<a name="cliv2-migration-paramfile"></a>

La AWS CLI versión 2 no realiza una operación `GET` cuando el valor de un parámetro empieza por `http://` o `https://`, ni utiliza el contenido devuelto como valor del parámetro. Como resultado, la opción de línea de comandos asociada `cli_follow_urlparam` se elimina de la AWS CLI versión 2.

Si necesita recuperar una URL y pasar el contenido de la URL en un valor de parámetro, le recomendamos que utilice `curl` o una herramienta similar para descargar el contenido de la URL en un archivo local. Después, use la sintaxis `file://` para leer el contenido de ese archivo y utilizarlo como valor del parámetro. 

Por ejemplo, el siguiente comando ya no intenta recuperar el contenido de la página encontrada en `http://www.example.com` y pasar ese contenido como parámetro. En cambio, pasa la cadena de texto literal `https://example.com` como parámetro.

```
$ aws ssm put-parameter \
    --value http://www.example.com \
    --name prod.microservice1.db.secret \
    --type String 2
```

Si necesita recuperar y usar el contenido de la URL de una web como parámetro, puede hacer lo siguiente en la versión 2.

```
$ curl https://my.example.com/mypolicyfile.json -o mypolicyfile.json
$ aws iam put-role-policy \
    --policy-document file://./mypolicyfile.json \
    --role-name MyRole \
    --policy-name MyReadOnlyPolicy
```

En el ejemplo anterior, el parámetro `-o` indica a `curl` que guarde el archivo en la carpeta actual con el mismo nombre que el archivo de origen. El segundo comando recupera el contenido de ese archivo descargado y lo pasa como valor de `--policy-document`.

### Paginador usado para toda la salida de forma predeterminada
<a name="cliv2-migration-output-pager"></a>

De forma predeterminada, la AWS CLI versión 2 devuelve todas las salidas a través del paginador predeterminado de su sistema operativo. Este programa es el programa [https://ss64.com/bash/less.html](https://ss64.com/bash/less.html) en Linux o macOS, y el programa [https://docs.microsoft.com/windows-server/administration/windows-commands/more](https://docs.microsoft.com/windows-server/administration/windows-commands/more) en Windows. Esto puede ayudarle a navegar por gran cantidad de resultados de un servicio al mostrar las páginas de salida de una en una. 

Puede configurar la AWS CLI versión 2 para usar un programa de paginación diferente o ninguno en absoluto. Para obtener más información, consulte [Paginación del lado del cliente](cli-usage-pagination.md#cli-usage-pagination-clientside).

### Los valores de salida de la marca de tiempo están estandarizados según el formato ISO 8601
<a name="cliv2-migration-timestamp"></a>

De forma predeterminada, la AWS CLI versión 2 devuelve todos los valores de respuesta de marca temporal en [formato ISO 8601](https://wikipedia.org/wiki/ISO_8601). En la versión 1 de la AWS CLI, los comandos devolvían valores de marca temporal en el formato en el que estuviera la respuesta de la API HTTP, que podía ser diferente en cada servicio. 

Para ver las marcas temporales en el formato devuelto por la respuesta de la API HTTP, utilice el valor `wire` en su archivo `config`. Para obtener más información, consulte `cli\$1timestamp\$1format`.

### Control mejorado de las implementaciones de CloudFormation que no producen cambios
<a name="cliv2-migration-cfn"></a>

De forma predeterminada, en la AWS CLI versión 1, si implementa una plantilla de CloudFormation que no produce cambios, la AWS CLI devuelve un código de error. Esto causa problemas si no lo considera un error y quiere que su script continúe. Puede solucionar esto en la AWS CLI versión 1 si agrega la marca `-–no-fail-on-empty-changeset`, que devuelve `0`.

Dado que este es un caso de uso común, la AWS CLI versión 2 devuelve de forma predeterminada un código de salida correcto `0` cuando no hay ningún cambio provocado por una implementación y la operación devuelve un conjunto de cambios vacío.

Para volver al comportamiento original, debe agregar la marca `--fail-on-empty-changeset`.

### Se ha cambiado el comportamiento predeterminado del punto de conexión regional de Amazon S3 para la región `us-east-1`
<a name="cliv2-migration-s3-regional-endpoint"></a>

Cuando configura la AWS CLI versión 1 para utilizar la región `us-east-1`, la AWS CLI utiliza el punto de conexión global `s3.amazonaws.com` que está alojado físicamente en la región `us-east-1`. La AWS CLI versión 2 utiliza el punto de conexión regional verdadero cuando `s3.us-east-1.amazonaws.com` se especifica esa región. Para obligar a la versión 2 de la AWS CLI a que use el punto de enlace global, puede establecer la región de un comando en `aws-global`.

### Se ha cambiado el comportamiento predeterminado de los puntos de conexión de AWS STS regionales
<a name="cliv2-migration-sts-regional-endpoint"></a>

De forma predeterminada, la AWS CLI versión 2 envía todas las solicitudes de la API AWS Security Token Service (AWS STS) al punto de conexión regional para la Región de AWS configurada actualmente. 

De forma predeterminada, la versión antes de `1.42.0` para la versión 1 de AWS CLI envía las solicitudes de AWS STS al punto de conexión de AWS STS global. Puede controlar este comportamiento predeterminado en la versión 1 con la configuración [https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-config-sts_regional_endpoints](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-config-sts_regional_endpoints). 

Todas las versiones posteriores a `1.42.0` utilizan el punto de conexión regional como predeterminado. Si se migra a la versión 2 de AWS CLI desde estas versiones más recientes, este comportamiento permanece inalterado.

### Se ha eliminado `ecr get-login` y se ha reemplazado por `ecr get-login-password`
<a name="cliv2-migration-ecr-get-login"></a>

La AWS CLI versión 2 reemplaza el comando `aws ecr get-login` por el comando `aws ecr get-login-password` que mejora la integración automatizada con la autenticación de contenedores. 

El comando `aws ecr get-login-password` reduce el riesgo de exponer sus credenciales en la lista de procesos, historial de shell u otros archivos de registro. También mejora la compatibilidad con el comando `docker login`, lo que mejora la automatización.

El comando `aws ecr get-login-password` está disponible en la versión 1.17.10 y posterior de la AWS CLI, y versión 2 de la AWS CLI. El anterior comando `aws ecr get-login` todavía está disponible en la AWS CLI versión 1 por compatibilidad con versiones anteriores. 

Con el comando `aws ecr get-login-password`, puede reemplazar el siguiente código que recupera una contraseña.

```
$ (aws ecr get-login --no-include-email)
```

Para reducir el riesgo de exponer la contraseña al historial de shell o a los registros, utilice el siguiente comando de ejemplo. En este ejemplo, la contraseña se canaliza directamente al comando `docker login`, donde se asigna al parámetro password mediante la opción `--password-stdin`.

```
$ aws ecr get-login-password | docker login --username AWS --password-stdin MY-REGISTRY-URL
```

Para obtener más información, consulte [https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html) en la *Guía de referencia de la AWS CLI versión 2*.

### AWS CLIEl soporte de la versión 2 de la para complementos está cambiando
<a name="cliv2-migration-profile-plugins"></a>

La compatibilidad con complementos en la AWS CLI versión 2 es completamente provisional y está destinada a ayudar a los usuarios a migrar desde la AWS CLI versión 1 hasta que se lance una interfaz estable y actualizada. No hay garantías de que un complemento en particular o incluso la interfaz de complementos de la AWS CLI sean compatibles en futuras versiones de la AWS CLI versión 2. Si se basa en complementos, asegúrese de bloquear una versión concreta de la AWS CLI y probar la funcionalidad de su complemento cuando realice la actualización.

Para habilitar el soporte de complementos, cree una sección `[plugins]` en su `~/.aws/config`.

```
[plugins]
cli_legacy_plugin_path = <path-to-plugins>/python3.7/site-packages
<plugin-name> = <plugin-module>
```

En la sección `[plugins]`, defina la variable `cli_legacy_plugin_path` y establezca su valor en la ruta de paquetes del sitio de Python en la que se encuentra su módulo de complemento. Después, puede configurar un complemento si proporciona un nombre para el complemento (`plugin-name`) y el nombre de archivo del módulo Python (`plugin-module`) que contiene el código fuente de su complemento. La AWS CLI carga cada complemento mediante la importación de su `plugin-module` y la llamada a su función `awscli_initialize`.

### Se ha eliminado la compatibilidad con los alias ocultos
<a name="cliv2-migration-aliases"></a>

AWS CLILa versión 2 de la ya no admite los siguientes alias ocultos que se admitían en la versión 1. 

En la tabla siguiente, la primera columna muestra el servicio, el comando y el parámetro que funcionan en todas las versiones, incluida la AWS CLI versión 2. La segunda columna muestra el alias que ya no funciona en la AWS CLI versión 2.


| Servicio, comando y parámetro que funcionan | Alias obsoleto | 
| --- | --- | 
| cognito-identity create-identity-pool open-id-connect-provider-arns | open-id-connect-provider-ar-ns | 
| storagegateway describe-tapes tape-arns | tape-ar-ns | 
| storagegateway.describe-tape-archives.tape-arns | tape-ar-ns | 
| storagegateway.describe-vtl-devices.vtl-device-arns | vtl-device-ar-ns | 
| storagegateway.describe-cached-iscsi-volumes.volume-arns | volume-ar-ns | 
| storagegateway.describe-stored-iscsi-volumes.volume-arns | volume-ar-ns | 
| route53domains.view-billing.start-time | iniciar | 
| deploy.create-deployment-group.ec2-tag-set | ec-2-tag-set | 
| deploy.list-application-revisions.s3-bucket | s-3-bucket | 
| deploy.list-application-revisions.s3-key-prefix | s-3-key-prefix | 
| deploy.update-deployment-group.ec2-tag-set | ec-2-tag-set | 
| iam.enable-mfa-device.authentication-code1 | authentication-code-1 | 
| iam.enable-mfa-device.authentication-code2 | authentication-code-2 | 
| iam.resync-mfa-device.authentication-code1 | authentication-code-1 | 
| iam.resync-mfa-device.authentication-code2 | authentication-code-2 | 
| importexport.get-shipping-label.street1 | street-1 | 
| importexport.get-shipping-label.street2 | street-2 | 
| importexport.get-shipping-label.street3 | street-3 | 
| lambda.publish-version.code-sha256 | code-sha-256 | 
| lightsail.import-key-pair.public-key-base64 | public-key-base-64 | 
| opsworks.register-volume.ec2-volume-id | ec-2-volume-id | 

### No se admite la opción `api_versions` del archivo de configuración
<a name="cliv2-migration-api-versions"></a>

La AWS CLI versión 2 ya no es compatible con la llamada a versiones anteriores de las API de servicio de AWS mediante la opción del archivo de configuración `api_versions`. Todos los comandos de la AWS CLI ahora llaman a la versión más reciente de las API de servicio que son compatibles actualmente con el punto de enlace.

### La AWS CLI versión 2 solo usa Signature v4 para autenticar las solicitudes de Amazon S3
<a name="cliv2-migration-sigv4"></a>

La AWS CLI versión 2 no admite algoritmos de firma anteriores para autenticar criptográficamente las solicitudes de servicio enviadas a los puntos de conexión de Amazon S3. Esta firma se produce automáticamente con cada solicitud de Amazon S3 y solo se admite el [proceso de firma de Signature versión 4](https://docs.aws.amazon.com/AmazonS3/latest/userguide/reference_aws-signing.html). No puede configurar la versión de la firma. Todas las URL firmadas previamente de los buckets de Amazon S3 ahora solo utilizan SigV4 y tienen una duración máxima de caducidad de una semana.

### La AWS CLI versión 2 es más coherente con los parámetros de paginación
<a name="cliv2-migration-skeleton-paging"></a>

En la AWS CLI versión 1, si se especifican los parámetros de paginación en la línea de comandos, la paginación automática se desactiva del modo previsto. No obstante, al especificar los parámetros de paginación mediante un archivo con el parámetro `‐‐cli-input-json`, no se desactivaba la paginación automática, lo que podía dar lugar a una salida inesperada. La AWS CLI versión 2 desactiva la paginación automática independientemente de cómo se proporcionen los parámetros.

### La AWS CLI versión 2 proporciona códigos de retorno más coherentes en todos los comandos
<a name="cliv2-migration-return-codes"></a>

La AWS CLI versión 2 es más coherente en todos los comandos y devuelve correctamente un código de salida adecuado en comparación con la AWS CLI versión 1. También hemos añadido los códigos de salida 252, 253 y 254. Para obtener más información sobre los códigos de salida, consulte [Códigos de retorno de la línea de comandos en la AWS CLI](cli-usage-returncodes.md).

Si tiene una dependencia de cómo la AWS CLI versión 1 utiliza valores de código de devolución, le recomendamos que consulte los códigos de salida para asegurarse de que obtiene los valores que espera. 