Nuevas funciones y cambios en AWS CLI versión 2 - AWS Command Line Interface

Nuevas funciones y cambios en AWS CLI versión 2

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.

Nuevas características de AWS CLI versión 2

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

Puede utilizar un asistente con la AWS CLI versión 2. El asistente le guía por la creación de determinados comandos.

AWS IAM Identity Center (successor to AWS Single Sign-On)

Si la organización utiliza AWS IAM Identity Center (successor to AWS Single Sign-On) (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. 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

Cuando se activa, la AWS CLI versión 2 le puede pedir comandos, parámetros y recursos cuando ejecute un comando de aws.

Docker

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

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

Importe las credenciales de .csv generadas desde la AWS Management Console. Se importa un archivo .csv con el nombre de perfil que coincide con el nombre de usuario de IAM.

aws configure list-profiles

Muestra los nombres de todos los perfiles que ha configurado.

Formato de salida de transmisión YAML‎

Los formatos yaml y yaml-stream aprovechan el formato YAML 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

La AWS CLI versión 2 tiene los comandos de alto nivel de Amazon DynamoDB ddb put y ddb select. Estos comandos proporcionan una interfaz simplificada para colocar elementos en las tablas de DynamoDB y buscar en una tabla o índice de DynamoDB.

aws logs tail

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

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

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

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.

Se ha agregado una variable de entorno para establecer la codificación de los archivos de texto

De forma predeterminada, los archivos de texto de Binario/blob (objeto binario grande) y blob en streaming 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 Variables de entorno para configurar la AWS CLI .

Los parámetros binarios se pasan como cadenas codificadas en base64 de forma predeterminada

En la AWS CLI, algunos comandos requerían cadenas codificadas en 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 Binario/blob (objeto binario grande) y blob en streaming .

Para volver al comportamiento de la AWS CLI versión 1, utilice el archivo de configuración cli_binary_format 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

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, 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 .

No hay recuperación automática de las URL http:// o https:// para los parámetros

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

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 less en Linux o macOS, y el programa 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 .

Los valores de salida de la marca de tiempo están estandarizados según el formato ISO 8601

De forma predeterminada, la AWS CLI versión 2 devuelve todos los valores de respuesta de marca temporal en formato 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_timestamp_format .

Control mejorado de las implementaciones de CloudFormation que no producen cambios

De forma predeterminada, en la AWS CLI versión 1, si implementa una plantilla de AWS 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

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

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 AWS CLI versión 1 envía las solicitudes de AWS STS al punto de conexión global de AWS STS. Puede controlar este comportamiento predeterminado en la versión 1 con la configuración sts_regional_endpoints.

Se ha eliminado ecr get-login y se ha reemplazado por ecr get-login-password

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 aws ecr get-login-password en la Guía de referencia de la AWS CLI versión 2.

El soporte de la versión 2 de la AWS CLI para complementos está cambiando

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

La versión 2 de la AWS CLI 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

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

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. 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

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

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 Descripción de los códigos de devolución de la AWS CLI.

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.