AWS Command Line Interface: Guía Del Usuario

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 234

AWS Command Line Interface

Guía del usuario


AWS Command Line Interface Guía del usuario

AWS Command Line Interface: Guía del usuario


Copyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Las marcas comerciales y la imagen comercial de Amazon no se pueden utilizar en relación con ningún producto o
servicio que no sea de Amazon de ninguna manera que pueda causar confusión entre los clientes y que menosprecie
o desacredite a Amazon. Todas las demás marcas comerciales que no son propiedad de Amazon son propiedad de
sus respectivos propietarios, que pueden o no estar afiliados, conectados o patrocinados por Amazon.
AWS Command Line Interface Guía del usuario

Table of Contents
....................................................................................................................................................... vii
¿Qué es la AWS CLI? ........................................................................................................................ 1
AWS CLIVersiones ..................................................................................................................... 1
Mantenimiento y soporte para las versiones principales del SDK ........................................................ 1
Acerca de Amazon Web Services ................................................................................................. 2
AWS CLIVersiones de ................................................................................................................. 2
AWS CLIVERSION 2 .......................................................................................................... 2
AWS CLIVERSION 1 .......................................................................................................... 2
Uso de los ejemplos ................................................................................................................... 3
Documentación y recursos adicionales .......................................................................................... 4
AWS CLIDocumentación y recursos ...................................................................................... 4
OtrosAWSSDK de .............................................................................................................. 4
Instalación de AWS CLI ...................................................................................................................... 6
AWS CLIVersión 2 ...................................................................................................................... 6
Docker .............................................................................................................................. 6
Linux ............................................................................................................................... 12
macOS ............................................................................................................................ 20
Windows .......................................................................................................................... 25
AWS CLIVersión 1 .................................................................................................................... 26
Amazon Linux .................................................................................................................. 27
Linux ............................................................................................................................... 28
macOS ............................................................................................................................ 35
Windows .......................................................................................................................... 41
Virtualenv ........................................................................................................................ 44
Configuración de la AWS CLI ............................................................................................................. 47
Fundamentos de configuración ................................................................................................... 47
Configuración rápida con aws configure .......................................................................... 48
ID de clave de acceso y clave de acceso secreta .................................................................. 48
Region ............................................................................................................................ 49
Formato de salida ............................................................................................................. 49
Profiles ............................................................................................................................ 50
Ajustes de configuración y precedencia ................................................................................ 50
Opciones de los archivos de configuración y credenciales ............................................................... 51
¿Dónde se almacenan las opciones de configuración? ........................................................... 51
Establecer y ver las opciones de configuración ...................................................................... 52
Configuraciones del archivo config admitidas ...................................................................... 53
Perfiles con nombre .................................................................................................................. 64
Uso de perfiles con la AWS CLI ......................................................................................... 65
Configuración de la AWS CLI para usar AWS Single Sign-On .......................................................... 66
Configuración de un perfil con nombre para que utilice AWS SSO ............................................ 66
Uso de un perfil con nombre habilitado de AWS SSO ............................................................ 69
Variables de entorno ................................................................................................................. 71
Cómo configurar las variables de entorno ............................................................................. 72
Variables de entorno que admite la AWS CLI ....................................................................... 72
Opciones de línea de comandos ................................................................................................. 75
Finalización de comandos .......................................................................................................... 78
Cómo funciona ................................................................................................................. 79
Configuración de la finalización de comandos en Linux o macOS ............................................. 79
Configuración de la finalización de comandos en Windows ...................................................... 82
Verifique la finalización de comandos .................................................................................. 82
Reintentos ............................................................................................................................... 82
Modos de reintentos disponibles ......................................................................................... 83
Configuración de un modo de reintento ................................................................................ 84
Visualización de registros de reintentos ................................................................................ 85

iii
AWS Command Line Interface Guía del usuario

Obtención de credenciales con un proceso externo ........................................................................ 86


Uso de credenciales para metadatos de instancias de Amazon EC2 ................................................. 87
Prerequisites .................................................................................................................... 88
Configuración de un perfil para metadatos de Amazon EC2 ..................................................... 88
Uso de un proxy HTTP .............................................................................................................. 89
Autenticación en un proxy .................................................................................................. 89
Uso de un proxy en instancias Amazon EC2 ........................................................................ 90
Uso de un rol de IAM en laAWS CLI ........................................................................................... 90
Configuración y uso de un rol ............................................................................................. 91
Uso de MFA .................................................................................................................... 93
Roles entre cuentas e ID externo ........................................................................................ 94
Especificación de un nombre de sesión de rol para simplificar las auditorías ............................... 94
Adopción de un rol con una identidad web ........................................................................... 95
Borrado de las credenciales almacenadas en memoria caché .................................................. 96
Mediante AWS CLI ........................................................................................................................... 97
Obtener ayuda ......................................................................................................................... 97
Documentación de AWS CLI ............................................................................................ 100
Documentación de la API ................................................................................................. 101
Estructura de comandos ........................................................................................................... 101
Estructura de comandos ................................................................................................... 101
Wait .............................................................................................................................. 102
Especificación de valores de parámetros .................................................................................... 103
Tipos de parámetros comunes .......................................................................................... 104
Comillas con cadenas ...................................................................................................... 106
Parámetros de archivos ................................................................................................... 108
Generar una plantilla de esqueleto de la CLI ....................................................................... 110
Sintaxis abreviada ........................................................................................................... 118
Preguntar automáticamente ...................................................................................................... 120
Cómo funciona ............................................................................................................... 120
Funciones de autopetición ................................................................................................ 121
Modos de indicación automática ........................................................................................ 123
Configurar mensaje automático ......................................................................................... 123
Control de salida de comandos ................................................................................................. 123
Output Format (Formato de salida) .................................................................................... 124
Paginación ..................................................................................................................... 130
Filtrado .......................................................................................................................... 134
Códigos de devolución ............................................................................................................. 151
Asistentes .............................................................................................................................. 152
Cómo funciona ............................................................................................................... 152
Alias ...................................................................................................................................... 153
Prerequisites .................................................................................................................. 154
Paso 1: Creación del archivo de alias ................................................................................ 154
Paso  2: Crear un alias ..................................................................................................... 155
Paso  3: Llamar a un alias ................................................................................................. 156
Ejemplos de repositorio de alias ........................................................................................ 157
Resources ...................................................................................................................... 158
Uso de la AWS CLI con los servicios de AWS .................................................................................... 159
DynamoDB ............................................................................................................................. 159
Prerequisites .................................................................................................................. 159
Creación y uso de tablas de DynamoDB ............................................................................ 160
Uso de DynamoDB Local ................................................................................................. 161
Resources ...................................................................................................................... 161
Amazon EC2 .......................................................................................................................... 162
Pares de claves de Amazon EC2 ...................................................................................... 162
Grupos de seguridad de Amazon EC2 ............................................................................... 164
Instancias EC2 ............................................................................................................... 168
Cambiar el tipo de EC2 mediante secuencias de comandos bash ........................................... 174

iv
AWS Command Line Interface Guía del usuario

S3 Glacier .............................................................................................................................. 176


Cree un almacén de Amazon S3 Glacier ............................................................................ 177
Preparación de un archivo para cargarlo ............................................................................ 177
Inicio de una carga multiparte y carga de archivos ............................................................... 178
Finalización de la carga ................................................................................................... 179
IAM ....................................................................................................................................... 180
Creación de usuarios y grupos de IAM ............................................................................... 181
Asociación de una política administrada por IAM a un usuario de IAM ..................................... 182
Establecimiento de una contraseña inicial para un usuario de IAM .......................................... 182
Creación de una clave de acceso para un usuario de IAM ..................................................... 183
Amazon S3 ............................................................................................................................ 184
Alto nivel (s3comandos de) .............................................................................................. 184
Comandos de nivel de API (s3 api) ................................................................................... 192
Ejemplo de scripting del ciclo de vida del bucket (s3api) ...................................................... 194
Amazon SNS .......................................................................................................................... 196
Crear un tema ................................................................................................................ 197
Suscripción a un tema ..................................................................................................... 197
Publicación de un tema .................................................................................................... 198
Cancelación de la suscripción a un tema ............................................................................ 198
Eliminación de un tema .................................................................................................... 198
Amazon SWF ......................................................................................................................... 198
Lista de comandos de Amazon SWF ................................................................................. 199
Uso de dominios de Amazon SWF .................................................................................... 201
Seguridad ...................................................................................................................................... 204
Protección de los datos ............................................................................................................ 204
Cifrado de datos ............................................................................................................. 205
Identity and Access Management .............................................................................................. 205
Validación de la conformidad .................................................................................................... 206
Aplicación de TLS 1.2 .............................................................................................................. 207
Configuración dAWS CLIVersión 1 para aplicar una versión mínima de TLS 1.2 ........................ 207
Configuración dAWS CLIVersión 2 para aplicar una versión mínima de TLS 1.2 ........................ 209
Solución de errores ......................................................................................................................... 210
General: Asegúrese de que está ejecutando una versión reciente de laAWS CLI. .............................. 210
General: Usar--debugopción. .................................................................................................. 210
Al ejecutar aws, aparece el error "command not found" (comando no encontrado) ............................. 214
Causa posible: La ruta del sistema operativo no se actualizó durante la instalación .................... 214
Aparece el error "access denied" (acceso denegado) .................................................................... 214
Causa posible: LaAWS CLIEl archivo de programa de la no tiene el permiso «run» (ejecutar) ....... 214
Causa posible: Su identidad de IAM no tiene permiso para realizar la operación ........................ 215
Aparece el error "invalid credentials" (credenciales no válidas) ....................................................... 215
Causa posible: LaAWS CLIestá leyendo las credenciales de una ubicación inesperada. .............. 215
Causa posible: El reloj del equipo no está sincronizado ........................................................ 216
Aparece el error "signature does not match" (la firma no coincide) .................................................. 216
Causa posible: El reloj no está sincronizado con laAWSServidores. ........................................ 216
Causa posible: Su sistema operativo está manejando malAWSClaves secretas que contienen
determinados caracteres especiales. .................................................................................. 217
Resources .............................................................................................................................. 217
Migrar/Romper cambios ................................................................................................................... 218
Variable de entorno de codificación de archivos ........................................................................... 218
Pasar parámetros binarios ........................................................................................................ 219
Se mejoró la gestión de etiquetas y propiedades de Amazon S3 durantes3 copyOperaciones de ........ 219
Las páginas web no se recuperan automáticamente para los parámetros ......................................... 220
Paginación de salida ............................................................................................................... 220
Todos los valores de fecha/hora en formato ISO 8601 .................................................................. 221
Control mejorado de la implementación de AWS CloudFormation ................................................... 222
Claves y rutas coherentes de Amazon S3 .................................................................................. 222
Región us-east-1 y Amazon S3 ................................................................................................. 222

v
AWS Command Line Interface Guía del usuario

AWS STS y puntos de enlace regionales ................................................................................... 222


Dar de baja ecr get-login .................................................................................................. 223
Cambiar el soporte para [plugins] ......................................................................................... 223
Sin alias ocultos ...................................................................................................................... 223
Historial de revisión ......................................................................................................................... 225

vi
AWS Command Line Interface Guía del usuario

Python 2.7, 3.4 y 3.5 están en desuso paraAWS CLIVersión 1. Para obtener más información,
consulteAWS CLISección 1 deAcerca de laAWS CLIversiones.

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.

vii
AWS Command Line Interface Guía del usuario
AWS CLIVersiones

¿Qué es el AWS Command Line


Interface?
La AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le permite
interactuar con los servicios de AWS mediante el uso de comandos en el shell de la línea de comandos.
Con una configuración mínima, elAWS CLIle permite comenzar a utilizar comandos de ejecución que
implementen una funcionalidad equivalente a la que ofrece la basada en navegadorAWS Management
Consoledesde el símbolo del sistema en su programa terminal:

• Conchas de Linux— Utilice programas de shell comunes comobash,zsh, ytcshPara ejecutar comandos
en Linux o MacOS.
• Línea de comandos de Windows: en Windows, ejecute comandos en el símbolo del sistema de Windows
o en PowerShell.
• De forma remota— Ejecute comandos en instancias de Amazon Elastic Compute Cloud (Amazon EC2) a
través de un programa de terminal remoto, como PuTTY o SSH, o conAWS Systems Manager.

Todas las IaaS (infraestructura como servicio)AWSadministración, administración y acceso en elAWS


Management Consoleestán disponibles en.AWSAPI yAWS CLI. Las nuevas funcionalidades y servicios de
IaaS de AWS proporcionan la funcionalidad completa de la AWS Management Console a través de la API
y de la CLI en el momento del lanzamiento o en el plazo de 180 días del lanzamiento.

La AWS CLI proporciona acceso directo a las API públicas de los servicios de AWS. Puede explorar
las capacidades de un servicio con la AWS CLI y desarrollar scripts de shell para administrar los
recursos. Además de los comandos equivalentes de la API de bajo nivel, varios servicios de AWS ofrecen
personalizaciones para la AWS CLI. Las personalizaciones pueden incluir comandos de un nivel superior
que simplifican el uso de un servicio con una API compleja.

AWS CLIVersiones
La AWS CLI está disponible en dos versiones y la información de esta guía se aplica a ambas versiones a
menos que se indique lo contrario.

• VERSION 2.x— La versión actual, generalmente disponible delAWS CLIque está diseñada para ser
utilizada en entornos de producción.
• VERSION 1.x— La versión anterior deAWS CLIestá disponible para compatibilidad con versiones
anteriores.

Para obtener más información sobre las distintas versiones, consulteAcerca de laAWS CLIVersiones
de (p. 2)

Mantenimiento y soporte para las versiones


principales del SDK
Para obtener información sobre el mantenimiento y la compatibilidad con las versiones principales del SDK
y sus dependencias subyacentes, consulte lo siguiente en la secciónAWSGuía de referencia de SDK y
herramientas:

1
AWS Command Line Interface Guía del usuario
Acerca de Amazon Web Services

• AWS SDK y política de mantenimiento de herramientas


• AWS SDK y herramientas de compatibilidad con la versión de

Acerca de Amazon Web Services


Amazon Web Services (AWS) es una colección de servicios de infraestructura digitales que los
desarrolladores pueden usar cuando desarrollan sus aplicaciones. Los servicios incluyen informática,
almacenamiento, base de datos y sincronización de aplicaciones (mensajería y puesta en cola).AWSutiliza
un modelo de servicio de pago por uso. Solo se le cobrará por los servicios que usted (o su
aplicación) utilice. Además, para hacerAWSmás accesible como una plataforma para prototipos
y experimentos,AWSofrece un nivel de uso gratuito. En esta capa, los servicios son gratuitos por
debajo de determinado nivel de uso. Para obtener más información acerca deAWSy la capa gratuita,
consultePrueba de conducciónAWSEn la capa de uso gratuita. Para obtener unaAWS, abra el cuadro de
diálogoAWSPágina de inicio dey luego haga clic en.Inscripción.

Acerca de laAWS CLIVersiones de


La AWS CLI está disponible en dos versiones y la información de esta guía se aplica a ambas versiones a
menos que se indique lo contrario. Para comprobar qué versión puede tener instalada actualmente, ejecute
el comandoaws --versionen su shell. El valor devuelto proporciona la versión actual que ha instalado.
El siguiente ejemplo muestra que la versión en ejecución es 2.1.29.

$ aws --version
aws-cli/2.1.29 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/2.0.0

Para obtener información sobre mantenimiento y soporte técnico, consulte laAWSPolítica de


mantenimiento de SDK y herramientas.

AWS CLIVERSION 2
LaAWS CLILa versión 2 es la versión principal más reciente deAWS CLIy 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. Hay algunos cambios
importantes de la versión 1 que pueden requerir que se modifiquen los scripts. Para obtener una lista de
los cambios importantes en la versión 2, consulteRomper cambios: migrar desdeAWS CLIVersión 1 a
versión 2 (p. 218).

LaAWS CLILa versión 2 se puede instalar solo como un instalador empaquetado. Aunque es posible
encontrarlo en los administradores de paquetes, estos son paquetes no compatibles y no oficiales que no
han sido generados ni están administrados porAWS. Le recomendamos que solamente instale la AWS CLI
desde los puntos de distribución oficiales de AWS, tal y como se indica en esta guía.

Para instalar elAWS CLIPara la versión 2 deInstalar, actualizar y desinstalar elAWS CLIVersión
2 (p. 6).

Para ver el historial de versiones, consulte laAWS CLIRegistro de cambios de la versión 2enGitHub.

AWS CLIVERSION 1
Warning

Python 2.7 fue obsoleto por la Python Software Foundation el 1 de enero de 2020. En el futuro, los
clientes que utilizan elAWS CLIversión 1 debería pasar a usar Python 3, con un mínimo de Python

2
AWS Command Line Interface Guía del usuario
Uso de los ejemplos

3.6. El soporte de Python 2.7 está obsoleto para las nuevas versiones de laAWS CLIversión 1 a
partir del 15/7/2021. Python 3.4 y 3.5 está obsoleto a partir del 1/2/2021.
Para seguir utilizandoAWS CLIversión 1 con versiones anteriores de Python, consulte la matriz de
soporte de versiones de Python a continuación.
Para obtener instrucciones de instalación de Python, consulteDescargar Pythonen la página de
PythonGuía para principiantes.

LaAWS CLILa versión 1 es laAWS CLIy seguimos ofreciendo soporte. Sin embargo, no será posible
obtener en laAWS CLIes posible que la versión 2 no se devuelva a laAWS CLIVersión 1. Para utilizar estas
características, debe instalar laAWS CLIVersión 2.

LaAWS CLIversión 1 se crea usando el SDK para Python y, por lo tanto, requiere que instale una versión
compatible de Python.

Compatibilidad con la versión de Python

AWS CLI version Versión de Python compatible

Versiones a partir del 15/7/2021 Python 3.6+

1.19.0: corriente Python 2.7+, Python 3.6+

1.17 — 1.18.x Python 2.7+, Python 3.4+

1.0 — 1.16.x Python 2.6 y versiones anteriores de Python 3.3 y


versiones anteriores

Para instalar elAWS CLIPara la versión 1 deInstalar, actualizar y desinstalar elAWS CLIVersión
1 (p. 26).

Para ver el historial de versiones, consulte laAWS CLIRegistro de cambios de versión 1enGitHub.

Mediante laAWS CLIEjemplos de


LaAWS Command Line Interface(AWS CLI) en esta guía se formatean con las siguientes convenciones:

• Pregunta— El símbolo del sistema utiliza el símbolo de Linux y se muestra como ($ ). En los comandos
específicos de Windows, C:\> se utiliza como símbolo del sistema. No incluya el símbolo al escribir
comandos.
• Directory— Cuando los comandos se deben ejecutar desde un directorio específico, el nombre del
directorio se muestra antes del símbolo de comando.
• Entradas de usuario— El texto del comando que usted escriba en la línea de comando se formatea
comouser input.
• Texto reemplazableTexto variable, incluidos los nombres de los recursos que usted elija o los ID
generados porAWSque debe incluir en los comandos, tiene el formato deTexto reemplazable. En
comandos de varias líneas o comandos en los que se requiere una entrada específica desde el teclado,
los comandos de teclado también se pueden mostrar como texto reemplazable.
• Salida— Salida devuelta porAWSse muestra bajo la entrada del usuario, y se formatea comocomputer
output.

Los siguientes ejemplos deaws configureEjemplo de comando muestra la entrada del usuario, el texto
reemplazable y la salida:

1. Escribaaws configureEn la línea de comandos y presione.Escriba.

3
AWS Command Line Interface Guía del usuario
Documentación y recursos adicionales

2. La AWS CLI devuelve líneas de texto, solicitándole que introduzca información adicional.
3. Introduzca cada una de sus claves de acceso y después pulse Intro.
4. A continuación, especifique el nombre de una región de AWS en el formato que se muestra y pulse
Intro. Después, vuelva a pulsar Intro para omitir la configuración del formato de salida.
5. El comando Intro final se muestra como texto reemplazable porque no hay entrada del usuario para
esa línea.

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER

El siguiente ejemplo muestra un comando simple con salida. Para usar este ejemplo, introduzca el texto
completo del comando (el texto resaltado después del símbolo del sistema) y pulse Intro. El nombre
del grupo de seguridad, my-sg, se puede sustituir por el nombre del grupo de seguridad deseado. El
documento JSON, incluidas las llaves, produce una salida. Si configura la CLI para producir la salida
en formado de texto o tabla, se aplicará un formato diferente a la misma. JSON es el formato de salida
predeterminado.

$ aws ec2 create-security-group --group-name my-sg --description "My security group"


{
"GroupId": "sg-903004f8"
}

Documentación y recursos adicionales


AWS CLIDocumentación y recursos
Además de esta guía del usuario, estos son algunos otros recursos online útiles para laAWS CLI.

• AWS CLI Guía de referencia de la versión 1


• AWS CLI Guía de referencia de la versión 2
• AWS CLIRepositorio GitHubPuede ver y bifurcar el código fuente deAWS CLIen GitHub. Únase a la
comunidad de usuarios de GitHub para hacernos llegar sus comentarios, solicitar características y
realizar aportaciones.
• AWS CLIrepositorio de ejemplos de aliasPuede ver y bifurcarAWS CLIejemplos de alias en GitHub.
• AWS CLI notes de cambio de la versión 1
• AWS CLI notes de cambio de la versión 2
• AWS CLI repositorio de ejemplos de código

OtrosAWSSDK de
Según su caso de uso, es posible que desee elegir uno de losAWSSDK o enAWS Tools for PowerShell:

• AWS Tools for PowerShell


• AWS SDK for Java
• AWS SDK for .NET
• AWS SDK for JavaScript

4
AWS Command Line Interface Guía del usuario
OtrosAWSSDK de

• AWS SDK for Ruby


• AWS SDK for Python (Boto)
• AWS SDK for PHP
• AWS SDK for Go
• AWS Mobile SDK for iOS
• AWS Mobile SDK for Android

5
AWS Command Line Interface Guía del usuario
AWS CLIVersión 2

Instalar, actualizar y desinstalar


elAWS CLI
LaAWS Command Line Interface(AWS CLI) está disponible en las siguientes versiones:

• La versión 2‐ es la versión principal más reciente de laAWS CLIY es compatible con todas las
características más recientes. Para obtener más información sobre laAWS CLIPara la versión 2 deAWS
CLIVERSION 2 (p. 2).
• Versión 1‐ es el originalAWS CLIY seguimos ofreciendo soporte. Sin embargo, las principales
características nuevas introducidas en laAWS CLIes posible que la versión 2 no se pueda retroceder
alAWS CLILanzamiento de versión 1. Para obtener más información sobre laAWS CLIPara la versión 1
deAWS CLIVERSION 1 (p. 2).

Para comprobar la versión que tiene instalada, use el siguiente comando.

C:\> aws --version


aws-cli/2.1.29 Python/3.7.4 Windows/10 botocore/2.0.0

Para obtener instrucciones sobre la instalación, actualización y desinstalación deAWS CLI, seleccione su
versión:

Versiones
• Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6)
• Instalar, actualizar y desinstalar elAWS CLIVersión 1 (p. 26)

Instalar, actualizar y desinstalar elAWS CLIVersión


2
En este tema, se proporcionan enlaces a información acerca de cómo instalar, actualizar y desinstalar
la versión 2 de laAWS Command Line Interface(AWS CLI) en los sistemas operativos compatibles. Para
obtener información sobre las últimas versiones deAWS CLIConsulte la versión 2 deAWS CLINotas de
cambios de versión 2en GitHub.

AWS CLIinstrucciones de instalación de la versión 2:


• Uso de laAWS CLIimagen de Docker de versión 2 (p. 6)
• Instalar, actualizar y desinstalar elAWS CLIVersión 2 de Linux (p. 12)
• Instalar, actualizar y desinstalar elAWS CLIVersión 2 de macOS (p. 20)
• Instalar, actualizar y desinstalar elAWS CLIversión 2 de Windows (p. 25)

Uso de laAWS CLIimagen de Docker de versión 2


En este tema se describe cómo ejecutar, controlar versiones y configurar laAWS CLIversión 2 en Docker.
Para obtener más información sobre cómo usar Docker, consulte la documentación de Docker.

6
AWS Command Line Interface Guía del usuario
Docker

Las imágenes oficiales de Docker proporcionan aislamiento, portabilidad y seguridad que AWS apoya
y mantiene directamente. Esto le permite utilizar laAWS CLIVersión 2 en un entorno basado en
contenedores sin tener que administrar la instalación usted mismo.
Note

LaAWS CLILa versión 2 es la única herramienta que se admite en laAWSUso de imagen de


Docker.

Temas
• Prerequisites (p. 7)
• Ejecute el oficialAWS CLIimagen de Docker de versión 2 (p. 7)
• Uso de versiones y etiquetas específicas (p. 8)
• Actualización a la imagen de Docker más reciente (p. 8)
• Compartir archivos de host, credenciales, variables de entorno y configuración (p. 8)
• Acortamiento del comando Docker (p. 11)

Prerequisites
Debe tener instalado Docker. Para obtener instrucciones de instalación, consulte el sitio web de Docker.

Para verificar la instalación de Docker, ejecute el siguiente comando y confirme que hay un resultado.

$ docker --version
Docker version 19.03.1

Ejecute el oficialAWS CLIimagen de Docker de versión 2


El oficialAWS CLILa imagen Docker de la versión 2 de la está alojada en DockerHub en laamazon/aws-
cli. La primera vez que utilice el comando docker run, la imagen más reciente de Docker se descarga
en su equipo. Cada uso posterior del comando docker run se ejecuta desde la copia local.

Para ejecutar laAWS CLIversión 2 Docker, utilice ladocker runcomando de.

$ docker run --rm -it amazon/aws-cli command

El comando funciona de la siguiente manera:

• docker run --rm -it amazon/aws-cli— El equivalente de laawsejecutable. Cada vez que
ejecuta este comando, Docker hace girar un contenedor de la imagen amazon/aws-cli descargada y
ejecuta el comando aws. De forma predeterminada, la imagen Docker utiliza la versión más reciente de
laAWS CLIVersión 2

Por ejemplo, para llamar al comando aws --version en Docker, ejecute lo siguiente.

$ docker run --rm -it amazon/aws-cli --version


aws-cli/2.1.29 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.0.0dev10

• --rm: especifica que se limpie el contenedor después de que el comando salga.


• -it— Especifica que se abra un pseudoTY constdin. Esto le permite proporcionar entrada a laAWS
CLIVersión 2 mientras se está ejecutando en un contenedor, por ejemplo, mediante el uso de laaws
configureyaws helpcommands. Si está ejecutando secuencias de comandos,-itno es necesario. Si
experimenta errores con los scripts, omita-itde su llamada Docker.

7
AWS Command Line Interface Guía del usuario
Docker

Para obtener más información sobre el comando docker run, consulte la guía de referencia de Docker.

Uso de versiones y etiquetas específicas


El oficialAWS CLILa imagen de Docker de la versión 2 de la tiene varias versiones que puede usar,
comenzando con la versión 2.0.6. Para ejecutar una versión específica de laAWS CLI, agregue la etiqueta
adecuada a sudocker runcomando de. La primera vez que utiliza el comando docker run con
una etiqueta, la imagen más reciente de Docker para esa etiqueta se descarga en el equipo. Cada uso
posterior del comando docker run con esa etiqueta se ejecuta desde la copia local.

Puede utilizar dos tipos de etiquetas:

• latestDefine la versión más reciente de laAWS CLIVersión 2 para la imagen de Docker. Le


recomendamos que utilice lalatestCuando desee la versión más reciente de laAWS CLIVersión 2 Sin
embargo, no hay garantías de compatibilidad con versiones anteriores al usar esta etiqueta. La etiqueta
latest se utiliza de forma predeterminada en el comando docker run. Para utilizar explícitamente la
etiqueta latest, agregue la etiqueta al nombre de la imagen del contenedor.

$ docker run --rm -it amazon/aws-cli:latest command

• <major.minor.patch>Define una versión específica de laAWS CLIVersión 2 para la imagen de


Docker. Si planea utilizar la imagen Docker en producción, le recomendamos que use una versión
específica de laAWS CLIversión 2 para garantizar la compatibilidad con versiones anteriores. Por
ejemplo, para ejecutar la versión 2.0.6, agregue la versión al nombre de la imagen del contenedor.

$ docker run --rm -it amazon/aws-cli:2.0.6 command

Actualización a la imagen de Docker más reciente


Dado que la imagen más reciente de Docker se descarga en el equipo solo la primera vez que utiliza el
docker run comando, debe extraer manualmente una imagen actualizada. Para actualizar manualmente
a la versión más reciente, le recomendamos que extraiga la imagen etiquetada latest. Al extraer la
imagen de Docker se descarga la versión más reciente en el equipo.

$ docker pull amazon/aws-cli:latest

Compartir archivos de host, credenciales, variables de entorno y


configuración
Ya que elAWS CLIVersión 2 se ejecuta en un contenedor, la CLI no puede acceder de forma
predeterminada al sistema de archivos de host, que incluye la configuración y las credenciales. Para
compartir el sistema de archivos host, las credenciales y la configuración en el contenedor, monte el
directorio ~/.aws del sistema host en el contenedor en /root/.aws con la etiqueta -v del comando
docker run. Esto permite que elAWS CLIVersión 2 que se está ejecutando en el contenedor para
localizar la información del archivo de host.

Linux and macOS

$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command

Windows Command Prompt

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli command

8
AWS Command Line Interface Guía del usuario
Docker

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli command

Para obtener más información acerca la etiqueta -v y el montaje, consulte la guía de referencia de Docker.

Ejemplo 1: Proporcionar credenciales y configuración


En este ejemplo, proporcionamos las credenciales de host y la configuración al ejecutar las3 lsPara
mostrar los buckets en Amazon Simple Storage Service (Amazon S3). Los siguientes ejemplos utilizan
la ubicación predeterminada paraAWS CLIcredenciales y archivos de configuración, para utilizar una
ubicación diferente, cambie la ruta del archivo.

Linux and macOS

$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli s3 ls


2020-03-25 00:30:48 aws-cli-docker-demo

Windows Command Prompt

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli s3 ls


2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli s3 ls

Puede llamar a variables de entorno del sistema específicas mediante la-eIndicador. Para utilizar una
variable de entorno, llámelo por su nombre.

Linux and macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls


2020-03-25 00:30:48 aws-cli-docker-demo

Windows Command Prompt

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3


ls
2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-


cli s3 ls

Ejemplo 2: Descarga de un archivo de Amazon S3 en el sistema de host


Para algunos comandos de la AWS CLI versión 2, puede leer archivos del sistema de host en el
contenedor o escribir archivos desde el contenedor en el sistema de host.

En este ejemplo, descargamos el objeto S3 s3://aws-cli-docker-demo/hello a su sistema de


archivos local montando el directorio de trabajo actual en el directorio /aws del contenedor. Al descargar el

9
AWS Command Line Interface Guía del usuario
Docker

objeto hello en el directorio /aws del contenedor, el archivo también se guarda en el directorio de trabajo
actual del sistema de host.

Linux and macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli s3 cp s3://


aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello

Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%\aws amazon/aws-cli s3 cp


s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v %cd%\aws amazon/aws-cli


s3 cp s3://aws-cli-docker-demo/hello .

Para confirmar que el archivo descargado existe en el sistema de archivos local, ejecute lo siguiente.

Linux and macOS

$ cat hello
Hello from Docker!

Windows

$ type hello
Hello from Docker!

Ejemplo 3: Uso de la variable de entorno AWS_PROFILE


Puede llamar a variables de entorno del sistema específicas mediante la-eIndicador. Llame a cada
variable de entorno que desee usar. En este ejemplo, proporcionamos las credenciales de host, la
configuración y laAWS_PROFILEcuando se ejecuta la variables3 lsPara mostrar los buckets en Amazon
Simple Storage Service (Amazon S3).

Linux and macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls


2020-03-25 00:30:48 aws-cli-docker-demo

Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3


ls
2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE amazon/aws-


cli s3 ls

10
AWS Command Line Interface Guía del usuario
Docker

Acortamiento del comando Docker


Para acortar el comando aws de Docker, le sugerimos que utilice la capacidad de su sistema operativo
para crear un alias symbolic link (enlace simbólico) o alias en Linux y macOS, o doskey en
Windows. Para establecer el alias de aws, puede ejecutar uno de los siguientes comandos:

• Para obtener acceso básico a los comandos de aws, ejecute lo siguiente.


Linux and macOS

$ alias aws='docker run --rm -it amazon/aws-cli'

Windows Command Prompt

C:\> doskey aws=docker run --rm -it amazon/aws-cli $*

Windows PowerShell

C:\> Set-Alias -Name aws -Value 'docker run --rm -it amazon/aws-cli: $*'

• Para acceder al sistema de archivos host y a las opciones de configuración cuando se utilizan comandos
de aws, ejecute lo siguiente.
Linux and macOS

$ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'

Windows Command Prompt

C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%\aws


amazon/aws-cli $*

Windows PowerShell

C:\> Set-Alias -Name aws -Value 'docker run --rm -it -v $env:userprofile\.aws:/
root/.aws -v %cd%\aws amazon/aws-cli $*'

• Para asignar una versión específica para usarla en su alias de aws, agregue la etiqueta de versión.
Linux and macOS

$ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-


cli:2.0.6'

Windows Command Prompt

C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%\aws


amazon/aws-cli:2.0.6 $*

Windows PowerShell

C:\> Set-Alias -Name aws -Value 'docker run --rm -it -v $env:userprofile\.aws:/
root/.aws -v %cd%\aws amazon/aws-cli:2.0.6 $*'

11
AWS Command Line Interface Guía del usuario
Linux

Una vez configurado el alias, podrá ejecutar laAWS CLIVersión 2 desde dentro de un contenedor Docker
como si estuviera instalado en su sistema host.

$ aws --version
aws-cli/2.1.29 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.0.0dev10

Instalar, actualizar y desinstalar elAWS CLIVersión 2


de Linux
En esta sección se describe cómo instalar, actualizar y quitar laAWS CLIversión 2 en Linux. LaAWS CLILa
versión 2 no tiene dependencias de otros paquetes de Python. Tiene una copia propia incrustada de
Python incluida en el instalador.
Important

Las versiones 1 y 2 de la AWS CLI utilizan el mismo nombre de comando de aws. Si tiene ambas
versiones instaladas, el equipo utiliza la primera que encuentra en la ruta de búsqueda. Si ya
instalóAWS CLIPara usar la versión 1, le recomendamos que realice una de las siguientes
acciones para usarAWS CLIVersión 2:

• RecomendadoDesinstalación deAWS CLIversión 1 y usar soloAWS CLIVersión 2 Para obtener


instrucciones de desinstalación, determine el método utilizado para instalarAWS CLIPara
obtener la versión 1 y siga las instrucciones de desinstalación adecuadas para su sistema
operativo enInstalar, actualizar y desinstalar elAWS CLIVersión 1 (p. 26)
• Utilice la capacidad de su sistema operativo para crear un enlace simbólico (symlink) o alias con
un nombre diferente para uno de los dos comandos de aws. Por ejemplo, puede usar un enlace
simbólico o alias en Linux y macOS, o DOSKEY en Windows.

Para obtener información sobre cómo romper cambios entre la versión 1 y 2, consulteRomper
cambios: migrar desdeAWS CLIVersión 1 a versión 2 (p. 218).

Temas
• Requisitos previos para Linux (p. 12)
• Instalación delAWS CLIVersión 2 de Linux (p. 13)
• Actualizar elAWS CLIVersión 2 de Linux (p. 15)
• Desinstalación deAWS CLIVersión 2 de Linux (p. 17)
• Verificación de la integridad y autenticidad de los archivos de instalador descargados (p. 18)

Requisitos previos para Linux


• Debe poder extraer o “descomprimir” el paquete descargado. Si su sistema operativo no tiene el
comando unzip integrado, utilice un equivalente.
• LaAWS CLIUso de la versión 2glibc,groff, yless. Estos se incluyen de forma predeterminada en la
mayoría de las distribuciones principales de Linux.
• Apoyamos laAWS CLIVersión 2 en versiones de 64 bits de las distribuciones recientes de CentOS,
Fedora, Ubuntu, Amazon Linux 1 y Amazon Linux 2.
• Apoyamos laAWS CLIVersión 2 en Linux ARM de 64 bits.
• Debido a que AWS no mantiene repositorios de terceros, no podemos garantizar que contengan la
última versión de AWS CLI.

12
AWS Command Line Interface Guía del usuario
Linux

Instalación delAWS CLIVersión 2 de Linux


Siga estos pasos desde la línea de comandos para instalar la AWS CLI en Linux.

Proporcionamos los pasos en un grupo fácil de copiar y pegar basado en si usa Linux de 64 bits o Linux
ARM. Consulte las descripciones de cada línea en los pasos que se indican a continuación.

Linux x86 (64-bit)

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"


unzip awscliv2.zip
sudo ./aws/install

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre del
archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-linux-
x86_64-2.0.30.zipSe obtiene el siguiente resultado:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o
"awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
Linux ARM

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"


unzip awscliv2.zip
sudo ./aws/install

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre del
archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-linux-
aarch64-2.0.30.zipSe obtiene el siguiente resultado:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip" -o
"awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.

1. Descargue el archivo de instalación de una de las siguientes maneras:

• UsarcurlComando de la— El-oEn este ejemplo, la opción especifica el nombre de archivo en el


que se escribe el paquete descargado. Las opciones del comando de ejemplo siguiente escriben el
archivo descargado en el directorio actual con el nombre local awscliv2.zip.
Linux x86 (64-bit)

Para la versión actual delAWS CLI,Para ello, use el siguiente comando:

13
AWS Command Line Interface Guía del usuario
Linux

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o
"awscliv2.zip"

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-
linux-x86_64-2.0.30.zipSe obtiene el siguiente resultado:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o
"awscliv2.zip"

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
Linux ARM

Para la versión actual delAWS CLI,Para ello, use el siguiente comando:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o
"awscliv2.zip"

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-
linux-aarch64-2.0.30.zipSe obtiene el siguiente resultado:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip"
-o "awscliv2.zip"curl "https://awscli.amazonaws.com/awscli-exe-linux-
x86_64-2.0.30.zip" -o "awscliv2.zip"

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
• Descargue desde la URL: para descargar el instalador con su navegador, utilice una de las
direcciones URL siguientes. Puede verificar la integridad y autenticidad del archivo de instalación
descargado antes de extraer (descomprimir) el paquete. Para obtener más información, consulte
Verificación de la integridad y autenticidad de los archivos de instalador descargados (p. 18).
Linux x86 (64-bit)

Para obtener la versión más reciente de laAWS CLI: https://awscli.amazonaws.com/awscli-exe-


linux-x86_64.zip

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-
linux-x86_64-2.0.30.zipSe obtiene el siguiente resultado:https://awscli.amazonaws.com/
awscli-exe-linux-x86_64-2.0.30.zip

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
Linux ARM

Para obtener la versión más reciente de laAWS CLI: https://awscli.amazonaws.com/awscli-exe-


linux-aarch64.zip

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-
exe-linux-aarch64-2.0.30.zipSe obtiene el siguiente resultado:https://
awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip

14
AWS Command Line Interface Guía del usuario
Linux

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
2. (Opcional) Verifique la integridad del archivo zip siguiendo los pasos dethe section called “Verificación
de la integridad y autenticidad de los archivos de instalador descargados” (p. 18).
3. Descomprima el instalador. Si su distribución de Linux no tiene un comando unzip integrado, use un
equivalente para descomprimirlo. El siguiente comando de ejemplo descomprime el paquete y crea un
directorio denominado aws en el directorio actual.

$ unzip awscliv2.zip

4. Ejecute el programa de instalación. El comando de instalación utiliza un archivo denominado install


en el directorio aws recién descomprimido. De forma predeterminada, todos los archivos se instalan
en /usr/local/aws-cli y se crea un enlace simbólico en /usr/local/bin. El comando incluye
sudo para conceder permisos de escritura en esos directorios.

$ sudo ./aws/install

Puede realizar la instalación sin sudo si especifica directorios en los que ya tiene permisos de
escritura. Utilice las siguientes instrucciones en el comando install para especificar la ubicación de
instalación:

• Asegúrese de que las rutas que proporcione a los parámetros -i y -b no contengan nombres
de volumen ni nombres de directorio que contengan caracteres de espacio u otros caracteres de
espacio en blanco. Si hay un espacio, la instalación falla.
• --install-diror-i: esta opción especifica el directorio en el que se copiarán todos los archivos.

El valor predeterminado es /usr/local/aws-cli.


• --bin-diror-b— Esta opción especifica que elawsen el directorio de instalación está
simbólicamente vinculado al archivoawsEn la ruta especificada. Debe tener permisos de escritura
en el directorio especificado. Al crear un enlace simbólico a un directorio que ya está en su ruta, se
elimina la necesidad de agregar el directorio de instalación a la variable $PATH del usuario.

El valor predeterminado es /usr/local/bin.

$ ./aws/install -i /usr/local/aws-cli -b /usr/local/bin

5. Confirme la instalación.

$ aws --version
aws-cli/2.1.29 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/2.0.0

Actualizar elAWS CLIVersión 2 de Linux


Para actualizar la copia de laAWS CLISiga estos pasos desde la línea de comandos de Linux.

1. Descargue el archivo de instalación de una de las siguientes maneras:

Mediante lacurlComando de la— Las opciones del comando de ejemplo siguiente escriben el archivo
descargado en el directorio actual con el nombre localawscliv2.zip.

En este ejemplo, la opción -o especifica el nombre de archivo en el que se escribe el paquete


descargado. En este ejemplo, el archivo se escribe awscliv2.zip en el directorio actual.

15
AWS Command Line Interface Guía del usuario
Linux

Linux x86 (64-bit)

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-
linux-x86_64-2.0.30.zipSe obtiene el siguiente resultado:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o
"awscliv2.zip"

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
Linux ARM

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o
"awscliv2.zip"

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-
linux-aarch64-2.0.30.zipSe obtiene el siguiente resultado:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64-2.0.30.zip" -o
"awscliv2.zip"

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.

Descargue desde la URLPara descargar el instalador con su navegador, utilice una de las direcciones
URL siguientes. Puede verificar la integridad y autenticidad del archivo de instalación después de
descargarlo. Para obtener más información antes de descomprimir el paquete, consulte Verificación de
la integridad y autenticidad de los archivos de instalador descargados (p. 18).

Linux x86 (64-bit)

Para obtener la versión más reciente de laAWS CLI: https://awscli.amazonaws.com/awscli-exe-


linux-x86_64.zip

Para una versión específica de laAWS CLI: Añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-
linux-x86_64-2.0.30.zipSe obtiene el siguiente resultado:https://awscli.amazonaws.com/
awscli-exe-linux-x86_64-2.0.30.zip. Para obtener una lista de las versiones, consulte elAWS
CLIRegistro de cambios de versión 2enGitHub.
Linux ARM

Para obtener la versión más reciente de laAWS CLI: https://awscli.amazonaws.com/awscli-exe-


linux-aarch64.zip

Para una versión específica de laAWS CLI: Añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-

16
AWS Command Line Interface Guía del usuario
Linux

linux-aarch64-2.0.30.zipSe obtiene el siguiente resultado: https://awscli.amazonaws.com/


awscli-exe-linux-aarch64-2.0.30.zip. Para obtener una lista de las versiones, consulte elAWS
CLIRegistro de cambios de versión 2enGitHub.
2. Descomprima el instalador. Si su distribución de Linux no tiene un comando unzip integrado, use
un equivalente para instalarlo. El siguiente comando de ejemplo descomprime el paquete y crea un
directorio denominado aws en el directorio actual.

$ unzip awscliv2.zip

3. Para asegurarse de que la actualización se instala en la misma ubicación que la actualAWS CLI,
busque el enlace simbólico y el directorio de instalación existentes.

• Utilice el comando which para buscar el enlace simbólico. Esto le dará la ruta que puede utilizar
con el parámetro --bin-dir.

$ which aws
/usr/local/bin/aws

• Utilice el comando ls para buscar el directorio al que apunta el enlace simbólico. Esto le dará la
ruta que puede utilizar con el parámetro --install-dir.

$ ls -l /usr/local/bin/aws
lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/aws -> /usr/local/aws-
cli/v2/current/bin/aws

4. Utilice la información del enlace simbólico y del instalador para construir el comando install con el
parámetro --update.

$ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update

5. Confirme la instalación.

$ aws --version
aws-cli/2.1.29 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/2.0.0

Desinstalación deAWS CLIVersión 2 de Linux


Para desinstalar elAWS CLIVersión 2, ejecute los siguientes comandos.

1. Busque el enlace simbólico y las rutas de instalación.

• Utilice el comando which para encontrar el enlace simbólico. Se muestra la ruta que utilizó con el
parámetro --bin-dir.

$ which aws
/usr/local/bin/aws

• Utilice el comando ls para buscar el directorio al que apunta el enlace simbólico. Esto le da la ruta
que utilizó con el parámetro --install-dir.

$ ls -l /usr/local/bin/aws
lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/aws -> /usr/local/aws-
cli/v2/current/bin/aws

2. Elimine los dos enlaces simbólicos del directorio --bin-dir. Si su cuenta de usuario tiene permiso
de escritura en estos directorios, no es necesario que utilice sudo.

17
AWS Command Line Interface Guía del usuario
Linux

$ sudo rm /usr/local/bin/aws
$ sudo rm /usr/local/bin/aws_completer

3. Elimine directorio --install-dir. Si su cuenta de usuario tiene permiso de escritura en este


directorio, no es necesario que utilice sudo.

$ sudo rm -rf /usr/local/aws-cli

Verificación de la integridad y autenticidad de los archivos de


instalador descargados
LaAWS CLIPaquete de instalador de la versión 2 de.zipLos archivos están firmados criptográficamente
mediante firmas PGP. Puede seguir los pasos indicados a continuación para verificar las firmas con la
herramienta GnuPG. Si hay algún tipo de daño o alteración en los archivos, esta verificación produce un
error, por lo que no debería continuar con la instalación.

En el siguiente ejemplo, se supone que ha descargado el paquete del instalador y lo ha guardado


localmente como awscliv2.zip. Si le ha asignado otro nombre, sustituya ese nombre en los pasos
siguientes.

Para validar los archivos mediante la firma PGP

1. Descargue e instale el comando gpg usando su administrador de paquetes. Para obtener más
información acerca de GnuPG, consulte el sitio web de GnuPG.
2. Para crear el archivo de clave pública, cree un archivo de texto y pegue el siguiente texto en él:

-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG
ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx
PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G
TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz
gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk
C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG
94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO
lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG
fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG
EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX
XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB
tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4WIQT7
Xbd/1cEYuAURraimMQrMRnJHXAUCXYKvtQIbAwUJB4TOAAULCQgHAgYVCgkICwIE
FgIDAQIeAQIXgAAKCRCmMQrMRnJHXJIXEAChLUIkg80uPUkGjE3jejvQSA1aWuAM
yzy6fdpdlRUz6M6nmsUhOExjVIvibEJpzK5mhuSZ4lb0vJ2ZUPgCv4zs2nBd7BGJ
MxKiWgBReGvTdqZ0SzyYH4PYCJSE732x/Fw9hfnh1dMTXNcrQXzwOmmFNNegG0Ox
au+VnpcR5Kz3smiTrIwZbRudo1ijhCYPQ7t5CMp9kjC6bObvy1hSIg2xNbMAN/Do
ikebAl36uA6Y/Uczjj3GxZW4ZWeFirMidKbtqvUz2y0UFszobjiBSqZZHCreC34B
hw9bFNpuWC/0SrXgohdsc6vK50pDGdV5kM2qo9tMQ/izsAwTh/d/GzZv8H4lV9eO
tEis+EpR497PaxKKh9tJf0N6Q1YLRHof5xePZtOIlS3gfvsH5hXA3HJ9yIxb8T0H
QYmVr3aIUes20i6meI3fuV36VFupwfrTKaL7VXnsrK2fq5cRvyJLNzXucg0WAjPF
RrAGLzY7nP1xeg1a0aeP+pdsqjqlPJom8OCWc1+6DWbg0jsC74WoesAqgBItODMB
rsal1y/q+bPzpsnWjzHV8+1/EtZmSc8ZUGSJOPkfC7hObnfkl18h+1QtKTjZme4d
H17gsBJr+opwJw/Zio2LMjQBOqlm3K1A4zFTh7wBC7He6KPQea1p2XAMgtvATtNe
YLZATHZKTJyiqA==
=vYOk
-----END PGP PUBLIC KEY BLOCK-----

Como referencia, a continuación se indican los detalles de la clave pública.

18
AWS Command Line Interface Guía del usuario
Linux

Key ID: A6310ACC4672


Type: RSA
Size: 4096/4096
Created: 2019-09-18
Expires: 2023-09-17
User ID: AWS CLI Team <[email protected]>
Key fingerprint: FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C

3. Importe la clave pública de la AWS CLI con el siguiente comando, sustituyendo public-key-file-
name por el nombre del archivo de la clave pública que ha creado.

$ gpg --import public-key-file-name


gpg: /home/username/.gnupg/trustdb.gpg: trustdb created
gpg: key A6310ACC4672475C: public key "AWS CLI Team <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1

4. Descargue el archivo de firma de la AWS CLI del paquete que descargó. Tiene la misma ruta y el
mismo nombre que el archivo .zip al que corresponde, pero con la extensión .sig. En los siguientes
ejemplos, lo guardaremos en el directorio actual como un archivo llamado awscliv2.sig.

Linux x86 (64-bit)

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip.sig

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-
linux-x86_64-2.0.30.zip.sigSe obtiene el siguiente resultado:

$ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-


x86_64-2.0.30.zip.sig

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
Linux ARM

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-


aarch64.zip.sig

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión2.0.30Seríaawscli-exe-
linux-aarch64-2.0.30.zip.sigSe obtiene el siguiente resultado:

$ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-


aarch64-2.0.30.zip.sig

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
5. Verifique la firma pasando los nombres de archivo .sig y .zip como parámetros al comando gpg.

19
AWS Command Line Interface Guía del usuario
macOS

$ gpg --verify awscliv2.sig awscliv2.zip

El resultado debería tener parecerse al siguiente:

gpg: Signature made Mon Nov 4 19:00:01 2019 PST


gpg: using RSA key FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
gpg: Good signature from "AWS CLI Team <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C

Important

Se espera la advertencia en la salida y ello no indica un problema. Esto se produce porque no


existe una cadena de confianza entre su clave PGP personal (si es su caso) y la clave PGP
de la AWS CLI. Para obtener más información, consulte Red de confianza.

Instalar, actualizar y desinstalar elAWS CLIVersión 2


de macOS
En este tema se describe cómo instalar, actualizar y quitar laAWS CLIversión 2 en macOS.
Important

Las versiones 1 y 2 de la AWS CLI utilizan el mismo nombre de comando de aws. Si tiene ambas
versiones instaladas, el equipo utiliza la primera que encuentra en la ruta de búsqueda. Si ya
instalóAWS CLIPara usar la versión 1, le recomendamos que realice una de las siguientes
acciones para usarAWS CLIVersión 2:

• RecomendadoDesinstalación deAWS CLIversión 1 y usar soloAWS CLIVersión 2 Para obtener


instrucciones de desinstalación, determine el método utilizado para instalarAWS CLIVersión
1 y siga las instrucciones de desinstalación adecuadas para su sistema operativo enInstalar,
actualizar y desinstalar elAWS CLIVersión 1 (p. 26)
• Utilice la capacidad de su sistema operativo para crear un enlace simbólico (symlink) o alias con
un nombre diferente para uno de los dos comandos de aws. Por ejemplo, puede usar un enlace
simbólico o alias en Linux y macOS, o DOSKEY en Windows.

Para obtener información sobre cómo romper cambios entre la versión 1 y 2, consulteRomper
cambios: migrar desdeAWS CLIVersión 1 a versión 2 (p. 218).

Temas
• Prerequisites (p. 20)
• Instalar y actualizar laAWS CLIVersión 2 con la interfaz de usuario de macOS (p. 21)
• Instalar y actualizar laAWS CLIVersión 2 con la línea de comandos de macOS (p. 22)
• Verificar la instalación de (p. 24)
• Desinstalación deAWS CLIVersión 2 (p. 24)

Prerequisites
• Apoyamos laAWS CLIEn versiones compatibles de Apple de macOS de 64 bits.

20
AWS Command Line Interface Guía del usuario
macOS

• Debido a que AWS no mantiene repositorios de terceros, no podemos garantizar que contengan la
última versión de AWS CLI.

Instalar y actualizar laAWS CLIVersión 2 con la interfaz de


usuario de macOS
En los pasos siguientes se muestra cómo instalar o actualizar a la versión más reciente de laAWS
CLIVersión 2 mediante la interfaz de usuario estándar de macOS y su navegador. Si va a actualizar a la
versión más reciente, utilice el mismo método de instalación que utilizó para la versión actual.

1. En el navegador, descarmacOSpkgfile:

• Para obtener la versión más reciente de laAWS CLI: https://awscli.amazonaws.com/AWSCLIV2.pkg


• Para una versión específica de laAWS CLI: Añada un guión y el número de
versión al nombre del archivo. Para este ejemplo, el nombre de archivo de la
versión2.0.30SeríaAWSCLIV2-2.0.30.pkgSe obtiene el siguiente resultado:https://
awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg. Para obtener una lista de las versiones, consulte
elAWS CLIRegistro de cambios de versión 2enGitHub.
2. Haga doble clic en el archivo descargado para iniciar el instalador.
3. Siga las instrucciones en pantalla. Puede elegir instalar instalar laAWS CLIversión 2 de las siguientes
maneras:

• Para todos los usuarios del equipo (requiere)sudo)


• Puede realizar la instalación en cualquier carpeta o elegir la carpeta predeterminada
recomendada de /usr/local/aws-cli.
• El instalador crea automáticamente un enlace simbólico en /usr/local/bin/aws que enlaza al
programa principal en la carpeta de instalación elegida.
• Solo para el usuario actual (no requiere)sudo)
• Puede realizar la instalación en cualquier carpeta en la que tenga permiso de escritura.
• Debido a los permisos de usuario estándar, una vez finalizado el instalador, debe crear
manualmente un archivo de enlace simbólico en $PATH que apunte a los programas aws y
aws_completer mediante los siguientes comandos en el símbolo del sistema. Si su $PATH
incluye una carpeta en la que puede escribir, puede ejecutar el siguiente comando sin sudo si
especifica esa carpeta como ruta de destino. Si no tiene una carpeta en la que se pueda escribir
en $PATH, debe usar sudo en los comandos para obtener permisos para escribir en la carpeta
de destino especificada. La ubicación predeterminada de un enlace simbólico es /usr/local/
bin/.

$ sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws


$ sudo ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer

Note

Puede ver los registros de depuración de la instalación si presiona Cmd+L en cualquier lugar
del instalador. Esto abre un panel de registro que le permite filtrar y guardar el registro. El
archivo de registro también se guarda automáticamente en /var/log/install.log.
4. Para comprobar elAWS CLIPara ello, siga los pasos descritos enVerificar la instalación de (p. 24).

21
AWS Command Line Interface Guía del usuario
macOS

Instalar y actualizar laAWS CLIVersión 2 con la línea de


comandos de macOS
Puede realizar la descarga, instalación y actualización desde la línea de comandos. Si va a actualizar a la
versión más reciente, utilice el mismo método de instalación que utilizó en la versión actual. Puede instalar
laAWS CLIVersión 2 de una de las siguientes formas:

• Para todos los usuarios (p. 22)— Requieresudo.


• Para sólo para el usuario actual (p. 23)— Puede requerirsudopara crear un enlace simbólico en una
carpeta en su$PATHvariable.

Para efectuar la instalación y la actualización para todos los usuarios mediante la línea de
comandos de macOS

Si tienesudoSi lo desea, puede instalar elAWS CLIVersión 2 para todos los usuarios del equipo.

Proporcionamos los pasos agrupados para que resulte sencillo copiarlos y pegarlos. Consulte las
descripciones de cada línea en los pasos siguientes.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"


$ sudo installer -pkg AWSCLIV2.pkg -target /

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre del archivo.
Para este ejemplo, el nombre de archivo de la versión2.0.30SeríaAWSCLIV2-2.0.30.pkgSe obtiene el
siguiente resultado:

$ curl "https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg" -o "AWSCLIV2.pkg"


$ sudo installer -pkg AWSCLIV2.pkg -target /

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión 2enGitHub.

1. Descargar el archivo con el comando curl. En este ejemplo, la opción -o especifica el nombre
de archivo en el que se escribe el paquete descargado. En este ejemplo, el archivo se escribe
AWSCLIV2.pkg en la carpeta actual.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"

Para obtener una versión específica de laAWS CLI,añada un guión y el número


de versión al nombre del archivo. Para este ejemplo, el nombre de archivo de la
versión2.0.30SeríaAWSCLIV2-2.0.30.pkgSe obtiene el siguiente resultado:

$ curl "https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg" -o "AWSCLIV2.pkg"

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
2. Ejecute el programa installer de macOS estándar, especificando el archivo .pkg descargado
como fuente. Utilice el parámetro -pkg para especificar el nombre del paquete que se va a instalar
y el parámetro -target / para indicar la unidad en la que se instalará el paquete. Los archivos se
instalan en /usr/local/aws-cli y se crea automáticamente un symlink en /usr/local/bin.
Debe incluir sudo en el comando para conceder permisos de escritura a esas carpetas.

22
AWS Command Line Interface Guía del usuario
macOS

$ sudo installer -pkg ./AWSCLIV2.pkg -target /

Una vez completada la instalación, los registros de depuración se escriben en /var/log/


install.log.
3. Para comprobar elAWS CLIVersión 2 instalada, siga los pasos descritos enVerificar la instalación de
(p. 24).

Instalar y actualizar solo para el usuario actual mediante la línea de comandos de macOS

1. Para especificar en qué carpeta se instala AWS CLI, debe crear un archivo XML. Es un archivo con
formato XML que se parece al siguiente ejemplo. Deje todos los valores como se muestra, excepto
que debe reemplazar la ruta/Usuarios/MiNombre de usuarioen la línea 9 con la ruta a la
carpeta que deseaAWS CLIversión 2 instalada en. La carpeta ya debe existir o se producirá un error
en el comando. En este ejemplo XML se especifica que el instalador realiza la instalación de la AWS
CLI en la carpeta /Users/myusername, donde se crea una carpeta denominada aws-cli.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/
PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>choiceAttribute</key>
<string>customLocation</string>
<key>attributeSetting</key>
<string>/Users/myusername</string>
<key>choiceIdentifier</key>
<string>default</string>
</dict>
</array>
</plist>

2. Descargue el instalador pkg con el comando curl. En este ejemplo, la opción -o especifica el
nombre de archivo en el que se escribe el paquete descargado. En este ejemplo, el archivo se escribe
AWSCLIV2.pkg en la carpeta actual.
3. Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"

Para obtener una versión específica de laAWS CLI,añada un guión y el número


de versión al nombre del archivo. Para este ejemplo, el nombre de archivo de la
versión2.0.30SeríaAWSCLIV2-2.0.30.pkgSe obtiene el siguiente resultado:

$ curl "https://awscli.amazonaws.com/AWSCLIV2-2.0.30.pkg" -o "AWSCLIV2.pkg"

Para obtener una lista de las versiones, consulte elAWS CLIRegistro de cambios de versión
2enGitHub.
4. Ejecute el programa installer de macOS estándar con las siguientes opciones:

• Especifique el nombre del paquete que desea instalar mediante el parámetro -pkg.
• Especifique la instalación en unsólo usuario actualEstablece el-
targetParaCurrentUserHomeDirectory.
• Especifique la ruta de acceso (relativa a la carpeta actual) y el nombre del archivo XML que creó en
el parámetro -applyChoiceChangesXML.

23
AWS Command Line Interface Guía del usuario
macOS

En el ejemplo siguiente se instala la AWS CLI en la carpeta /Users/myusername/aws-cli.

$ installer -pkg AWSCLIV2.pkg \


-target CurrentUserHomeDirectory \
-applyChoiceChangesXML choices.xml

5. Dado que los permisos de usuario estándar normalmente no permiten escribir en las carpetas de
$PATH, el instalador en este modo no intenta agregar los enlaces simbólicos a los programas aws
y aws_completer. Para que la AWS CLI se ejecute correctamente, debe crear manualmente los
enlaces simbólicos una vez finalizado el instalador. Si su $PATH incluye una carpeta en la que puede
escribir y especifica la carpeta como la ruta de destino, puede ejecutar el siguiente comando sin
sudo. Si no tiene una carpeta en la que se pueda escribir en $PATH, debe usar sudo para obtener
permisos para escribir en la carpeta de destino especificada. La ubicación predeterminada de un
enlace simbólico es /usr/local/bin/.

$ sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws


$ sudo ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer

Una vez completada la instalación, los registros de depuración se escriben en /var/log/


install.log.
6. Para comprobar elAWS CLIVersión 2 instalada, siga los pasos descritos enVerificar la instalación de
(p. 24).

Verificar la instalación de
Para comprobar que el shell puede encontrar y ejecutar el comando aws en $PATH, utilice los siguientes
comandos.

$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.1.29 Python/3.7.4 Darwin/18.7.0 botocore/2.0.0

Desinstalación deAWS CLIVersión 2


Para desinstalar elAWS CLIVersión 2, ejecute los siguientes comandos sustituyendo las rutas que utilizó
para la instalación.

1. Busque la carpeta que contiene los enlaces simbólicos al programa principal y al completer.

$ which aws
/usr/local/bin/aws

2. Con esa información, ejecute el siguiente comando para buscar la carpeta de instalación a la que
apuntan los enlaces simbólicos.

$ ls -l /usr/local/bin/aws
lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/aws -> /usr/local/aws-
cli/aws

3. Elimine los dos enlaces simbólicos de la primera carpeta. Si su cuenta de usuario ya tiene permisos de
escritura en estas carpetas, no es necesario que utilice sudo.

$ sudo rm /usr/local/bin/aws

24
AWS Command Line Interface Guía del usuario
Windows

$ sudo rm /usr/local/bin/aws_completer

4. Elimine la carpeta de instalación principal. Use sudo para obtener acceso de escritura a la carpeta /
usr/local.

$ sudo rm -rf /usr/local/aws-cli

Instalar, actualizar y desinstalar elAWS CLIversión 2


de Windows
En esta sección, se explica cómo se instala, actualiza y elimina la versión 2 de la AWS CLI en Windows.
Important
Las versiones 1 y 2 de la AWS CLI utilizan el mismo nombre de comando de aws. Si tiene ambas
versiones instaladas, el equipo utiliza la primera que encuentra en la ruta de búsqueda. Si ya
instalóAWS CLIPara usar la versión 1, le recomendamos que realice una de las siguientes
acciones para usarAWS CLIVersión 2:

• RecomendadoDesinstalación deAWS CLIversión 1 y usar soloAWS CLIVersión 2 Para obtener


instrucciones de desinstalación, determine el método utilizado para instalarAWS CLIVersión
1 y siga las instrucciones de desinstalación adecuadas para su sistema operativo enInstalar,
actualizar y desinstalar elAWS CLIVersión 1 (p. 26)
• Utilice la capacidad de su sistema operativo para crear un enlace simbólico (symlink) o alias con
un nombre diferente para uno de los dos comandos de aws. Por ejemplo, puede usar un enlace
simbólico o alias en Linux y macOS, o DOSKEY en Windows.

Para obtener información sobre cómo romper cambios entre la versión 1 y 2, consulteRomper
cambios: migrar desdeAWS CLIVersión 1 a versión 2 (p. 218).

Temas
• Prerequisites (p. 25)
• Instalar o actualizar laAWS CLIVersión 2 en Windows con el instalador MSI (p. 25)
• Desinstalación deAWS CLIVersión 2 de Windows (p. 26)

Prerequisites
Antes de instalar o actualizar elAWS CLIEn Windows, asegúrese de que dispone de lo siguiente:

• Una versión de 64 bits de Windows XP o posterior.


• Derechos de administrador para instalar software

Instalar o actualizar laAWS CLIVersión 2 en Windows con el


instalador MSI
Para actualizar la instalación actual deAWS CLIversión 2 en Windows, descargue un nuevo instalador cada
vez que actualice para sobrescribir versiones anteriores.AWS CLIse actualiza periódicamente. Para ver si
se ha publicado una versión más reciente, consulte laAWS CLIRegistro de cambios de versión 2enGitHub.

1. Descargue y ejecute laAWS CLIInstalador MSI de la para Windows (64 bits):

• Para obtener la versión más reciente de laAWS CLI: https://awscli.amazonaws.com/AWSCLIV2.msi

25
AWS Command Line Interface Guía del usuario
AWS CLIVersión 1

• Para obtener una versión específica de laAWS CLI: Añada un guión y el número
de versión al nombre del archivo. Para este ejemplo, el nombre de archivo de la
versión2.0.30SeríaAWSCLIV2-2.0.30.msiSe obtiene el siguiente resultado:https://
awscli.amazonaws.com/AWSCLIV2-2.0.30.msi. Para obtener una lista de las versiones, consulte
elAWS CLIRegistro de cambios de versión 2enGitHub.

Si lo desea, también puede ejecutar elmsiexecPara ejecutar el instalador MSI.

C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

Para varios parámetros que se pueden usar conmsiexec, consultemsiexecen elDocumentos de


MicrosoftSitio web.
2. Para confirmar la instalación, abra el menú Inicio, busque cmd para abrir una ventana del símbolo del
sistema y, en el símbolo del sistema, use el comando aws --version.

No incluya el símbolo de comando (C:\>) al escribir un comando. Estos símbolos se incluyen en los
listados del programa para diferenciar los comandos introducidos de los que devuelve la AWS CLI. En
el resto de esta guía se utiliza el símbolo del sistema genérico ($) excepto en los casos en los que un
comando es específico de Windows. Para obtener más información sobre cómo damos formato a los
ejemplos de código, consulte Mediante laAWS CLIEjemplos de (p. 3).

C:\> aws --version


aws-cli/2.1.29 Python/3.7.4 Windows/10 botocore/2.0.0

Si Windows no puede encontrar el programa, es posible que tenga que cerrar y volver a abrir la
ventana del símbolo del sistema para actualizar la ruta o agregar el directorio de instalación a la
variable de entorno PATH (p. 43) manualmente.

Desinstalación deAWS CLIVersión 2 de Windows


1. Abra Programas y características mediante una de las siguientes acciones:

• Abra el Panel de control y elija Programas y características.


• Abra un símbolo del sistema y, a continuación, escriba el comando siguiente:

C:\> appwiz.cpl

2. Seleccione la entrada denominada AWS Command Line Interface y elija Desinstalar para iniciar el
desinstalador.
3. Confirme que desea desinstalar la AWS CLI.

Instalar, actualizar y desinstalar elAWS CLIVersión


1
En este tema, se proporcionan enlaces a información acerca de cómo instalar la versión 1 de AWS
Command Line Interface (AWS CLI). Para obtener información sobre las últimas versiones deAWS
CLIversión 1, consulte laAWS CLINotas de cambio de versión 1en GitHub.

Le recomendamos que utiliceAWS CLIEn su lugar, versión 2. Para obtener información acerca de cómo
instalar la versión 2, consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

26
AWS Command Line Interface Guía del usuario
Amazon Linux

AWS CLIinstrucciones de instalación de la versión 1:


• Instale, actualice y desinstale elAWS CLIversión 1 en Amazon Linux (p. 27)
• Instale, actualice y desinstale elAWS CLIVersión 1 de (p. 28)
• Instale, actualice y desinstale elAWS CLIVersión 1 de macOS (p. 35)
• Instale, actualice y desinstale elAWS CLIVersión 1 de (p. 41)
• Instalación y actualización de laAWS CLIVersión 1 en un entorno virtual (p. 44)

Instale, actualice y desinstale elAWS CLIversión 1 en


Amazon Linux
LaAWS CLILa versión 1 está preinstalada en Amazon Linux y Amazon Linux 2 2 2 2 2 2. Consulte la
versión instalada actualmente utilizando el siguiente comando.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13

Secciones
• Prerequisites (p. 27)
• Instalar o actualizar laAWS CLIversión 1 en Amazon Linux usando pip (p. 27)
• Desinstalación deAWS CLIVersión 1 con pip (p. 28)

Prerequisites
Debe tener Python 2 versión 2.7 o posterior, o Python 3 versión 3.6 o posterior. Para obtener instrucciones
de instalación, consulte la página Downloading Python en la Guía para principiantes de Python.
Warning

A partir del 1/2/2021 Python 3.4 y 3.5 está en desuso.


Python 2.7 fue obsoleto por elPython Software FoundationEl 1 de enero de 2020. En el futuro, los
clientes que utilizan elAWS CLIversión 1 debería pasar a usar Python 3, con un mínimo de Python
3.6. El soporte de Python 2.7 está obsoleto para las nuevas versiones de laAWS CLIversión 1 a
partir del 15/7/2021.
Para utilizar laAWS CLILa versión 1 con una versión previa de Python, debe instalar una versión
previa de laAWS CLIVersión 1 de
Para ver elAWS CLIversión 1 de la matriz de soporte de la versión de Python, consulteAcerca de
laAWS CLIVersiones de (p. 2).

Instalar o actualizar laAWS CLIversión 1 en Amazon Linux


usando pip
Para instalar la última versión de laAWS CLIPara el usuario actual, siga estas instrucciones.

1. Si tiene instalada la versión 3 o posterior de Python, recomendamos que utilice pip3. Usarpip3
installPara instalar o actualizar la última versión de laAWS CLIVersión 1 de Si ejecuta el comando
desde un entorno virtual de Python (venv), no necesita utilizar la opción --user.

$ pip3 install --upgrade --user awscli

2. Asegúrese de que la carpeta que contiene awsforme parte de la variable PATH.

27
AWS Command Line Interface Guía del usuario
Linux

a. Busque el script de perfil de su shell en su directorio de usuario. Si no está seguro de cuál es el


shell que tiene, ejecute echo $SHELL.

$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads

• Bash–.bash_profile,.profile, o bien.bash_login
• Zsh: .zshrc
• Tcsh–.tcshrc,.cshrcor.login
b. Añada un comando de exportación al final del script de su perfil igual que en el siguiente ejemplo.

export PATH=$HOME/.local/bin:$PATH

Este comando inserta la ruta, $HOME/.local/bin en este ejemplo, delante de la variable $PATH
existente.
c. Vuelva a cargar el perfil en la sesión actual para que esos cambios surtan efecto.

$ source ~/.bash_profile

3. Para comprobar que está ejecutando la nueva versión, utilice el comando aws --version.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13

Desinstalación deAWS CLIVersión 1 con pip


Si necesita desinstalar la AWS CLI, utilice pip uninstall.

$ pip3 uninstall awscli

Instale, actualice y desinstale elAWS CLIVersión 1 de


Puede instalar la versión 1 de la AWS Command Line Interface (AWS CLI) y sus dependencias en la
mayoría de las distribuciones de Linux con el administrador de paquetes pip o el instalador incluido.

Aunque el paquete awscli está disponible en los repositorios de otros administradores de paquetes,
como apt y yum, estos no han sido generados ni están administrados ni admitidos por AWS. Le
recomendamos que solamente instale la AWS CLI desde los puntos de distribución oficiales de AWS, tal y
como se indica en esta guía.

Secciones
• Prerequisites (p. 28)
• Instalación y desinstalación de laAWS CLIVersión 1 en Linux con el instalador incluido (p. 29)
• Instalación y desinstalación de laAWS CLIVersión 1 con pip (p. 32)

Prerequisites
Debe tener Python 2 versión 2.7 o posterior, o Python 3 versión 3.6 o posterior. Para obtener instrucciones
de instalación, consulte la página Downloading Python en la Guía para principiantes de Python.

28
AWS Command Line Interface Guía del usuario
Linux

Warning
A partir del 1/2/2021 Python 3.4 y 3.5 está en desuso.
Python 2.7 fue obsoleto por elPython Software FoundationEl 1 de enero de 2020. En el futuro, los
clientes que utilizan elAWS CLIversión 1 debería pasar a usar Python 3, con un mínimo de Python
3.6. El soporte de Python 2.7 está obsoleto para las nuevas versiones de laAWS CLIversión 1 a
partir del 15/7/2021.
Para utilizar laAWS CLILa versión 1 con una versión previa de Python, debe instalar una versión
previa de laAWS CLIVersión 1 de
Para ver elAWS CLIversión 1 de la matriz de soporte de la versión de Python, consulteAcerca de
laAWS CLIVersiones de (p. 2).

Instalación y desinstalación de laAWS CLIVersión 1 en Linux con


el instalador incluido
En Linux o macOS, también utilizar el instalador empaquetado para instalar la versión 1 de laAWS CLI.
Este incluye todas las dependencias y se puede usar sin conexión.
Note
El instalador empaquetado no admite la instalación en rutas que contienen espacios.

Temas
• Instalación delAWS CLIVersión 1 con el instalador incluido consudo (p. 29)
• Instalación delAWS CLIVersión 1 con el instalador incluido sinsudo (p. 30)
• Desinstalación deAWS CLIInstalador incluido de la versión 1 de la (p. 32)

Instalación delAWS CLIVersión 1 con el instalador incluido consudo


Los pasos que se indican a continuación le permiten instalar laAWS CLIDesde la línea de comandos en
cualquier compilación de Linux o macOS.

A continuación, se muestra un resumen de los comandos de instalación que puede cortar y pegar para que
se ejecuten como un único conjunto de comandos.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"


unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-
bundle-1.16.312.zipSe obtiene el siguiente resultado:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-bundle.zip"


unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

Siga estos pasos desde la línea de comandos para instalar laAWS CLIVersión 1 con el instalador incluido.

Para instalar elAWS CLIVersión 1 con el instalador incluido

1. Descarga deAWS CLIVersión 1 con uno de los métodos siguientes.

• Descárguelo con el comando curl.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

29
AWS Command Line Interface Guía del usuario
Linux

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-
bundle-1.16.312.zipSe obtiene el siguiente resultado:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-


bundle.zip"

• Descárguelo mediante el enlace directo.

Para obtener la versión más reciente de laAWS CLI: https://s3.amazonaws.com/aws-cli/awscli-


bundle.zip

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre del
archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-exe-
linux-aarch64-2.0.30.zipSe obtiene el siguiente resultado:https://s3.amazonaws.com/aws-cli/
awscli-bundle-2.0.30.zip
2. Extraiga los archivos del paquete. Si no tiene unzip para extraer los archivos, utilice el administrador
de paquetes integrado de la distribución de Linux para instalarlo.

$ unzip awscli-bundle.zip

3. Ejecute el programa de instalación. El instalador instala la AWS CLI en /usr/local/aws y crea el


symlink aws en el directorio /usr/local/bin. Si se usa la opción -b para crear un symlink, no es
necesario especificar el directorio de instalación en la variable $PATH del usuario. Con esto, todos los
usuarios deberían poder llamar a la AWS CLI al escribir aws desde cualquier directorio.

$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

El script de instalación se ejecuta en la versión de Python predeterminada del sistema. Si tiene


instalada una versión alternativa de Python y quiere usar esa versión para instalar la AWS CLI, ejecute
el script de instalación de esa versión utilizando la ruta absoluta del ejecutable de Python, tal y como
se muestra a continuación

$ sudo /usr/local/bin/python3.7 awscli-bundle/install -i /usr/local/aws -b /usr/local/


bin/aws

4. Compruebe que la AWS CLI esté instalada correctamente.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13

Si obtiene un error, consulte Solución de errores de AWS CLI (p. 210).

Instalación delAWS CLIVersión 1 con el instalador incluido sinsudo


Si no tiene permisos sudo o quiere instalar la AWS CLI solo para el usuario actual, puede utilizar una
versión modificada de los comandos anteriores. Los dos primeros comandos son iguales.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"


unzip awscli-bundle.zip

30
AWS Command Line Interface Guía del usuario
Linux

./awscli-bundle/install -b ~/bin/aws

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-
bundle-1.16.312.zipSe obtiene el siguiente resultado:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-bundle.zip"


unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws

Para instalar elAWS CLIversión 1 para el usuario actual

1. Descarga deAWS CLILa versión 1 incluye el instalador de una de las siguientes maneras.

• Descárguelo con el comando curl.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-
bundle-1.16.312.zipSe obtiene el siguiente resultado:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-


bundle.zip"

• Descárguelo mediante el enlace directo.

Para obtener la versión más reciente de laAWS CLI: https://s3.amazonaws.com/aws-cli/awscli-


bundle.zip

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre del
archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-exe-
linux-aarch64-2.0.30.zipSe obtiene el siguiente resultado:https://s3.amazonaws.com/aws-cli/
awscli-bundle-2.0.30.zip
2. Extraiga los archivos del paquete mediante unzip. Si no tiene unzip, utilice el administrador de
paquetes integrado de la distribución de Linux para instalarlo.

$ unzip awscli-bundle.zip

3. Ejecute el programa de instalación. El instalador instala la AWS CLI en /usr/local/aws y crea el


symlink aws en el directorio /usr/local/bin. El comando utiliza el parámetro -b para especificar el
directorio en el que el instalador coloca el archivo del enlace simbólico de aws. Debe tener permisos
de escritura en la carpeta especificada.

$ ./awscli-bundle/install -b ~/bin/aws

Esto instala la AWS CLI en la ubicación predeterminada (~/.local/lib/aws) y crea un enlace


simbólico (symlink) en ~/bin/aws. Asegúrese de que ~/bin está en la variable de entorno PATH
para que el enlace simbólico funcione.

$ echo $PATH | grep ~/bin // See if $PATH contains ~/bin (output will be empty if
it doesn't)
$ export PATH=~/bin:$PATH // Add ~/bin to $PATH if necessary

31
AWS Command Line Interface Guía del usuario
Linux

4. Asegúrese de que el directorio de laAWS CLIversión 1 es parte de suPATHVariable.

a. Busque el script de perfil de su shell en su carpeta de usuario. Si no está seguro de cuál es el shell
que tiene, ejecute echo $SHELL.

$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads

• Bash–.bash_profile,.profile, o bien.bash_login
• Zsh: .zshrc
• Tcsh–.tcshrc,.cshrcor.login
b. Añada un comando de exportación al final del script de su perfil igual que en el siguiente ejemplo.

export PATH=~/.local/bin:$PATH

Este comando inserta la ruta, ~/.local/bin en este ejemplo, delante de la variable PATH
existente.
c. Vuelva a cargar el perfil en la sesión actual para que esos cambios surtan efecto.

$ source ~/.bash_profile

5. Compruebe que la AWS CLI esté instalada correctamente.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13

Si obtiene un error, consulte Solución de errores de AWS CLI (p. 210).

Desinstalación deAWS CLIInstalador incluido de la versión 1 de la


Si instaló elAWS CLICon el instalador incluido, siga estas instrucciones. El instalador empaquetado no
añade recursos fuera del directorio de instalación, salvo el symlink opcional. Por tanto, para desinstalar,
solo es necesario eliminar esos dos elementos.

$ sudo rm -rf /usr/local/aws


$ sudo rm /usr/local/bin/aws

Instalación y desinstalación de laAWS CLIVersión 1 con pip


Temas
• Instalar pip (p. 32)
• Instalación y actualización de laAWS CLIVersión 1 con pip (p. 33)
• Añada laAWS CLIVersión 1 ejecutable a la ruta de la línea de comandos (p. 34)
• Desinstalación de la AWS CLI con pip (p. 35)

Instalar pip
Si aún no ha instalado pip, puede hacerlo con el script proporcionado por Python Packaging Authority.
Ejecute pip --version para saber si su versión de Linux ya incluye Python y pip. Si tiene instalada la
versión 3 o posterior de Python, recomendamos que utilice el comando pip3.
32
AWS Command Line Interface Guía del usuario
Linux

1. Utilice el comando curl para descargar el script de instalación. El comando siguiente utiliza el
parámetro -O (letra "O" mayúscula) para especificar que el archivo descargado debe almacenarse en
el directorio actual con el mismo nombre que tiene en el host remoto.

$ curl -O https://bootstrap.pypa.io/get-pip.py

2. Ejecute el script con el comando python o python3 para descargar e instalar la versión más reciente
de pip y otros paquetes de soporte necesarios. Cuando se incluye el modificador --user, el script
instala pip en la ruta ~/.local/bin.

$ python3 get-pip.py --user

3. Asegúrese de que el directorio que contienepipforma parte de suPATHVariable.

a. Busque el script de perfil de su shell en su carpeta de usuario. Si no está seguro de cuál es el shell
que tiene, ejecute echo $SHELL.

$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads

• Bash–.bash_profile,.profile, o bien.bash_login
• Zsh: .zshrc
• Tcsh–.tcshrc,.cshrcor.login
b. Añada un comando de exportación al final del script de su perfil igual que en el siguiente ejemplo.

export PATH=~/.local/bin:$PATH

Este comando inserta la ruta, ~/.local/bin en este ejemplo, delante de la variable PATH
existente.
c. Vuelva a cargar el perfil en la sesión actual para que esos cambios surtan efecto.

$ source ~/.bash_profile

4. Para comprobar que pip o pip3 se ha instalado correctamente, ejecute el siguiente comando.

$ pip3 --version
pip 19.2.3 from ~/.local/lib/python3.7/site-packages (python 3.7)

Instalación y actualización de laAWS CLIVersión 1 con pip


1. Utilice el comando pip o pip3 para instalar o actualizar la AWS CLI. Si utiliza la versión 3 o posterior
de Python, recomendamos que utilice el comando pip3. El conmutador--user, pip instala la AWS
CLI en ~/.local/bin.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ pip3 install awscli --upgrade --user

Para una versión específica de laAWS CLI,anexar un símbolo menor que<y el número
de versión al nombre del archivo. Para este ejemplo, el nombre de archivo de la
versión1.16.312Sería<1.16.312Se obtiene el siguiente resultado:

33
AWS Command Line Interface Guía del usuario
Linux

$ pip3 install awscli<1.16.312 --upgrade --user

2. Compruebe que la AWS CLI esté instalada correctamente.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13

Si obtiene un error, consulte Solución de errores de AWS CLI (p. 210).

Añada laAWS CLIVersión 1 ejecutable a la ruta de la línea de comandos


Después de realizar la instalación con pip, es posible que necesite añadir el archivo ejecutable aws a la
variable de entorno PATH del sistema operativo.

Para comprobar en qué carpeta instaló pip la AWS CLI, ejecute este comando.

$ which aws
/home/username/.local/bin/aws

Puede hacer referencia a esto como ~/.local/bin/ ya que /home/username se corresponde con ~ en
Linux.

Si omitió el modificador --user y, por tanto, no realizó la instalación en modo de usuario, el archivo
ejecutable podría estar en la carpeta bin de la instalación de Python. Si no sabe dónde se ha instalado
Python, ejecute este comando.

$ which python
/usr/local/bin/python

La salida puede ser la ruta a un symlink, no el archivo ejecutable real. Ejecute ls -al para ver adónde
apunta.

$ ls -al /usr/local/bin/python
/usr/local/bin/python -> ~/.local/Python/3.6/bin/python3.6

pip instala los programas en la misma carpeta que contiene la aplicación de Python. Añada esta carpeta a
la variable PATH.

Para modificar la variable PATH

1. Busque el script de perfil de su shell en su directorio de usuario. Si no está seguro de cuál es el shell
que tiene, ejecute echo $SHELL.

$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads

• Bash–.bash_profile,.profile, o bien.bash_login
• Zsh: .zshrc
• Tcsh–.tcshrc,.cshrc, o bien.login
2. Añada un comando de exportación al script de su perfil.

export PATH=~/.local/bin:$PATH

34
AWS Command Line Interface Guía del usuario
macOS

Este comando añade una ruta, ~/.local/bin en este ejemplo, a la variable PATH actual.
3. Cargue el perfil actualizado en su sesión actual.

$ source ~/.bash_profile

Desinstalación de la AWS CLI con pip


Si instaló elAWS CLIconpiporpip3, necesita desinstalar laAWS CLICon el mismo gestor de paquetes
ejecutando uno de los siguientes comandos.

$ pip uninstall awscli

$ pip3 uninstall awscli

Instale, actualice y desinstale elAWS CLIVersión 1 de


macOS
Puede instalar la versión 1 de la AWS Command Line Interface (AWS CLI) y sus dependencias en macOS
con el instalador incluido o pip.

Secciones
• Prerequisites (p. 35)
• Instalación, actualización y desinstalación de laAWS CLIVersión 1 en macOS con el instalador
incluido (p. 35)
• Instalación, actualización y desinstalación de laAWS CLIVersión 1 con pip (p. 39)

Prerequisites
Para poder instalar laAWS CLILa versión 1 en macOS, asegúrese de tener Python 2 versión 2.7 o
posterior, o Python 3 versión 3.6 o posterior. Para obtener instrucciones de instalación, consulte la página
Downloading Python en la Guía para principiantes de Python.
Warning
A partir del 1/2/2021 Python 3.4 y 3.5 está en desuso.
Python 2.7 fue obsoleto por elPython Software FoundationEl 1 de enero de 2020. En el futuro, los
clientes que utilizan elAWS CLIversión 1 debería pasar a usar Python 3, con un mínimo de Python
3.6. El soporte de Python 2.7 está obsoleto para las nuevas versiones de laAWS CLIversión 1 a
partir del 15/7/2021.
Para utilizar laAWS CLILa versión 1 con una versión previa de Python, debe instalar una versión
previa de laAWS CLIVersión 1 de
Para ver elAWS CLIversión 1 de la matriz de soporte de la versión de Python, consulteAcerca de
laAWS CLIVersiones de (p. 2).

Instalación, actualización y desinstalación de laAWS CLIVersión


1 en macOS con el instalador incluido
En Linux o macOS, también utilizar el instalador empaquetado para instalar la versión 1 de laAWS
Command Line Interface(AWS CLI). Este incluye todas las dependencias y se puede usar sin conexión.

El instalador empaquetado no admite la instalación en rutas que contienen espacios.

35
AWS Command Line Interface Guía del usuario
macOS

Temas
• Instalación delAWS CLIVersión 1 con el instalador incluido consudo (p. 36)
• Instalación delAWS CLIVersión 1 con el instalador incluido sinsudo (p. 37)
• Desinstalación deAWS CLIInstalador incluido de la versión 1 de la (p. 39)

Instalación delAWS CLIVersión 1 con el instalador incluido consudo


Los pasos que se indican a continuación le permiten instalar laAWS CLIVersión 1 desde la línea de
comandos en cualquier compilación de macOS.

A continuación, se muestra un resumen de los comandos de instalación que puede cortar y pegar para que
se ejecuten como un único conjunto de comandos.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"


unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-
bundle-1.16.312.zipSe obtiene el siguiente resultado:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-bundle.zip"


unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

Para instalar elAWS CLIVersión 1 con el instalador incluido

1. Descarga deAWS CLILa versión 1 incluye el instalador de la de una de las siguientes maneras:

• Descárguelo con el comando curl.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-
bundle-1.16.312.zipSe obtiene el siguiente resultado:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-


bundle.zip"

• Descárguelo mediante el enlace directo.

Para obtener la versión más reciente de laAWS CLI: https://s3.amazonaws.com/aws-cli/awscli-


bundle.zip

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre del
archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-exe-
linux-aarch64-2.0.30.zipSe obtiene el siguiente resultado:https://s3.amazonaws.com/aws-cli/
awscli-bundle-2.0.30.zip
2. Extraiga (descomprima) los archivos del paquete. Si no tiene unzip, utilice el administrador de
paquetes integrado de la distribución de macOS para instalarlo.

36
AWS Command Line Interface Guía del usuario
macOS

$ unzip awscli-bundle.zip

3. Ejecute el programa de instalación. El instalador instala la AWS CLI en /usr/local/aws y crea el


enlace simbólico aws en la carpeta /usr/local/bin. Si se usa la opción -b para crear un enlace
simbólico, no es necesario especificar la carpeta de instalación en la variable $PATH del usuario. Con
esto, todos los usuarios deberían poder llamar a la AWS CLI al escribir aws desde cualquier directorio.

$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

El script de instalación se ejecuta en la versión de Python predeterminada del sistema. Si tiene


instalada una versión alternativa de Python y quiere usarla para instalar el AWS CLI, ejecute el script
de instalación de esa versión utilizando la ruta absoluta del ejecutable de Python, tal y como se
muestra a continuación

$ sudo /usr/local/bin/python3.7 awscli-bundle/install -i /usr/local/aws -b /usr/local/


bin/aws

4. Compruebe que la AWS CLI esté instalada correctamente.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13

Si obtiene un error, consulte Solución de errores de AWS CLI (p. 210).

Instalación delAWS CLIVersión 1 con el instalador incluido sinsudo


Si no tiene permisos sudo o quiere instalar la AWS CLI solo para el usuario actual, puede utilizar una
versión modificada de los comandos anteriores. Los dos primeros comandos son iguales.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"


unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-
bundle-1.16.312.zipSe obtiene el siguiente resultado:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-bundle.zip"


unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws

Para instalar elAWS CLIversión 1 para el usuario actual

1. Descarga deAWS CLIVersión 1 con uno de los métodos siguientes:

• Descárguelo con el comando curl.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

37
AWS Command Line Interface Guía del usuario
macOS

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre
del archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-
bundle-1.16.312.zipSe obtiene el siguiente resultado:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-


bundle.zip"

• Descárguelo mediante el enlace directo.

Para obtener la versión más reciente de laAWS CLI: https://s3.amazonaws.com/aws-cli/awscli-


bundle.zip

Para una versión específica de laAWS CLI,añada un guión y el número de versión al nombre del
archivo. Para este ejemplo, el nombre de archivo de la versión1.16.312Seríaawscli-exe-
linux-aarch64-2.0.30.zipSe obtiene el siguiente resultado:https://s3.amazonaws.com/aws-cli/
awscli-bundle-2.0.30.zip
2. Extraiga los archivos del paquete. Si no tiene unzip, utilice el administrador de paquetes integrado de
la distribución de Linux para instalarlo.

$ unzip awscli-bundle.zip

3. Ejecute el programa de instalación. El instalador instala la AWS CLI en /usr/local/aws y crea el


symlink aws en el directorio /usr/local/bin. El comando utiliza el parámetro -b para especificar el
directorio en el que el instalador coloca el archivo del enlace simbólico de aws. Debe tener permisos
de escritura en el directorio especificado.

$ ./awscli-bundle/install -b ~/bin/aws

Esto instala la AWS CLI en la ubicación predeterminada (~/.local/lib/aws) y crea un enlace


simbólico (symlink) en ~/bin/aws. Asegúrese de que ~/bin está en la variable de entorno $PATH
para que el enlace simbólico funcione.

$ echo $PATH | grep ~/bin // See if $PATH contains ~/bin (output will be empty if
it doesn't)
$ export PATH=~/bin:$PATH // Add ~/bin to $PATH if necessary

4. Asegúrese de que la carpeta queAWS CLILa versión 1 está instalada en es parte de


su$PATHVariable.

a. Busque el script de perfil de su shell en su carpeta de usuario. Si no está seguro de cuál es el shell
que tiene, ejecute echo $SHELL.

$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads

• Bash–.bash_profile,.profile, o bien.bash_login
• Zsh: .zshrc
• Tcsh–.tcshrc,.cshrcor.login
b. Añada un comando de exportación al final del script de su perfil igual que en el siguiente ejemplo.

export PATH=~/.local/bin:$PATH

Este comando inserta la ruta, ~/.local/bin en este ejemplo, delante de la variable PATH
existente.

38
AWS Command Line Interface Guía del usuario
macOS

c. Vuelva a cargar el perfil en la sesión actual para que esos cambios surtan efecto.

$ source ~/.bash_profile

5. Compruebe que la AWS CLI esté instalada correctamente.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13

Si obtiene un error, consulte Solución de errores de AWS CLI (p. 210).

Desinstalación deAWS CLIInstalador incluido de la versión 1 de la


El instalador incluido coloca todo en el directorio de instalación excepto el enlace simbólico opcional, por lo
que, para efectuar la desinstalación, solo necesita eliminar esos dos elementos.

$ sudo rm -rf /usr/local/aws


$ sudo rm /usr/local/bin/aws

Instalación, actualización y desinstalación de laAWS CLIVersión


1 con pip
Puede utilizar pip directamente para instalar la AWS CLI.

Temas
• Instalar pip (p. 39)
• Instalación y actualización de la AWS CLI con pip (p. 39)
• Añada laAWS CLIVersión 1 ejecutable en la ruta de la línea de comandos de macOS (p. 40)
• Desinstalación de la AWS CLI con pip (p. 41)

Instalar pip
Si aún no ha instalado pip, puede hacerlo con el script proporcionado por Python Packaging Authority.
Ejecute pip --version para saber si su versión de Linux ya incluye Python y pip. Si tiene instalada la
versión 3 o posterior de Python, recomendamos que utilice el comando pip3.

1. Utilice el comando curl para descargar el script de instalación. El comando siguiente utiliza el
parámetro -O (letra «O» mayúscula) para especificar que el archivo descargado debe almacenarse en
la carpeta actual con el mismo nombre que tiene en el host remoto.

$ curl -O https://bootstrap.pypa.io/get-pip.py

2. Ejecute el script con el comando python o python3 para descargar e instalar la versión más reciente
de pip y otros paquetes de soporte necesarios. Cuando se incluye el modificador --user, el script
instala pip en la ruta ~/.local/bin.

$ python3 get-pip.py --user

Instalación y actualización de la AWS CLI con pip


1. Utilice el comando pip o pip3 para instalar la AWS CLI. Si utiliza la versión 3 o posterior de Python,
recomendamos que utilice el comando pip3.

39
AWS Command Line Interface Guía del usuario
macOS

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

$ pip3 install awscli --upgrade --user

Para una versión específica de laAWS CLI,anexar un símbolo menor que<y el número
de versión al nombre del archivo. Para este ejemplo, el nombre de archivo de la
versión1.16.312Sería<1.16.312Se obtiene el siguiente resultado:

$ pip3 install awscli<1.16.312 --upgrade --user

2. Compruebe que la AWS CLI esté instalada correctamente.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Darwin/18.7.0 botocore/1.13

Si no se encuentra el programa, añádalo a la ruta de la línea de comandos (p. 40).

Añada laAWS CLIVersión 1 ejecutable en la ruta de la línea de comandos de


macOS
Después de realizar la instalación con pip, es posible que necesite agregar el programa aws a la variable
de entorno PATH del sistema operativo. La ubicación del programa depende de dónde se haya instalado
Python.

Example Ubicación de instalación de la AWS CLI: macOS con Python 3.6 y pip (modo usuario)

~/Library/Python/3.7/bin

Sustituya la versión de Python que tiene con la versión del ejemplo anterior.

Si no sabe dónde se ha instalado Python, ejecute which python.

$ which python
/usr/local/bin/python

La salida puede ser la ruta a un symlink, no el programa real. Ejecute ls -al para ver adónde apunta.

$ ls -al /usr/local/bin/python
~/Library/Python/3.7/bin/python3.7

pip instala los programas en la misma carpeta que contiene la aplicación de Python. Añada esta carpeta a
la variable PATH.

Para modificar la variable PATH

1. Busque el script de perfil de su shell en su directorio de usuario. Si no está seguro de cuál es el shell
que tiene, ejecute echo $SHELL.

$ ls -a ~
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads

• Bash–.bash_profile,.profile, o bien.bash_login
• Zsh: .zshrc

40
AWS Command Line Interface Guía del usuario
Windows

• Tcsh–.tcshrc,.cshrc, o bien.login
2. Añada un comando de exportación al script de su perfil.

export PATH=~/.local/bin:$PATH

Este comando añade una ruta, ~/.local/bin en este ejemplo, a la variable PATH actual.
3. Cargue el perfil actualizado en su sesión actual.

$ source ~/.bash_profile

Desinstalación de la AWS CLI con pip


Si necesita desinstalar la AWS CLI, utilice pip uninstall.

$ pip3 uninstall awscli

Instale, actualice y desinstale elAWS CLIVersión 1 de


Puede instalar la versión 1 de la AWS Command Line Interface (AWS CLI) en Windows con un instalador
independiente (recomendado) o con pip, un administrador de paquetes para Python.

No incluya el símbolo de comando (C:\>) al escribir un comando. Estos símbolos se incluyen en los
listados del programa para diferenciar los comandos introducidos de los que devuelve la AWS CLI. En
el resto de esta guía se utiliza el símbolo del sistema genérico ($) excepto en los casos en los que un
comando es específico de Windows.

Temas
• Instalación, actualización y desinstalación de laAWS CLIVersión 1 con el instalador MSI (p. 41)
• Instalación, actualización y desinstalación de laAWS CLIVersión 1 con Python y pip en
Windows (p. 42)
• Añada laAWS CLIVersión 1 ejecutable a la ruta de la línea de comandos (p. 43)

Instalación, actualización y desinstalación de laAWS CLIVersión


1 con el instalador MSI
LaAWS CLILa versión 1 es compatible con Windows XP o posterior. Para los usuarios de Windows, el
paquete de instalación de MSI ofrece un entorno familiar y cómodo para instalar laAWS CLIversión 1 sin
instalar ningún otro requisito previo.

Instalación y actualización de laAWS CLIVersión 1 con el instalador MSI


Consulte la página de Versiones en GitHub para ver si se ha publicado una versión más reciente. Cuando
se hayan publicado las actualizaciones, deberá repetir el proceso de instalación para obtener la última
versión de laAWS CLIVersión 1 de

1. Descargue el instalador MSI adecuado:

• AWS CLIInstalador MSI de la para Windows (64 bits):https://s3.amazonaws.com/aws-cli/


AWSCLI64PY3.msi
• AWS CLIInstalador MSI de la para Windows (32 bits):https://s3.amazonaws.com/aws-cli/
AWSCLI32PY3.msi

41
AWS Command Line Interface Guía del usuario
Windows

• Archivo de instalación combinado de la AWS CLI para Windows: https://s3.amazonaws.com/aws-


cli/AWSCLISetup.exe (incluye los instaladores MSI de 32 y 64 bits, e instalará automáticamente la
versión correcta)
2. Ejecute el instalador MSI descargado o el archivo de configuración.
3. Siga las instrucciones en pantalla. De forma predeterminada, elAWS CLILa versión 1 de laC:
\Program Files\Amazon\AWSCLI(versión de 64 bits) oC:\Program Files (x86)\Amazon
\AWSCLI(versión de 32 bits).
4. Para confirmar la instalación, utilice el comando aws --version en un símbolo del sistema (abra el
menú Inicio y busque cmd para iniciar un símbolo del sistema).

C:\> aws --version


aws-cli/1.19.3 Python/3.7.4 Windows/10 botocore/1.13

Si Windows no puede encontrar el programa, es posible que tenga que cerrar y volver a abrir el
símbolo del sistema para actualizar la ruta o añadir el directorio de instalación a la variable de entorno
PATH (p. 43) manualmente.

Desinstalación deAWS CLIVersión 1


Para utilizar las siguientes instrucciones de desinstalación, debe haber instalado laAWS CLIversión 1 con
el archivo de instalación o instalación de MSI.

1. Abra Programas y características mediante una de las siguientes acciones:

• Abra el Panel de control y elija Programas y características.


• Abra un símbolo del sistema y escriba el comando siguiente.

C:\> appwiz.cpl

2. Seleccione la entrada denominada AWS Command Line Interface y elija Desinstalar para iniciar el
desinstalador.
3. Confirme que desea desinstalar la AWS CLI.

Instalación, actualización y desinstalación de laAWS CLIVersión


1 con Python y pip en Windows
La Python Software Foundation ofrece instaladores para Windows que incluyen pip.

Prerequisites
Debe tener Python 2 versión 2.7 o posterior, o Python 3 versión 3.6 o posterior. Para obtener instrucciones
de instalación, consulte la página Downloading Python en la Guía para principiantes de Python.
Warning

A partir del 1/2/2021 Python 3.4 y 3.5 está en desuso.


Python 2.7 fue obsoleto por elPython Software FoundationEl 1 de enero de 2020. En el futuro, los
clientes que utilizan elAWS CLIversión 1 debería pasar a usar Python 3, con un mínimo de Python
3.6. El soporte de Python 2.7 está obsoleto para las nuevas versiones de laAWS CLIversión 1 a
partir del 15/7/2021.
Para utilizar laAWS CLILa versión 1 con una versión previa de Python, debe instalar una versión
previa de laAWS CLIVersión 1 de
Para ver elAWS CLIversión 1 de la matriz de soporte de la versión de Python, consulteAcerca de
laAWS CLIVersiones de (p. 2).

42
AWS Command Line Interface Guía del usuario
Windows

Instalación y actualización de laAWS CLIVersión 1 con pip


1. Para instalar laAWS CLIversión 1, utilice elpip3(si utiliza la versión 3 o posterior de Python) o el
comandopipcomando de.

Para obtener la versión más reciente de laAWS CLI,Utilice el siguiente bloque de comandos:

C:\> pip3 install awscli --upgrade --user

Para una versión específica de laAWS CLI,anexar un símbolo menor que<y el número
de versión al nombre del archivo. Para este ejemplo, el nombre de archivo de la
versión1.16.312Sería<1.16.312Se obtiene el siguiente resultado:

C:\> pip3 install awscli<1.16.312 --upgrade --user

2. Verifique que laAWS CLILa versión 1 está instalada correctamente. Si no hay respuesta, consulte la
sección Añada laAWS CLIVersión 1 ejecutable a la ruta de la línea de comandos (p. 43).

C:\> aws --version


aws-cli/1.19.3 Python/3.7.4 Windows/10 botocore/1.13

Desinstalación deAWS CLIVersión 1 con pip


Si instaló elAWS CLILa versión 1 depip, también debe desinstalar conpip. Si utiliza la versión 3 o
posterior de Python, recomendamos que utilice el comando pip3.

C:\> pip3 uninstall awscli

Es posible que deba reiniciar la ventana del símbolo del sistema o el equipo para eliminar todos los
archivos.

Añada laAWS CLIVersión 1 ejecutable a la ruta de la línea de


comandos
Después de instalar elAWS CLIVersión 1 conpip, agregue laawsPara el programa de su sistema
operativoPATHUna variable de entorno. Con una instalación MSI, esto debería suceder automáticamente.
Pero si el comando aws no se ejecuta después de instalarlo, es posible que deba configurarlo
manualmente.

1. Utilice el comando where para buscar la ubicación del archivo aws. De forma predeterminada, el
comando where muestra dónde se encuentra un programa especificado en la variable PATH del
sistema.

C:\> where aws

Las rutas que aparecen dependen de la plataforma y del método utilizado para instalar la AWS CLI.
Los nombres de carpeta que incluyen los números de versión puede variar. Estos ejemplos reflejan el
uso de Python versión 3.7. Reemplace la versión por el número de versión que está utilizando, según
sea necesario. Las rutas típicas son las siguientes:

• Python 3 ypip3–C:\Program Files\Python37\Scripts\


• Python 3 ypip3—opción de usuario en versiones anteriores de Windows–%USERPROFILE%
\AppData\Local\Programs\Python\Python37\Scripts

43
AWS Command Line Interface Guía del usuario
Virtualenv

• Python 3 ypip3: opción de usuario en Windows 10–%USERPROFILE%\AppData\Roaming


\Python\Python37\Scripts
• Instalador MSI (64 bits)–C:\Program Files\Amazon\AWSCLI\bin
• Instalador MSI (32 bits)–C:\Program Files (x86)\Amazon\AWSCLI\bin

Siga estos pasos en función de si se devuelve una ruta de archivo.

A file path is returned

C:\> where aws


C:\Program Files\Amazon\AWSCLI\bin\aws.exe

Para encontrar dónde está instalado el programa de aws, ejecute el siguiente comando.

C:\> where c:\ aws


C:\Program Files\Python37\Scripts\aws

A file path is NOT returned

Si el comando where devuelve el siguiente error, no está en la variable PATH del sistema y no
puede ejecutarse simplemente escribiendo su nombre.

C:\> where c:\ aws


INFO: Could not find files for the given pattern(s).

En ese caso, ejecute el comando where con el parámetro /R path para indicarle que busque
en todas las carpetas y agregue después la ruta manualmente. Utilice la línea de comandos o el
Explorador de archivos para averiguar en qué lugar del equipo está instalado.

C:\> where /R c:\ aws


c:\Program Files\Amazon\AWSCLI\bin\aws.exe
c:\Program Files\Amazon\AWSCLI\bincompat\aws.cmd
c:\Program Files\Amazon\AWSCLI\runtime\Scripts\aws
c:\Program Files\Amazon\AWSCLI\runtime\Scripts\aws.cmd
...

2. Pulse la tecla de Windows y escriba environment variables.


3. Elija Editar las variables de entorno de esta cuenta.
4. Elija PATH y, a continuación, Editar.
5. Agregue la ruta que encontró en el campo Valor de variable por ejemplo, C:\Program Files
\Amazon\AWSCLI\bin\aws.exe.
6. Elija Aceptar dos veces para aplicar la nueva configuración.
7. Cierre los símbolos del sistema en ejecución y vuelva a abrir la ventana de símbolo del sistema.

Instalación y actualización de laAWS CLIVersión 1 en


un entorno virtual
Puede evitar conflictos de versiones con otros paquetes pip instalando la versión 1 de la AWS Command
Line Interface (AWS CLI) en un entorno virtual.

Temas
• Prerequisites (p. 45)

44
AWS Command Line Interface Guía del usuario
Virtualenv

• Instalación y actualización de laAWS CLIVersión 1 en un entorno virtual (p. 45)

Prerequisites
• La versión 2.7 o posterior de Python 2, o la versión 3.6 o posterior de Python 3. Para obtener
instrucciones de instalación, consulte la página Downloading Python en la Guía para principiantes de
Python.
Warning

A partir del 1/2/2021 Python 3.4 y 3.5 está en desuso.


Python 2.7 fue obsoleto por elPython Software FoundationEl 1 de enero de 2020. En el futuro,
los clientes que utilizan elAWS CLIversión 1 debería pasar a usar Python 3, con un mínimo
de Python 3.6. El soporte de Python 2.7 está obsoleto para las nuevas versiones de laAWS
CLIversión 1 a partir del 15/7/2021.
Para utilizar laAWS CLILa versión 1 con una versión previa de Python, debe instalar una
versión previa de laAWS CLIVersión 1 de
Para ver elAWS CLIversión 1 de la matriz de soporte de la versión de Python, consulteAcerca
de laAWS CLIVersiones de (p. 2).
• Se ha instalado pip o pip3.

Instalación y actualización de laAWS CLIVersión 1 en un entorno


virtual
1. Instale virtualenv mediante pip.

$ pip install --user virtualenv

2. Cree un entorno virtual y asígnele un nombre.

$ virtualenv ~/cli-ve

También puede utilizar la opción -p para especificar una versión de Python distinta de la
predeterminada.

$ virtualenv -p /usr/bin/python37 ~/cli-ve

3. Active el entorno virtual nuevo.

Linux o macOS

$ source ~/cli-ve/bin/activate

Windows

$ %USERPROFILE%\cli-ve\Scripts\activate

El símbolo del sistema cambia para mostrar que el entorno virtual está activo.

(cli-ve)~$

4. Instalación o actualización de laAWS CLIVersión 1 en el entorno virtual.


45
AWS Command Line Interface Guía del usuario
Virtualenv

(cli-ve)~$ pip install --upgrade awscli

5. Verifique que laAWS CLILa versión 1 está instalada correctamente.

$ aws --version
aws-cli/1.19.3 Python/3.7.4 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.13

6. Puede utilizar el comando deactivate para salir del entorno virtual. Siempre que inicie una sesión
nueva, debe activar el entorno de nuevo.

46
AWS Command Line Interface Guía del usuario
Fundamentos de configuración

Configuración de la AWS CLI


En esta sección, se explica cómo se configuran los parámetros que AWS Command Line Interface (AWS
CLI) utiliza para interactuar con AWS. Entre ellos, se incluyen las credenciales de seguridad, el formato de
salida predeterminado y la región de AWS predeterminada.
Note

AWS requiere que todas las solicitudes entrantes estén firmadas criptográficamente. El AWS
CLI lo hace automáticamente. La "firma" incluye una marca temporal de fecha/hora. Por lo tanto,
debe asegurarse de que la fecha y la hora de su equipo se haya establecido correctamente.
De lo contrario, si la fecha y la hora de la firma difieren en gran medida de la fecha y la hora
reconocidas por el servicio de AWS, AWS rechazará la solicitud.

Temas
• Fundamentos de configuración (p. 47)
• Opciones de los archivos de configuración y credenciales (p. 51)
• Perfiles con nombre (p. 64)
• Configuración de la AWS CLI para usar AWS Single Sign-On (p. 66)
• Variables de entorno para configurar la AWS CLI (p. 71)
• Opciones de línea de comandos (p. 75)
• Finalización de comandos (p. 78)
• AWS CLIretries (p. 82)
• Obtención de credenciales con un proceso externo (p. 86)
• Uso de credenciales para metadatos de instancias de Amazon EC2 (p. 87)
• Uso de un proxy HTTP (p. 89)
• Uso de un rol de IAM en laAWS CLI (p. 90)

Fundamentos de configuración
En esta sección, se explica cómo se configuran las opciones básicas que utiliza AWS Command Line
Interface (AWS CLI) para interactuar con AWS. Entre ellos, se incluyen las credenciales de seguridad, el
formato de salida predeterminado y la región de AWS predeterminada.
Note

AWS requiere que todas las solicitudes entrantes estén firmadas criptográficamente. El AWS
CLI lo hace automáticamente. La "firma" incluye una marca temporal de fecha/hora. Por lo tanto,
debe asegurarse de que la fecha y la hora de su equipo se haya establecido correctamente.
De lo contrario, si la fecha y la hora de la firma difieren en gran medida de la fecha y la hora
reconocidas por el servicio de AWS, AWS rechazará la solicitud.

Temas
• Configuración rápida con aws configure (p. 48)
• ID de clave de acceso y clave de acceso secreta (p. 48)
• Region (p. 49)
• Formato de salida (p. 49)

47
AWS Command Line Interface Guía del usuario
Configuración rápida con aws configure

• Profiles (p. 50)


• Ajustes de configuración y precedencia (p. 50)

Configuración rápida con aws configure


Para el uso general, el comando aws configure es la forma más rápida de configurar la instalación de la
AWS CLI. Al escribir este comando, la AWS CLI solicita cuatro datos:

• ID de clave de acceso (p. 48)


• Clave de acceso secreta (p. 48)
• AWS Región (p. 49)
• Formato de salida (p. 49)

La AWS CLI almacena esta información en un perfil (una colección de opciones) con el nombre default
en el archivo credentials. De forma predeterminada, la información de este perfil se utiliza cuando
se ejecuta unAWS CLIque no especifique explícitamente un perfil que se va a utilizar. Para obtener
más información sobre el archivo credentials, consulte Opciones de los archivos de configuración y
credenciales (p. 51)

En el ejemplo siguiente se muestran los valores de ejemplo. Remplácelos con sus propios valores, tal y
como se describe en las siguientes secciones.

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json

ID de clave de acceso y clave de acceso secreta


Las claves de acceso constan de un ID de clave de acceso y una clave de acceso secreta, que se utilizan
para firmar mediante programación las solicitudes que realiza aAWS. Si no tiene claves de acceso, puede
crearlas desde elAWS Management Console. Como práctica recomendada, no utilice el Cuenta de AWS
para realizar cualquier tarea en la que no sea necesario usarlo. Por el contrario,Crear un nuevo usuario de
IAM administradorcon claves de acceso para usted.

El único momento en el que puede ver o descargar la clave de acceso secreta es cuando crea las claves.
No puede recuperarlas más adelante. Sin embargo, puede crear nuevas claves de acceso en cualquier
momento. También debe tener permisos para realizar las acciones de IAM requeridas. Para obtener más
información, consultePermisos obligatorios para obtener acceso a recursos de IAMen laIAM User Guide.

Para crear claves de acceso para un usuario de IAM

1. Inicie sesión en la AWS Management Console y abra la consola de IAM en https://


console.aws.amazon.com/iam/.
2. En el panel de navegación, seleccione Users.
3. Elija el nombre del usuario cuyas claves de acceso que desea crear y, a continuación, elija
lacredenciales de seguridad dePestaña.
4. En el navegadorClaves de acceso, elija la secciónCrear clave de acceso de.
5. Para ver el nuevo key pair de acceso, elijaMostrar. No podrá obtener acceso de nuevo a la clave
de acceso secreta cuando este cuadro de diálogo se cierre. Sus credenciales tendrán el aspecto
siguiente:

48
AWS Command Line Interface Guía del usuario
Region

• ID de clave de acceso: AKIAIOSFODNN7EXAMPLE


• Clave de acceso secreta: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
6. Para descargar el par de claves, elija Download .csv file (Descargar archivo .csv). Almacene las claves
en un lugar seguro. No podrá obtener acceso de nuevo a la clave de acceso secreta cuando este
cuadro de diálogo se cierre.

Mantenga la confidencialidad de las claves para proteger su Cuenta de AWS Y no las envíe nunca por
correo electrónico. No las comparta fuera de su organización, aunque reciba una petición que parezca
provenir de AWS o Amazon.com. Nadie que represente legítimamente a Amazon le pedirá nunca su
clave secreta.
7. Después de descargar el.csv, elijaClose. Cuando cree una clave de acceso, el par de claves se
activa de forma predeterminada, y puede utilizar el par de inmediato.

Temas relacionados

• ¿Qué es IAM?en laIAM User Guide


• AWSCredenciales de seguridad deinAWSReferencia general de

Region
Default region name identifica la región de AWS a cuyos servidores desea enviar las solicitudes de
forma predeterminada. Suele ser la región más cercana a usted, pero puede ser cualquier región. Por
ejemplo, puede escribirus-west-2Para utilizar EE.UU. Oeste (Oregón). Esta es la región a la que se
envían todas las solicitudes posteriores, a menos que especifique lo contrario en un comando concreto.
Note

Cuanto utilice la AWS CLI, debe especificar una región de AWS, ya sea de forma explícita o
estableciendo una región predeterminada. Para obtener una lista de las regiones disponibles,
consulte Regiones y puntos de enlace. Los designadores de región que la AWS CLI utiliza
son los mismos nombres que aparecen en las URL y los puntos de enlace de servicio de AWS
Management Console.

Formato de salida
El Default output format especifica el formato de los resultados. El valor puede ser cualquiera
de los incluidos en la lista siguiente. Si no especifica un formato de salida, se utiliza json de forma
predeterminada.

• json (p. 125)— El resultado se formatea como unJSON: cadena.


• yaml (p. 125)— El resultado se formatea como unYAML: cadena. (está disponible en.AWS CLIVersión
2 solamente).
• yaml-stream (p. 126)— La salida es transmitida y formateada comoYAML: cadena. La transmisión
permite un manejo más rápido de tipos de datos de gran tamaño. (está disponible en.AWS CLIVersión 2
solamente).
• text (p. 127)— La salida tiene el formato de varias líneas de valores de cadena separados por
tabuladores. Esto puede ser útil para pasar la salida a un procesador de texto, comogrep,sed, o
bienawk.
• table (p. 129)— La salida se formatea como una tabla utilizando los caracteres +|- para formar los
bordes de celda. Normalmente, la información se presenta en un formato que es más fácil de leer que
los demás formatos, pero que no es útil para programar.

49
AWS Command Line Interface Guía del usuario
Profiles

Profiles
Una colección de opciones se denomina perfil. De forma predeterminada, la AWS CLI utiliza el perfil
default. Puede crear y utilizar perfiles con nombre adicionales con credenciales y opciones variables
especificando la opción --profile y asignando un nombre.

En el ejemplo siguiente se crea un perfil denominado produser.

$ aws configure --profile produser


AWS Access Key ID [None]: AKIAI44QH8DHBEXAMPLE
AWS Secret Access Key [None]: je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: text

A continuación, puede especificar un --profile profilename y utilizar las credenciales y las opciones
almacenadas con dicho nombre.

$ aws s3 ls --profile produser

Para actualizar cualquiera de las opciones, ejecute aws configure de nuevo (con o sin el parámetro
--profile, en función del perfil que desee actualizar) y escriba los valores nuevos que desee. En las
secciones siguientes, aparece más información sobre los archivos que crea aws configure y sobre los
ajustes adicionales y los perfiles con nombre.

Para obtener más información sobre los perfiles con nombre, consulte Perfiles con nombre (p. 64).

Ajustes de configuración y precedencia


La AWS CLI utiliza las credenciales y las opciones de configuración ubicadas en varios lugares, como las
variables de entorno de usuario o sistema, los archivos de configuración de AWS locales o explícitamente
declarados en la línea de comandos como parámetro. Ciertas ubicaciones tienen prioridad sobre otras. Las
credenciales de la AWS CLI y las opciones de configuración tienen prioridad en el siguiente orden:

1. Opciones de línea de comandos (p. 75)— Anula la configuración en cualquier otra ubicación. Puede
especificar --region, --output y --profile como parámetros en la línea de comandos.
2. Environment variables (Variables de entorno): (p. 71)— Puede almacenar valores en las variables de
entorno de su sistema.
3. Archivo de credenciales de CLI (p. 51)— Elcredentialsyconfigarchivo se actualizan al ejecutar
el comandoaws configure. LacredentialsEste archivo se encuentra en.~/.aws/credentialsen
Linux o macOS, o enC:\Users\USERNAME\.aws\credentialsen Windows. Este archivo contiene
las credenciales del perfil default y de todos los perfiles con nombre.
4. Archivo de configuración de CLI (p. 51)— Elcredentialsyconfigarchivo se actualizan al ejecutar
el comandoaws configure. LaconfigEste archivo se encuentra en.~/.aws/configen Linux o
macOS, o enC:\Users\USERNAME\.aws\configen Windows. Este archivo contiene las opciones de
configuración del perfil predeterminado y de los perfiles con nombre.
5. Credenciales contenedor: puede asociar un rol de IAM a cada una de las definiciones de tareas de
Amazon Elastic Container Service (Amazon ECS). Las credenciales temporales de ese rol estarán
disponibles para los contenedores de esa tarea. Para obtener más información, consulte Roles de IAM
para tareas en la Guía para desarrolladores de Amazon Elastic Container Service.
6. Perfiles de instancia de credenciales: puede asociar un rol de IAM a cada una de las instancias de
Amazon Elastic Compute Cloud (Amazon EC2). Las credenciales temporales de ese rol estarán
disponibles para el código que se ejecute en la instancia. Las credenciales se entregan a través del
servicio de metadatos de Amazon EC2 de. Para obtener más información, consulteRoles de IAM
para Amazon EC2en laGuía del usuario de Amazon EC2 para instancias de LinuxyUso de perfiles de
instanciaen laIAM User Guide.

50
AWS Command Line Interface Guía del usuario
Opciones de los archivos de configuración y credenciales

Opciones de los archivos de configuración y


credenciales
Puede guardar las opciones de configuración y las credenciales que utiliza con frecuencia en archivos que
son mantenidos por la AWS CLI.

Los archivos se dividen en profiles. De forma predeterminada, elAWS CLIutiliza la configuración que se
encuentra en el perfil denominadodefault. Para utilizar una configuración diferente, puede crear y hacer
referencia a perfiles adicionales. Para obtener más información sobre los perfiles con nombre, consulte
Perfiles con nombre (p. 64).

También es posible anular una opción individual estableciendo una de las variables de entorno
compatibles o utilizando un parámetro de la línea de comandos. Para obtener más información sobre la
prioridad de opciones de configuración, consulte Ajustes de configuración y precedencia (p. 50).

Temas
• ¿Dónde se almacenan las opciones de configuración? (p. 51)
• Establecer y ver las opciones de configuración (p. 52)
• Configuraciones del archivo config admitidas (p. 53)

¿Dónde se almacenan las opciones de configuración?


La AWS CLI almacena la información confidencial de las credenciales especificadas con aws configure
en un archivo local denominado credentials en una carpeta denominada .aws del directorio principal.
Las opciones de configuración menos confidenciales especificadas con aws configure se guardan en
un archivo local denominado config, que también se almacena en la carpeta .aws del directorio principal.
Almacenamiento de credenciales en el archivo de configuración

Puede mantener todas las opciones de perfil en un solo archivo, ya que la AWS CLI puede leer
las credenciales del archivo config. Si hay credenciales en ambos archivos para un perfil que
comparte el mismo nombre, las claves del archivo de credenciales tienen prioridad.
Los kits de desarrollo de software (SDK) de varios lenguajes también utilizan estos archivos. Si
utiliza uno de los SDK además de la AWS CLI, confirme si las credenciales deben almacenarse
en su propio archivo.

La ubicación del directorio principal varía en función del sistema operativo, pero se hace referencia a
él mediante las variables de entorno %UserProfile% en Windows y $HOME o ~ (tilde) en los sistemas
basados en Unix. Es posible especificar una ubicación no predeterminada para el archivo config
estableciendo la variable de entorno AWS_CONFIG_FILE en otra ruta local. Para obtener más información,
consulte Variables de entorno para configurar la AWS CLI (p. 71).

Por ejemplo, los archivos generados porAWS CLIpara un perfil predeterminado configurado conaws
configuretiene un aspecto similar al siguiente.

~/.aws/credentials

[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

~/.aws/config

[default]

51
AWS Command Line Interface Guía del usuario
Establecer y ver las opciones de configuración

region=us-west-2
output=json

Para ver ejemplos de archivos con varios perfiles con nombre, consulte Perfiles con nombre (p. 64).

Cuando se utiliza un perfil compartido que especifica unAWS Identity and Access Management(IAM),
la funciónAWS CLIllama a laAWS STS AssumeRolepara recuperar las credenciales temporales. A
continuación, se almacenan estas credenciales (en ~/.aws/cli/cache). Los comandos de la AWS CLI
posteriores utilizan las credenciales temporales almacenadas en caché hasta que caducan, momento en el
cual la AWS CLI las actualiza automáticamente.

Establecer y ver las opciones de configuración


Hay varias formas de ver y establecer las opciones de configuración en los archivos.

Credenciales y archivo de configuración

Vea y edite las opciones editando directamente los archivos config y credentials en un
editor de texto. Para obtener más información, consulte ¿Dónde se almacenan las opciones de
configuración? (p. 51)

Para eliminar una opción, elimine la opción correspondiente en sus archivos config y credentials.
aws configure

Ejecute este comando para establecer y ver rápidamente las credenciales, la región y el formato de
salida. En el ejemplo siguiente se muestran los valores de ejemplo.

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json

Para obtener más información, consulte Configuración rápida con aws configure (p. 48)
aws configure set

Puede establecer las credenciales o las opciones de configuración mediante aws configure set.
Especifique el perfil que desea ver o modificar con la opción --profile.

Por ejemplo, el siguiente comando configura region en el perfil denominado integ.

$ aws configure set region us-west-2 --profile integ

Para quitar una opción, utilice una cadena vacía como valor o elimine manualmente la opción de los
archivos config y credentials en un editor de texto.

$ aws configure set cli_pager "" --profile integ

aws configure get

Puede recuperar las credenciales o las opciones de configuración que haya establecido utilizando aws
configure get. Especifique el perfil que desea ver o modificar con la opción --profile.

Por ejemplo, el siguiente comando recupera la opción region en el perfil denominado integ.

$ aws configure get region --profile integ

52
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

us-west-2

Si la salida está vacía, significa que la configuración no está establecida de forma explícita y se utiliza
el valor predeterminado.
aws configure import
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usa solo si usaAWS CLIVersión 2. No está
disponible si ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la
versión 2, consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Importe las credenciales de CSV generadas desde la consola web de AWS. Se importa un archivo
CSV con el nombre de perfil que coincide con el nombre de usuario de IAM. El archivo CSV debe
contener los siguientes encabezados.
• Nombre de usuario
• ID de clave de acceso
• Clave de acceso secreta

$ aws configure import --csv file://credentials.csv

aws configure list

Para enumerar todos los datos de configuración, utilice el comando aws configure list. Este
comando muestra el nombre de la AWS CLI de todas las opciones que ha configurado, sus valores y
desde dónde se recuperó la configuración.

$ aws configure list


Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ABCD shared-credentials-file
secret_key ****************ABCD shared-credentials-file
region us-west-2 env AWS_DEFAULT_REGION

aws configure list-profiles


Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usa solo si usaAWS CLIVersión 2. No está
disponible si ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la
versión 2, consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Para enumerar todos los nombres de perfil, utilice el comando aws configure list-profiles.

$ aws configure list-profiles


default
test

Configuraciones del archivo config admitidas


Temas
• Global settings (Configuración global) (p. 54)
• Configuración de comandos personalizados de S3 (p. 61)

53
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

Se admiten las siguientes opciones en el archivo config. Se utilizan los valores enumerados en el
perfil especificado (o predeterminado) a menos que queden anulados por la presencia de una variable
de entorno con el mismo nombre o una opción de línea de comandos con el mismo nombre. Para
obtener más información sobre las opciones que tienen prioridad, consulte Ajustes de configuración y
precedencia (p. 50)

Global settings (Configuración global)


api_versions

Algunos servicios de AWS mantienen varias versiones de la API que son compatibles con versiones
anteriores. De forma predeterminada,AWS CLIutilizan la última versión de API disponible. Puede
especificar la versión de la API que se va a utilizar para un perfil mediante la inclusión de la
configuración api_versions en el archivo config.

Se trata de una configuración "anidada" que va seguida de una o varias líneas con sangría; cada
una de ellas identifica un servicio de AWS y la versión de la API que se va a utilizar. Consulte la
documentación de cada servicio para saber qué versiones de API están disponibles.

En el siguiente ejemplo, se muestra cómo especificar una versión de API para dos servicios de AWS.
Estas versiones de API se utilizan únicamente para los comandos que se ejecutan bajo el perfil que
contiene estos ajustes.

api_versions =
ec2 = 2015-03-01
cloudfront = 2015-09-017

Este ajuste no tiene una variable de entorno ni un parámetro de línea de comandos equivalente.

aws_access_key_id (p. 48)

Especifica la clave de acceso de AWS que se utiliza como parte de las credenciales para autenticar
la solicitud del comando. Aunque puede estar almacenada en el archivo config, recomendamos
almacenar esta información en el archivo credentials.

Se puede anular mediante la variable de entorno AWS_ACCESS_KEY_ID. No se puede especificar el


ID de clave de acceso como una opción de línea de comandos.

aws_access_key_id = 123456789012

aws_secret_access_key (p. 48)

Especifica la clave secreta de AWS que se utiliza como parte de las credenciales para autenticar
la solicitud del comando. Aunque puede estar almacenada en el archivo config, recomendamos
almacenar esta información en el archivo credentials.

Se puede anular mediante la variable de entorno AWS_SECRET_ACCESS_KEY. No se puede


especificar la clave de acceso secreta como una opción de línea de comandos.

aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

aws_session_token

Especifica un token de sesión de AWS. Un token de sesión solo es necesario si especifica


manualmente credenciales de seguridad temporales. Aunque puede estar almacenada en el archivo
config, recomendamos almacenar esta información en el archivo credentials.

54
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

Se puede anular mediante la variable de entorno AWS_SESSION_TOKEN. No se puede especificar un


token de sesión como una opción de línea de comandos.

aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT
+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/
IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

ca_bundle

Especifica un paquete de certificados de CA (un archivo con la extensión .pem) que se utiliza para
verificar certificados SSL.

Se puede anular mediante la variable de entorno AWS_CA_BUNDLE o la opción de línea de comandos


--ca-bundle.

ca_bundle = dev/apps/ca-certs/cabundle-2019mar05.pem

cli_auto_prompt
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usa solo si usaAWS CLIVersión 2. No está
disponible si ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la
versión 2, consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Habilita el mensaje automático para elAWS CLIVersión 2. Hay dos configuraciones que se pueden
usar:
• onutiliza el modo de mensaje automático completo cada vez que intenta ejecutar unawscomando.
Esto incluye presionarESCRIBAdespués de un comando completo o un comando incompleto.

cli_auto_prompt = on

• on-partialutiliza el modo automático parcial. Si un comando está incompleto o no se puede


ejecutar debido a errores de validación del lado del cliente, se utiliza el símbolo automático. Este
modo es especialmente útil si tiene scripts preexistentes, runbooks, o sólo desea que se le pregunte
automáticamente para los comandos con los que no está familiarizado en lugar de solicitarse en
cada comando.

cli_auto_prompt = on-partial

Puede invalidar este valor con laaws_cli_auto_prompt (p. 73)o la variable de entorno--cli-
auto-prompt (p. 76)y--no-cli-auto-prompt (p. 77)Parámetros de línea de comandos.

Para obtener información sobre laAWS CLIfunción de petición automática de la versión 2, consulteCon
laAWS CLIsolicitarle comandos (p. 120).
cli_binary_format
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usa solo si usaAWS CLIVersión 2. No está
disponible si ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la
versión 2, consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Especifica el modo en que elAWS CLILa versión 2 interpreta los parámetros de entrada binarios.
Puede ser uno de los siguientes valores:
• base64: es el valor predeterminado. Un parámetro de entrada escrito como un objeto binario grande
(BLOB) acepta una cadena codificada en base64. Para pasar verdadero contenido binario, coloque

55
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

el contenido en un archivo y proporcione la ruta y el nombre del archivo con el prefijo fileb://
como valor del parámetro. Para pasar el texto codificado en base64 incluido en un archivo,
proporcione la ruta y el nombre del archivo con el prefijo file:// como valor del parámetro.
• RAW-in-base64-out— Proporciona compatibilidad con versiones anteriores con elAWS
CLIComportamiento de la versión 1, donde los valores binarios deben pasarse literalmente.

Esta entrada no tiene una variable de entorno equivalente. Puede especificar el valor en un solo
comando mediante el parámetro --cli-binary-format raw-in-base64-out.

cli_binary_format = raw-in-base64-out

Si hace referencia a un valor binario en un archivo mediante la notación del prefijo fileb://, la AWS
CLI siempre espera que el archivo incluya contenido binario sin codificar y no intenta convertir el valor.

Si hace referencia a un valor binario en un archivo mediante la notación del prefijo file://, la AWS
CLI tratará el archivo de acuerdo con el valor de cli_binary_format actual. Si el valor de esa
configuración esbase64(el valor predeterminado cuando no se establece explícitamente), elAWS
CLIespera que el archivo incluya texto codificado en base64. Si el valor de esa configuración esraw-
in-base64-out, elAWS CLIespera que el archivo incluya contenido binario sin codificar.
cli_follow_urlparam
Esta característica solo está disponible conAWS CLIVersión 1.

La característica siguiente está disponible solo si usa solo si usaAWS CLIVersión 1. No está
disponible si ejecutaAWS CLIVersión 2.

Especifica si la propiedadAWS CLIintenta seguir enlaces URL en los parámetros de línea de


comandos que comienzan conhttp://orhttps://. Cuando la opción está habilitada, el contenido
recuperado se utiliza como el valor del parámetro en lugar de la URL.
• true: es el valor predeterminado. Cuando se configura, se obtienen todos los parámetros de cadena
que comienzan por http:// o https:// y el contenido descargado se utiliza como valor del
parámetro en el comando.
• false— Si se especifica, elAWS CLINo trata los valores de cadena del parámetro que comienzan
porhttp://orhttps://diferente de otras cadenas.

Esta entrada no tiene una variable de entorno equivalente ni una opción de línea de comandos.

cli_follow_urlparam = false

cli_pager
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usa solo si usaAWS CLIVersión 2. No está
disponible si ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la
versión 2, consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Especifica el programa de paginación utilizado para la salida. De forma predeterminada,AWS CLILa


versión 2 devuelve todas las salidas a través del paginador predeterminado de su sistema operativo.

Puede ser anulado por la variable de entorno AWS_PAGER.

cli_pager=less

Para deshabilitar todo el uso de un programa de paginación externo, establezca la variable en una
cadena vacía como se muestra en el siguiente ejemplo.

56
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

cli_pager=

cli_timestamp_format

Especifica el formato de los valores de la marca temporal incluidos en la salida. Puede especificar
cualquiera de los siguientes valores:
• iso8601— El valor predeterminado de laAWS CLIVersión 2. Si se especifica, la AWS CLI cambia el
formato de todas las marcas temporales conforme a ISO 8601.
• alambre— El valor predeterminado de laAWS CLIVersión 1. Si se especifica, la AWS CLI muestra
todos los valores de las marcas temporales exactamente como se recibieron en la respuesta de la
consulta HTTP.

Esta entrada no tiene una variable de entorno equivalente ni una opción de línea de comandos.

cli_timestamp_format = iso8601

credential_process (p. 86)

Especifica un comando externo queAWS CLISe ejecuta para generar o recuperar las credenciales de
autenticación que se van a utilizar para este comando. El comando debe devolver las credenciales
en un formato específico. Para obtener más información sobre el uso de esta configuración, consulte
Obtención de credenciales con un proceso externo (p. 86).

Esta entrada no tiene una variable de entorno equivalente ni una opción de línea de comandos.

credential_process = /opt/bin/awscreds-retriever --username susan

credential_source (p. 90)

Se utiliza dentro de las instancias o contenedores de Amazon EC2 para especificar dónde está
elAWS CLIPuede encontrar las credenciales que va a utilizar para asumir el rol especificado con
larole_arnParámetro. No puede especificar source_profile y credential_source en el
mismo perfil.

Este parámetro puede tener uno de tres valores:


• Entorno— Especifica que elAWS CLIes para recuperar las credenciales de origen de las variables
de entorno.
• EC2InstanceMetaData— Especifica que elAWS CLIes usar el rol de IAM adjunto alPerfil de instancia
EC2para obtener las credenciales de origen.
• EcsContainer— Especifica que elAWS CLIes utilizar el rol de IAM asociado al contenedor de ECS
como credenciales de origen.

credential_source = Ec2InstanceMetadata

duration_seconds

Especifica la duración máxima de la sesión de rol, en segundos. Este valor puede oscilar entre
900 segundos (15 minutos) y el valor de la duración máxima de la sesión para el rol (que puede ser
43200 como máximo). Se trata de un parámetro opcional y, de forma predeterminada, el valor se
establece en 3600 segundos.
external_id (p. 94)

Especifica un identificador único utilizado por terceros para adoptar un rol en las cuentas de los
clientes. Se asigna al parámetro ExternalId en la operación AssumeRole. Este parámetro solo es

57
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

necesario si la política de confianza del rol especifica un valor para ExternalId. Para obtener más
información, consulteCómo utilizar una puerta de enlace externa al otorgar acceso aAWSRecursos a
tercerosen laGuía del usuario de IAM.
max_attempts (p. 82)

Especifica un valor de los intentos de reintento máximos deAWS CLIutiliza el controlador de retry,
donde la llamada inicial cuenta para elmax_attemptsque proporciona.

Puede invalidar este valor con laAWS_MAX_ATTEMPTSvariable de entorno.

max_attempts = 3

mfa_serial (p. 93)

El número de identificación del dispositivo MFA que se debe utilizar al asumir un rol. Este valor solo
es obligatorio si la política de confianza del rol que se ha asumido incluye una condición que requiere
autenticación MFA. El valor puede ser un número de serie de un dispositivo de hardware (como
GAHT12345678) o un nombre de recurso de Amazon (ARN) de un dispositivo MFA virtual (como
arn:aws:iam::123456789012:mfa/user).
salida (p. 49)

Especifica el formato de la salida predeterminado para los comandos solicitados con este perfil. Puede
especificar cualquiera de los siguientes valores:
• json (p. 125)— La salida se formatea comoJSONCadena.
• yaml (p. 125)— La salida se formatea comoYAMLCadena. (está disponible en.AWS CLIVersión 2)
• yaml-stream (p. 126)— La salida es transmitida y formateada comoYAMLCadena. La
transmisión permite un manejo más rápido de tipos de datos de gran tamaño. (está disponible
en.AWS CLIVersión 2)
• text (p. 127)— La salida tiene el formato de varias líneas de valores de cadena separados por
tabuladores. Esto puede ser útil para pasar la salida a un procesador de texto, comogrep,sed, o
bienawk.
• table (p. 129)— el resultado tiene el formato de una tabla en la que se usan los caracteres +|-
para los bordes de celda. Normalmente, la información se presenta en un formato que es más fácil
de leer que los demás formatos, pero que no es útil para programar.

Se puede anular mediante la variable de entorno AWS_DEFAULT_OUTPUT o la opción de línea de


comandos --output.

output = table

parameter_validation

Especifica si el cliente de la AWS CLI intenta validar parámetros antes de enviarlos al punto de enlace
de servicio de AWS.
• true: es el valor predeterminado. Si se especifica, elAWS CLIrealiza la validación local de
parámetros de línea de comandos.
• false— Si se especifica, elAWS CLIno valida los parámetros de línea de comandos antes de
enviarlos alAWSpunto de enlace de servicio.

Esta entrada no tiene una variable de entorno equivalente ni una opción de línea de comandos.

parameter_validation = false

58
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

region (p. 49)

Especifica la región de AWS a la que se envían solicitudes para los comandos solicitados con este
perfil.
• Puede especificar cualquiera de los códigos de región disponibles para el servicio elegido tal y como
se enumera en laAWSRegiones y puntos de enlace deen laReferencia general de Amazon Web
Services.
• aws_globalle permite especificar el punto de enlace global para los servicios que admiten un
punto de enlace global además de los puntos de enlace regionales, comoAWS Security Token
Service(AWS STS) y Amazon Simple Storage Service (Amazon S3).

Puede invalidar este valor mediante la variable de entorno AWS_DEFAULT_REGION o la opción de


línea de comandos --region.

region = us-west-2

retry_mode (p. 82)

Especifica qué modo de volver a intentarloAWS CLIUsos. Hay tres modos de reintento disponibles:
heredado (predeterminado), estándar y adaptativo. Para obtener más información acerca de los
reintentos, consulte AWS CLIretries (p. 82).

Puede invalidar este valor con laAWS_RETRY_MODEvariable de entorno.

retry_mode = standard

role_arn (p. 90)

Especifica el nombre de recurso de Amazon (ARN) del rol de IAM que desea utilizar para ejecutar
elAWS CLIcommands. También debe especificar uno de los siguientes parámetros para identificar las
credenciales que tienen permiso para asumir este rol:
• source_profile
• credential_source

role_arn = arn:aws:iam::123456789012:role/role-name

role_session_name (p. 94)

Especifica el nombre que se va a asociar a la sesión de rol. Este valor se proporciona a


laRoleSessionNamecuando el parámetroAWS CLIllama a laAssumeRoleLa operación y pasa a
formar parte del ARN del usuario del rol asumido: arn:aws:sts::123456789012:assumed-
role/role_name/role_session_name. Se trata de un parámetro opcional. Si no proporciona este
valor, se genera automáticamente un nombre de sesión. Este nombre aparece en los registros de
AWS CloudTrail correspondientes a las entradas asociadas a esta sesión.

role_session_name = maria_garcia_role

source_profile (p. 90)

Especifica un perfil con nombre con credenciales duraderas que la AWS CLI puede utilizar
para asumir el rol que ha especificado con el parámetro role_arn. No puede especificar
source_profile y credential_source en el mismo perfil.

source_profile = production-profile

59
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

sso_account_id (p. 66) (está disponible en.AWS CLIVersión 2)

Especifica elAWSID de la cuenta de que contiene el rol de IAM con el permiso que desea conceder
alAWS SSOUsuario.

Esta configuración no tiene ninguna variable de entorno ni ninguna opción de línea de comandos.

sso_account_id = 123456789012

sso_region (p. 66) (está disponible en.AWS CLIVersión 2)

Especifica la región de AWS que contiene el host del portal de AWS SSO. Esto es independiente (y
puede ser una región diferente) del parámetro region predeterminado de la CLI.

Esta configuración no tiene ninguna variable de entorno ni ninguna opción de línea de comandos.

aws_sso_region = us_west-2

sso_role_name (p. 66) (está disponible en.AWS CLIVersión 2)

Especifica el nombre descriptivo del rol de IAM que define los permisos que tiene el usuario cuando
utiliza este perfil.

Esta configuración no tiene ninguna variable de entorno ni ninguna opción de línea de comandos.

sso_role_name = ReadAccess

sso_start_url (p. 66) (está disponible en.AWS CLIVersión 2)

Especifica la URL que apunta al portal de usuarios de AWS SSO de la organización. La AWS CLI
utiliza esta dirección URL para establecer una sesión con el servicio AWS SSO para autenticar a sus
usuarios.

Esta configuración no tiene ninguna variable de entorno ni ninguna opción de línea de comandos.

sso_start_url = https://my-sso-portal.awsapps.com/start

sts_regional_endpoints

Especifica cómo la AWS CLI determina el punto de enlace del servicio de AWS que el cliente de la
AWS CLI utiliza para comunicarse con AWS Security Token Service (AWS STS).
• El valor predeterminado deAWS CLILa versión 1 eslegacy.
• El valor predeterminado deAWS CLILa versión 2 esregional.

Puede especificar uno de estos dos valores:


• legacy— Utiliza el punto final STS global,sts.amazonaws.com, para lo
siguienteAWSRegiones:ap-northeast-1,ap-south-1,ap-southeast-1,ap-
southeast-2,aws-global,ca-central-1,eu-central-1,eu-north-1,eu-west-1,eu-
west-2,eu-west-3,sa-east-1,us-east-1,us-east-2,us-west-1, yus-west-2. Todas las
demás regiones utilizan automáticamente su punto de enlace regional respectivo.
• regional— ElAWS CLIutiliza siempre elAWS STSpara la región configurada actualmente. Por
ejemplo, si el cliente está configurado para usar us-west-2, todas las llamadas a AWS STS se

60
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

hacen al punto de enlace regional sts.us-west-2.amazonaws.com en vez de al punto de enlace


global sts.amazonaws.com. Para enviar una solicitud al punto de enlace global mientras esta
configuración está habilitada, puede establecer la región en aws-global.

Esta configuración se puede sobrescribir utilizando la variable de entorno


AWS_STS_REGIONAL_ENDPOINTS. No se puede establecer este valor como parámetro de la línea de
comandos.
web_identity_token_file (p. 95)

Especifica la ruta de un archivo que contiene un token de acceso de OAuth 2.0 o un token de
ID de OpenID Connect proporcionado por un proveedor de identidades. La AWS CLI carga
el contenido de este archivo y lo pasa como argumento WebIdentityToken a la operación
AssumeRoleWithWebIdentity.
tcp_keepalive

Especifica si el cliente de la AWS CLI utiliza paquetes keep-alive de TCP.

Esta entrada no tiene una variable de entorno equivalente ni una opción de línea de comandos.

tcp_keepalive = false

Configuración de comandos personalizados de S3


Amazon S3 admite varios ajustes que determinan el modo en que laAWS CLIrealiza operaciones de
Amazon S3. Algunos se aplican a todos los comandos de S3 tanto en los espacios de nombres s3
como s3api. Otros son específicos de los comandos "personalizados" de S3 que abstraen operaciones
comunes y hacen más que un mapeo uno a uno en una operación de la API. Los comandos de aws s3
de transferencia cp, sync, mv y rm tienen opciones adicionales que puede utilizar para controlar las
transferencias de S3.

Para configurar todas estas opciones, especifique la configuración s3 anidada en su archivo config. A
continuación, se introduce con sangría cada configuración en su propia línea.
Note

Estos ajustes son completamente opcionales. Debe poder utilizar los comandos de transferencia
de aws s3 sin configurar ninguno de estos ajustes. Estas opciones se ofrecen para afinar el
rendimiento o para tener en cuenta el entorno específico en el que se ejecutan estos comandos
de aws s3.

Los siguientes ajustes se aplican a cualquier comando de S3 en el espacio de nombres s3 o s3api.

addressing_style

Especifica qué estilo de direccionamiento debe usarse. Esto controla si el nombre del bucket está
en el hostname o es parte de la URL. Los valores válidos son path, virtual y auto. El valor
predeterminado es auto.

Hay dos estilos para crear un punto enlace de Amazon S3. El primero se llama
virtual e incluye el nombre del bucket como parte del nombre de host. Por ejemplo:
https://bucketname.s3.amazonaws.com. Para otras opciones, consulte lapath,
tratará el nombre del bucket como si fuera una ruta del URI; por ejemplo,https://
s3.amazonaws.com/bucketname. El valor predeterminado en la CLI es utilizar auto, que intenta
utilizar el estilo virtual siempre que puede, pero usará el estilo path cuando sea necesario.
Por ejemplo, si el nombre del bucket no es compatible con DNS, el nombre del bucket no puede
formar parte del nombre de host y debe estar en la ruta. Con auto, la CLI detectará esta condición y

61
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

cambiará automáticamente al estilo path. Si establece el estilo de direccionamiento en path, debe


asegurarse de que la región de AWS que ha configurado en la AWS CLI coincida con la región del
bucket.
payload_signing_enabled

Especifica si firma con SHA256 cargas de sigv4. De forma predeterminada, esta opción está
deshabilitada para cargas de streaming (UploadPart y PutObject) cuando se utiliza https. De
forma predeterminada, la opción está configurada en false para cargas de streaming (UploadPart
y PutObject), pero solo si está presente un ContentMD5 (se genera de forma predeterminada) y el
punto de enlace utiliza HTTPS.

Si se establece en verdadero, las solicitudes de S3 reciben validación de contenido adicional en


forma de suma de comprobación SHA256 que se calcula automáticamente y se incluye en la firma
de la solicitud. Si se establece en falso, la suma de comprobación no se calcula. Deshabilitar esta
opción puede ser útil para reducir la sobrecarga de rendimiento creada por el cálculo de la suma de
comprobación.
use_dualstack_endpoint

Utilice el punto de enlace IPv4/IPv6 doble de Amazon S3 para todos loss3ys3apicommands.


El valor predeterminado es false. Es mutuamente excluyente con la configuración
use_accelerate_endpoint.

Si se establece en «true», elAWS CLIdirige todas las solicitudes de Amazon S3 al punto de enlace
IPv4/IPv6 doble de la región configurada.
use_accelerate_endpoint

Utilice el punto de enlace de Amazon S3 Accelerate para todos loss3ys3apicommands.


El valor predeterminado es false. Es mutuamente excluyente con la configuración
use_dualstack_endpoint.

Si se establece en «true», elAWS CLIdirige todas las solicitudes de Amazon S3 alS3


AccelerateEns3-accelerate.amazonaws.com. Para utilizar este punto de enlace, debe
habilitar el bucket para que use S3 Accelerate. Todas las solicitudes se envían mediante el
direccionamiento al bucket de estilo virtual: my-bucket.s3-accelerate.amazonaws.com.
CualquieraListBuckets,CreateBucket, yDeleteBucket Las solicitudes no se envían al
punto de enlace de S3 Accelerate, ya que este punto de enlace no admite estas operaciones. Este
comportamiento también se puede establecer si el parámetro --endpoint-url está establecido en
https://s3-accelerate.amazonaws.com o http://s3-accelerate.amazonaws.com para
cualquier comando s3api o s3.

Estos ajustes de configuración solo se aplican a los comandos del conjunto de comandos del espacio de
nombres de s3:

max_bandwidth

Especifica el ancho de banda máximo que puede ser consumido para cargar y descargar datos de
Amazon S3. El valor predeterminado es sin límite.

Esto limita el ancho de banda máximo que los comandos de S3 pueden utilizar para transferir datos
desde y hacia Amazon S3. Este valor se aplica únicamente a cargas y descargas; no se aplica a
copias o eliminaciones. El valor se expresa como bytes por segundo. El valor puede especificarse
como:
• Un número entero. Por ejemplo, 1048576 establece el uso de ancho de banda máximo en 1
megabyte por segundo.
• Un número entero seguido de un sufijo de velocidad. Puede especificar sufijos de velocidad
mediante: KB/s, MB/s o GB/s. Por ejemplo, 300KB/s, 10MB/s.

62
AWS Command Line Interface Guía del usuario
Configuraciones del archivo config admitidas

En general, se recomienda intenta reducir primero el consumo de ancho de banda, disminuyendo las
max_concurrent_requests. Si así no se reduce el consumo de ancho de banda lo suficiente para
conseguir la velocidad deseada, puede utilizar la opción max_bandwidth para limitar más el consumo
de ancho de banda. Esto se debe a que max_concurrent_requests controla la cantidad de
subprocesos se están ejecutando en este momento. Si en su lugar reduce primero max_bandwidth
pero deja max_concurrent_requests en un valor alto, puede provocar que los subprocesos tengan
que esperar innecesariamente. Esto puede provocar un consumo excesivo de recursos y que se
agoten los tiempos de espera de conexión.
max_concurrent_requests

Especifica el número máximo de solicitudes concurrentes. El valor predeterminado es 10.

Los comandos de transferencia de aws s3 tienen varios subprocesos. En un momento dado, es


posible que se estén ejecutando varias solicitudes de Amazon S3. Por ejemplo, cuando utiliza el
comando aws s3 cp localdir s3://bucket/ --recursive para cargar archivos en un bucket
de S3, la AWS CLI puede cargar los archivos localdir/file1, localdir/file2 y localdir/
file3 en paralelo. La configuración max_concurrent_requests especifica el número máximo de
operaciones de transferencia que se pueden ejecutar al mismo tiempo.

Es posible que tenga que cambiar este valor por varios motivos:
• Reducir el valor: en algunos entornos, el valor predeterminado de 10 solicitudes simultáneas puede
ser demasiado para un sistema. Esto puede provocar tiempos de espera de conexión o ralentizar
la capacidad de respuesta del sistema. Al reducir este valor, los comandos de transferencia de S3
consumen menos recursos. La desventaja es que las transferencias de S3 puede tardar más en
completarse. Puede ser necesario reducir este valor si utiliza una herramienta para limitar el ancho
de banda.
• Aumentar este valor: en algunos casos, puede ser conveniente que las transferencias de Amazon
S3 se completen lo más rápido posible, con el mayor ancho de banda de red según sea necesario.
En este caso, el número predeterminado de solicitudes simultáneas podría no ser suficiente para
utilizar todo el ancho de banda de red disponible. Aumentar este valor puede mejorar el tiempo que
se tarda en completar una transferencia de Amazon S3.
max_queue_size

Especifica el número máximo de tareas en la cola. El valor predeterminado es 1000.

LaAWS CLILa utiliza internamente un modelo que pone en cola las tareas de Amazon S3 que luego
ejecutan los consumidores, cuyo número está limitado pormax_concurrent_requests. Una tarea,
por lo general, se asigna a una sola operación de Amazon S3. Por ejemplo, una tarea puede ser
PutObjectTask, GetObjectTask o UploadPartTask. La velocidad a la que se añaden tareas a
la cola puede ser mucho más rápida que la velocidad en la que los consumidores finalizan las tareas.
Para evitar el crecimiento ilimitado, el tamaño de la cola de tareas se limita a un tamaño específico.
Esta configuración cambia el valor de ese número máximo.

Por lo general, no tendrá que cambiar este ajuste. Esta configuración también se corresponde con el
número de tareas que laAWS CLIes consciente de que tiene que ejecutarse. Esto significa que, de
forma predeterminada, laAWS CLISolo puede ver 1000 tareas. Aumentar este valor significa queAWS
CLIPuede saber con mayor rapidez el número total de tareas necesario, suponiendo que la velocidad
de la cola sea más rápida que la velocidad de finalización de la tarea. La desventaja es que un valor
mayor en max_queue_size, exige también más memoria.
multipart_chunksize

Especifica el tamaño del fragmento que la AWS CLI utiliza en las transferencias multiparte de archivos
individuales. El valor predeterminado es 8 MB, con un mínimo de 5 MB.

Cuando una transferencia de archivos excede elmultipart_threshold, elAWS CLIdivide el archivo


en fragmentos de este tamaño. Este valor puede especificarse utilizando la misma sintaxis que
en multipart_threshold, ya sea especificando el número de bytes como un número entero o
especificando un tamaño y un sufijo.

63
AWS Command Line Interface Guía del usuario
Perfiles con nombre

multipart_threshold

Especifica el umbral de tamaño que la AWS CLI utiliza en las transferencias multiparte de archivos
individuales. El valor predeterminado es 8 MB.

Al cargar, descargar o copiar un archivo, los comandos de Amazon S3 cambian a operaciones


multiparte si el archivo supera este tamaño. Puede especificar este valor de una de las dos formas
siguientes:
• El tamaño del archivo en bytes. Por ejemplo, 1048576.
• El tamaño del archivo con un sufijo de tamaño. Puede utilizar KB, MB, GB o TB. Por ejemplo: 10MB,
1GB.
Note

S3 puede imponer restricciones en los valores válidos que se pueden utilizar para las
operaciones multiparte. Para obtener más información, consulte laCargas multiparte de
S3en laAmazon Simple Storage Service Developer Guide.

Estos ajustes se establecen con una clave de s3 de alto nivel en el archivo config, tal y como se muestra
en el siguiente ejemplo del perfil development.

[profile development]
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
multipart_threshold = 64MB
multipart_chunksize = 16MB
max_bandwidth = 50MB/s
use_accelerate_endpoint = true
addressing_style = path

Perfiles con nombre


Un perfil con nombre es una colección de configuraciones y credenciales que se pueden aplicar a un
comando de la AWS CLI. Cuando especifica un perfil para ejecutar un comando, se usan la configuración
y las credenciales para ejecutar dicho comando. Puede especificar unodefaultPerfil utilizado cuando
no se hace referencia explícita a ningún perfil. Otros perfiles tienen nombres que se pueden especificar
como parámetro en la línea de comandos para comandos individuales. Alternativamente, puede especificar
un perfil en una variable de entorno (AWS_PROFILE) (p. 71) que esencialmente anula el perfil
predeterminado para los comandos que se ejecutan en esa sesión.

La AWS CLI admite el uso de cualquiera de los perfiles con nombre almacenados en los archivos config
y credentials. Puede configurar perfiles adicionales utilizando aws configure con la opción --
profile o añadiendo entradas a los archivos config y credentials.

En el siguiente ejemplo, se muestra un archivo credentials con dos perfiles. El


primero[predeterminada]Cuando se ejecuta unAWS CLIsin perfil. El segundo se utiliza cuando se ejecuta
unAWS CLIComando de la con la--profile user1Parámetro.

~/.aws/credentials (Linux y Mac) o %USERPROFILE%\.aws\credentials (Windows)

[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE

64
AWS Command Line Interface Guía del usuario
Uso de perfiles con la AWS CLI

aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

Cada perfil puede especificar credenciales diferentes (puede que sean de usuarios de IAM diferentes) y
también puede especificar diferentesAWSRegiones y formatos de salida.

~/.aws/config (Linux y Mac) o %USERPROFILE%\.aws\config (Windows)

[default]
region=us-west-2
output=json

[profile user1]
region=us-east-1
output=text

Important
LacredentialsEl archivo usa un formato de denominación diferente que elAWS CLI
configpara perfiles con nombre. Incluya el prefijo "profile" únicamente cuando configure un
perfil con nombre en el archivo config. no utilice la palabra profile cuando cree una entrada
en el archivo credentials.

Uso de perfiles con la AWS CLI


Para usar un perfil con nombre, añada la opción --profile profile-name a su comando. En el
siguiente ejemplo, se enumeran todas las instancias de Amazon EC2 utilizando las credenciales y la
configuración definidas en lauser1de los archivos de ejemplo anteriores.

$ aws ec2 describe-instances --profile user1

Si desea utilizar un perfil con nombre para varios comandos, puede evitar especificar el perfil en cada
comando configurando la variable de entorno AWS_PROFILE en la línea de comandos.

Linux o macOS

$ export AWS_PROFILE=user1

Windows

C:\> setx AWS_PROFILE user1

El uso de set para configurar una variable de entorno cambia el valor usado hasta que finalice la sesión
de símbolo de sistema actual o hasta que otorgue a la variable un valor diferente.

El uso de setx para establecer una variable de entorno cambia el valor de todos los shells de comandos
que cree después de ejecutar el comando. No afecta a ningún shell de comandos que ya se esté
ejecutando en el momento en que ejecuta el comando. Cierre y reinicie el shell de comandos para ver los
efectos del cambio.

La configuración de la variable de entorno cambia el perfil predeterminado hasta que finalice la sesión
del shell, o hasta que otorgue a la variable a un valor diferente. Puede hacer que las variables de entorno
persistan en sesiones futuras poniéndolas en el script de inicio del shell. Para obtener más información,
consulte Variables de entorno para configurar la AWS CLI (p. 71).
Note
Si especifica un perfil con --profile en un comando individual, eso anula la configuración
especificada en la variable de entorno sólo para ese comando.

65
AWS Command Line Interface Guía del usuario
Configuración de la AWS CLI
para usar AWS Single Sign-On

Configuración de la AWS CLI para usar AWS Single


Sign-On
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible si


ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2, consulte
Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Si su organización utilizaAWS Single Sign-On(AWS SSO), los usuarios pueden iniciar sesión en Active
Directory, unAWS SSOootro iDP conectado aAWS SSOy se asignan a unAWS Identity and Access
Management(IAM) que le permite ejecutarAWS CLIcommands. Independientemente del iDP que utilice,
AWS SSO abstrae esas distinciones y todas funcionan con la AWS CLI como se describe a continuación.
Por ejemplo, puede conectar Microsoft Azure AD como se describe en el artículo del blogLa próxima
evolución enAWSInicio de sesión único

Para obtener más información acerca de AWS SSO, consulte la Guía del usuario de AWS Single Sign-On.

En este tema, se describe cómo se configura la AWS CLI para autenticar al usuario con AWS SSO y
obtener credenciales a corto plazo para ejecutar comandos de la AWS CLI. Contiene las secciones
siguientes:

• Configuración de un perfil con nombre para que utilice AWS SSO (p. 66)- Cómo crear y configurar
perfiles que usenAWS SSOpara la autenticación y asignación a un rol de IAM paraAWSpermisos.
• Uso de un perfil con nombre habilitado de AWS SSO (p. 69): cómo iniciar sesión en AWS SSO desde
la CLI y utilizar las credenciales temporales de AWS proporcionadas para ejecutar comandos de la AWS
CLI.

Configuración de un perfil con nombre para que utilice


AWS SSO
Puede configurar una o más de suAWS CLI Perfiles con nombre (p. 64)para usar un rol deAWS
SSOPuede crear y configurar varios perfiles y configurar cada uno para que utilice unAWS SSOportal de
usuario o función definida por SSO.

Puede configurar el perfil de las siguientes maneras:

• Automáticamente (p. 66), con el comando aws configure sso


• Manualmente (p. 68), editando el archivo .aws/config que guarda los perfiles con nombre.

Configuración automática
Puede añadir a la AWS CLI un perfil habilitado para AWS SSO. Para ello, ejecute el siguiente comando y
proporcione la URL de inicio de AWS SSO y la región de AWS en que se aloja el directorio de AWS SSO.

$ aws configure sso


SSO start URL [None]: [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]:us-east-1

La AWS CLI intenta abrir su navegador predeterminado e iniciar el proceso de inicio de sesión de su
cuenta de AWS SSO.

66
AWS Command Line Interface Guía del usuario
Configuración de un perfil con
nombre para que utilice AWS SSO

SSO authorization page has automatically been opened in your default browser.
Follow the instructions in the browser to complete this authorization request.

Si la AWS CLI no puede abrir el navegador, aparece el siguiente mensaje con instrucciones sobre cómo
iniciar manualmente el proceso de inicio de sesión.

Using a browser, open the following URL:

https://my-sso-portal.awsapps.com/verify

and enter the following code:


QCFK-N451

AWS SSO utiliza el código para asociar la sesión de AWS SSO con la sesión de la AWS CLI actual. La
página del navegador de AWS SSO le pide que inicie sesión con las credenciales de su cuenta de AWS
SSO. De este modo, la AWS CLI (a través de los permisos asociados a su cuenta de AWS SSO) puede
recuperar y mostrar las cuentas y roles de AWS que tiene permiso para usar con AWS SSO.

A continuación, la AWS CLI muestra las cuentas de AWS disponibles para su uso. Si solo tiene
autorización para usar una única cuenta, la AWS CLI selecciona esa cuenta automáticamente y omite el
mensaje. Las cuentas de AWS que están disponibles para su uso están determinadas por su configuración
de usuario en AWS SSO.

There are 2 AWS accounts available to you.


> DeveloperAccount, [email protected] (123456789011)
ProductionAccount, [email protected] (123456789022)

Utilice las teclas de flecha para seleccionar la cuenta que desea utilizar con este perfil. El carácter «>» de
la izquierda apunta a la opción actual. Pulse INTRO para realizar la selección.

A continuación, laAWS CLIconfirma la elección de cuenta y muestra los roles de IAM que están
disponibles en la cuenta seleccionada. Si la cuenta seleccionada solo muestra un rol, la AWS CLI
selecciona automáticamente ese rol y omite el mensaje. Los roles que están disponibles para su uso están
determinados por su configuración de usuario en AWS SSO.

Using the account ID 123456789011


There are 2 roles available to you.
> ReadOnly
FullAccess

Al igual que antes, utilice las teclas de flecha para seleccionar el rol de IAM que desea utilizar con este
perfil. El carácter «>» de la izquierda apunta a la opción actual. Pulse <INTRO> para realizar la selección.

La AWS CLI confirma su selección de rol.

Using the role name "ReadOnly"

Ahora puede finalizar la configuración de su perfil, especificando la opciónFormato de salida


predeterminado (p. 58), elpredeterminadaAWSRegión (p. 59)Para enviar comandos a, y
proporcionar unNombre del perfil (p. 50)para que pueda hacer referencia a este perfil de entre todos los
definidos en el equipo local. En el ejemplo siguiente, el usuario introduce una región predeterminada, un
formato de salida predeterminado y el nombre del perfil. También puede pulsar <ENTER> para seleccionar
los valores predeterminados que se muestran entre corchetes. El nombre del perfil sugerido es el número
de ID de cuenta seguido de un guion bajo seguido del nombre del rol.

CLI default client Region [None]: us-west-2<ENTER>


CLI default output format [None]: json<ENTER>

67
AWS Command Line Interface Guía del usuario
Configuración de un perfil con
nombre para que utilice AWS SSO

CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>

Note

Si especifica default como nombre de perfil, este perfil será el que se utilice cada vez que se
ejecute un comando de la AWS CLI y no se especifique ningún nombre de perfil.

Un mensaje final describe la configuración del perfil completada.

Para utilizar este perfil, especifique el nombre del perfil mediante —profile, como se muestra:

aws s3 ls --profile my-dev-profile

Las entradas de ejemplo anteriores darían como resultado un perfil con nombre alojado en ~/.aws/
config parecido al del siguiente ejemplo:

[profile my-dev-profile]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json

En este punto, tiene un perfil que puede utilizar para solicitar credenciales temporales. Debe utilizar el
comando aws sso login para solicitar y recuperar realmente las credenciales temporales necesarias
para ejecutar comandos. Para obtener instrucciones, consulte Uso de un perfil con nombre habilitado de
AWS SSO (p. 69).
Note

También puede ejecutar un comando de la AWS CLI utilizando el perfil especificado. Si en estos
momentos no ha iniciado sesión en el portal de AWS SSO, este comienza automáticamente
el proceso de inicio de sesión, como si hubiera ejecutado manualmente el comando aws sso
login.

Configuración manual
Para agregar manualmente compatibilidad con AWS SSO a un perfil con nombre, debe agregar las
siguientes claves y valores a la definición del perfil en el archivo ~/.aws/config (Linux o macOS) o
%USERPROFILE%/.aws/config (Windows).

sso_start_url

La dirección URL que apunta al portal de usuarios de AWS SSO de la organización.

sso_start_url = https://my-sso-portal.awsapps.com/start

sso_region

LaAWSRegión que contiene elAWS SSOhost del portal Esto es independiente (y puede ser una región
diferente) del parámetro de region de la CLI predeterminado.

sso_region = us-west-2

sso_account_id

LaAWSID de cuenta de que contiene el rol de IAM que desea utilizar con este perfil.

68
AWS Command Line Interface Guía del usuario
Uso de un perfil con nombre habilitado de AWS SSO

sso_account_id = 123456789011

sso_role_name

El nombre de la función de IAM que define los permisos que tiene el usuario cuando utiliza este perfil.

sso_role_name = ReadAccess

La presencia de estas claves identifica este perfil como uno que utiliza AWS SSO para autenticar al
usuario.

También puede incluir otras claves y valores válidos en el archivo .aws/config, como region, output
o s3. Sin embargo, no puede incluir ningún valor relacionado con credenciales, como role_arn (p. 59) o
aws_secret_access_key (p. 54). Si lo hace, la AWS CLI produce un error.

Por lo tanto, un perfil típico de AWS SSO en .aws/config podría ser similar al del siguiente ejemplo:

[profile my-dev-profile]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json

En este punto, tiene un perfil que puede utilizar para solicitar credenciales temporales. Sin embargo,
aún no puede ejecutar un comando de servicio de la AWS CLI. En primer lugar, debe utilizar el comando
aws sso login para solicitar y recuperar realmente las credenciales temporales necesarias para
ejecutar comandos. Para obtener instrucciones, consulte la siguiente sección Uso de un perfil con nombre
habilitado de AWS SSO (p. 69).

Uso de un perfil con nombre habilitado de AWS SSO


En esta sección, se describe cómo se utiliza el perfil de AWS SSO que creó en la sección anterior.

Inicio de sesión y obtención de credenciales temporales


Después de configurar de forma automática o manual un perfil con nombre, puede invocarlo para solicitar
credenciales temporales de AWS. Para poder ejecutar un comando de servicio de la AWS CLI, debe
recuperar y almacenar en caché un conjunto de credenciales temporales. Para obtener estas credenciales
temporales, ejecute el siguiente comando.

$ aws sso login --profile my-dev-profile

La AWS CLI abre el navegador predeterminado y verifica su inicio de sesión de AWS SSO.

SSO authorization page has automatically been opened in your default browser.
Follow the instructions in the browser to complete this authorization request.
Successully logged into Start URL: https://my-sso-portal.awsapps.com/start

Si no hay ninguna sesión iniciada en su cuenta de AWS SSO en esos momentos, deberá proporcionar el
nombre de usuario y la contraseña de AWS SSO.

Si la AWS CLI no puede abrir el navegador, se le pedirá que lo abra usted y que introduzca el código
especificado.

69
AWS Command Line Interface Guía del usuario
Uso de un perfil con nombre habilitado de AWS SSO

$ aws sso login --profile my-dev-profile


Using a browser, open the following URL:

https://my-sso-portal.awsapps.com/verify

and enter the following code:


QCFK-N451

La AWS CLI abre el navegador predeterminado (o usted abre manualmente el navegador de su elección)
en la página especificada e introduce el código proporcionado. A continuación, la página web le pedirá sus
credenciales de AWS SSO.

Las credenciales de sesión de AWS SSO se almacenan en caché y contienen una marca temporal de
vencimiento. Cuando las credenciales caduquen, la AWS CLI solicitará que inicie sesión de nuevo en AWS
SSO.

Si las recetasAWS SSOson válidas, las credencialesAWS CLIlos utiliza para recuperar de forma
seguraAWScredenciales temporales para el rol de IAM especificado en el perfil.

Welcome, you have successfully signed-in to the AWS-CLI.

Ejecución de un comando con su perfil habilitado de AWS SSO


Puede utilizar estas credenciales temporales para invocar un comando de la AWS CLI con el perfil con
nombre asociado. En el ejemplo siguiente se muestra que el comando se ejecutó bajo un rol asumido que
forma parte de la cuenta especificada.

$ aws sts get-caller-identity --profile my-dev-profile


{
"UserId": "AROA12345678901234567:[email protected]",
"Account": "123456789011",
"Arn": "arn:aws:sts::123456789011:assumed-role/AWSPeregrine_readOnly_12321abc454d123/
[email protected]"
}

Siempre que haya iniciado sesión en AWS SSO y las credenciales almacenadas en caché no hayan
caducado, la AWS CLI renueva automáticamente las credenciales temporales caducadas de AWS cuando
sea necesario. Sin embargo, si sus credenciales de AWS SSO caducan, debe renovarlas explícitamente
iniciando sesión de nuevo en la cuenta de AWS SSO.

$ aws s3 ls --profile my-sso-profile


Your short-term credentials have expired. Please sign-in to renew your credentials
SSO authorization page has automatically been opened in your default browser.
Follow the instructions in the browser to complete this authorization request.

Puede crear varios perfiles con nombre habilitados de AWS SSO que apunten a una cuenta o rol de AWS
diferente. También puede utilizar el comando aws sso login en más de un perfil a la vez. Si alguno de
ellos comparte la misma cuenta de usuario de AWS SSO, debe iniciar sesión en esa cuenta de usuario de
AWS SSO una sola vez y así todos compartirán un único conjunto de credenciales de AWS SSO que se
almacenarán en la caché.

# The following command retrieves temporary credentials for the AWS account and role
# specified in one named profile. If you are not yet signed in to AWS SSO or your
# cached credentials have expired, it opens your browser and prompts you for your
# AWS SSO user name and password. It then retrieves AWS temporary credentials for
# the IAM role associated with this profile.
$ aws sso login --profile my-first-sso-profile

70
AWS Command Line Interface Guía del usuario
Variables de entorno

# The next command retrieves a different set of temporary credentials for the AWS
# account and role specified in the second named profile. It does not overwrite or
# in any way compromise the first profile's credentials. If this profile specifies the
# same AWS SSO portal, then it uses the SSO credentials that you retrieved in the
# previous command. The AWS CLI then retrieves AWS temporary credentials for the
# IAM role associated with the second profile. You don't have to sign in to
# AWS SSO again.
$ aws sso login --profile my-second-sso-profile

# The following command lists the Amazon EC2 instances accessible to the role
# identified in the first profile.
$ aws ec2 describe-instances --profile my-first-sso-profile

# The following command lists the Amazon EC2 instances accessible to the role
# identified in the second profile.
$ aws ec2 describe-instances --profile my-second-sso-profile

Cierre de sesiones de AWS SSO


Cuando haya terminado de usar sus perfiles habilitados de AWS SSO, puede elegir no hacer nada
y dejar que caduquen las credenciales temporales de AWS y las credenciales de AWS SSO. Sin
embargo, también puede optar por ejecutar el siguiente comando para eliminar inmediatamente todas
las credenciales almacenadas en la carpeta de la caché de credenciales de SSO, así como todas
las credenciales temporales de AWS basadas en las credenciales de AWS SSO. Esto hará que esas
credenciales no estén disponibles para ser utilizadas en un comando futuro.

$ aws sso logout


Successfully signed out of all SSO profiles.

Si más adelante desea ejecutar comandos con uno de sus perfiles habilitados de AWS SSO, deberá volver
a ejecutar el comando aws sso login (consulte la sección anterior) y especificar el perfil que desea
utilizar.

Variables de entorno para configurar la AWS CLI


Las variables de entorno constituyen otro mecanismo para especificar opciones de configuración y
credenciales, y pueden ser útiles para crear scripts o configurar temporalmente un perfil con nombre como
la opción predeterminada.
Note

No se puede especificar la autenticación de AWS Single Sign-On (AWS SSO) mediante variables
de entorno. En su lugar, debe utilizar un perfil con nombre en el archivo de configuración
compartido .aws/config. Para obtener más información, consulte Configuración de la AWS CLI
para usar AWS Single Sign-On (p. 66).

Prioridad de las opciones

• Si especifica una opción mediante una de las variables de entorno que se describen en este tema, se
invalidará cualquier valor carga desde un perfil en el archivo de configuración.
• Si especifica una opción mediante un parámetro en el cuadro de diálogoAWS CLI, se invalidará
cualquier valor de la variable de entorno correspondiente o un perfil en el archivo de configuración.

Para obtener más información acerca de la prioridad y de cómo la AWS CLI determina la credenciales que
debe utilizar, consulte Ajustes de configuración y precedencia (p. 50).

Temas

71
AWS Command Line Interface Guía del usuario
Cómo configurar las variables de entorno

• Cómo configurar las variables de entorno (p. 72)


• Variables de entorno que admite la AWS CLI (p. 72)

Cómo configurar las variables de entorno


En los siguientes ejemplos se muestra cómo se pueden configurar las variables de entorno para el usuario
predeterminado.

Linux or macOS

$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_DEFAULT_REGION=us-west-2

La configuración de la variable de entorno cambia el valor usado hasta el finalice la sesión del shell
o hasta que otorgue a la variable un valor diferente. Puede hacer que las variables persistan en
sesiones futuras configurándolas en el script de inicio del shell.
Windows Command Prompt

C:\> setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE


C:\> setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> setx AWS_DEFAULT_REGION us-west-2

El uso de set para configurar una variable de entorno cambia el valor usado hasta que finalice la
sesión de símbolo de sistema actual o hasta que otorgue a la variable un valor diferente. El uso
de setx para establecer una variable de entorno cambia el valor usado en la sesión de símbolo
del sistema actual y en todas las sesiones de símbolo del sistema que cree después de ejecutar
el comando. La operación no afecta a otros comandos del shell que ya se están ejecutando en el
momento de ejecutar el comando.
PowerShell

PS C:\> $Env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
PS C:\> $Env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
PS C:\> $Env:AWS_DEFAULT_REGION="us-west-2"

Si establece una variable de entorno en el símbolo del sistema de PowerShell, tal y como se muestra
en los ejemplos anteriores, el valor se guarda únicamente durante la sesión actual. Para que el valor
de la variable de entorno persista en todas las sesiones de PowerShell y del símbolo del sistema,
guárdelo mediante la aplicación Sistema en el Panel de control. También puede definir la variable
para todas las sesiones de PowerShell futuras añadiéndolo a su perfil de PowerShell. Consulte la
documentación de PowerShell para obtener más información sobre el almacenamiento de variables de
entorno o su persistencia entre sesiones.

Variables de entorno que admite la AWS CLI


La AWS CLI admite las siguientes variables de entorno.

AWS_ACCESS_KEY_ID

Especifica unAWSLa clave de acceso de asociada a un usuario o un rol de IAM.

Si se define, esta variable de entorno anula el valor de la configuración del perfil


aws_access_key_id. No se puede especificar el ID de clave de acceso mediante una opción de
línea de comandos.

72
AWS Command Line Interface Guía del usuario
Variables de entorno que admite la AWS CLI

AWS_CA_BUNDLE

Especifica la ruta a un paquete de certificados que desea utilizar para la validación de certificados
HTTPS.

Si se define, esta variable de entorno anula el valor de la configuración del perfil ca_bundle. Puede
anular esta variable de entorno mediante el parámetro de la línea de comandos --ca-bundle.
AWS_CLI_AUTO_PROMPT
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible


si ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2,
consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Habilita el mensaje automático para elAWS CLIVersión 2. Hay dos configuraciones que se pueden
usar:
• onutiliza el modo de mensaje automático completo cada vez que intenta ejecutar unawsComando
de. Esto incluye presionarESCRIBAdespués de un comando completo o un comando incompleto.

aws_cli_auto_prompt=on

• on-partialutiliza el modo de petición automática parcial. Si un comando está incompleto o no se


puede ejecutar debido a errores de validación del lado del cliente, se utiliza el símbolo automático.
Este modo es especialmente útil si tiene scripts preexistentes, runbooks, o sólo desea que se
le pregunte automáticamente para los comandos con los que no está familiarizado en lugar de
solicitarse en cada comando.

aws_cli_auto_prompt=on-partial

Si se define, esta variable de entorno anula el valor decli_auto_prompt (p. 55)Configuración


del perfil. Puede anular esta variable de entorno mediante la--cli-auto-prompt (p. 76)y--
no-cli-auto-prompt (p. 77)Parámetros de línea de comandos.

Para obtener información sobre lasAWS CLIfunción de petición automática de la versión 2,


consulteCon laAWS CLIsolicitarle comandos (p. 120).
AWS_CLI_FILE_ENCODING

AWS CLIVersión 2. Especifica la codificación utilizada para los archivos de texto. De forma
predeterminada, la codificación coincide con su configuración regional. Para establecer
que una codificación distinta de la configuración regional, utilice la variable de entorno
aws_cli_file_encoding. Por ejemplo, si utiliza Windows con codificación predeterminada
CP1252, la configuración de aws_cli_file_encoding=UTF-8 establece la CLI para que abra
archivos de texto mediante UTF-8.
AWS_CONFIG_FILE

Especifica la ubicación del archivo que la AWS CLI utiliza para almacenar perfiles de configuración. La
ruta predeterminada es ~/.aws/config.

No puede especificar este valor en una configuración de perfil con nombre o mediante un parámetro
de la línea de comandos.
AWS_DEFAULT_OUTPUT (p. 49)

Especifica el formato de salida (p. 123) que se va a utilizar.

Si se define, esta variable de entorno anula el valor de la configuración del perfil output. Puede
anular esta variable de entorno mediante el parámetro de la línea de comandos --output.

73
AWS Command Line Interface Guía del usuario
Variables de entorno que admite la AWS CLI

AWS_DEFAULT_REGION (p. 49)

Especifica la región de AWS a la que se va a enviar la solicitud.

Si se define, esta variable de entorno anula el valor de la configuración del perfil region. Puede
anular esta variable de entorno mediante el parámetro de la línea de comandos --region.
AWS_EC2_METADATA_DISABLED

Deshabilita el uso del servicio de metadatos de instancia de Amazon EC2 (IMDS).

Si se establece en true, las credenciales de usuario o la configuración (como la región) no se solicitan


desde IMDS.
AWS_MAX_ATTEMPTS (p. 58)

Especifica un valor máximo de intentos de reintento deAWS CLIutiliza el controlador de retry, donde
la llamada inicial cuenta para el valor que proporciona. Para obtener más información acerca de los
reintentos, consulte AWS CLIretries (p. 82).

Si se define, esta variable de entorno anula el valor de la configuración de perfilesmax_attempts.


AWS_PAGER (p. 56)

Especifica el programa de paginación utilizado para la salida. De forma predeterminada,AWS CLILa


versión 2 devuelve todas las salidas a través del paginador predeterminado del sistema operativo.

Para deshabilitar todo el uso de un programa de paginación externo, establezca la variable en una
cadena vacía.

Si se define, esta variable de entorno anula el valor de la configuración del perfil cli_pager.
AWS_PROFILE (p. 64)

Especifica el nombre delAWS CLIcon las credenciales y las opciones que se van a utilizar. Puede ser
el nombre de un perfil almacenado en un archivo credentials o config, o el valor default para
utilizar el perfil predeterminado.

Si se define, esta variable de entorno anula el comportamiento de utilizar el perfil llamado [default]
en el archivo de configuración. Puede anular esta variable de entorno mediante el parámetro de la
línea de comandos --profile.
AWS_RETRY_MODE (p. 59)

Especifica qué modo de volver a intentarloAWS CLIUsos. Hay tres modos de reintento disponibles:
heredado (predeterminado), estándar y adaptativo. Para obtener más información acerca de los
reintentos, consulte AWS CLIretries (p. 82).

Si se define, esta variable de entorno anula el valor de la configuración de perfilesretry_mode.


AWS_ROLE_SESSION_NAME (p. 94)

Especifica un nombre para asociarlo a la sesión de rol. Este valor aparece en los registros de
CloudTrail para los comandos realizados por el usuario de este perfil.

Si se define, esta variable de entorno anula el valor de la configuración del perfil


role_session_name. No se puede especificar un nombre de sesión de rol como parámetro de línea
de comandos.
AWS_SECRET_ACCESS_KEY

Especifica la clave secreta asociada a la clave de acceso. Se trata básicamente de la "contraseña" de


la clave de acceso.

74
AWS Command Line Interface Guía del usuario
Opciones de línea de comandos

Si se define, esta variable de entorno anula el valor de la configuración del perfil


aws_secret_access_key. No se puede especificar el ID de clave de acceso secreta como una
opción de línea de comandos.
AWS_SESSION_TOKEN

Especifica el valor del token de sesión que se requiere si utiliza credenciales de seguridad temporales
que ha recuperado directamente de las operaciones de AWS STS. Para obtener más información,
consulte laSección de salida del comando assume-roleen laAWS CLIReferencia de los comandos de
la.

Si se define, esta variable de entorno anula el valor de la configuración del perfil


aws_session_token. No se puede especificar un token de sesión como una opción de línea de
comandos.
AWS_SHARED_CREDENTIALS_FILE

Especifica la ubicación del archivo que la AWS CLI utiliza para almacenar claves de acceso. La ruta
predeterminada es ~/.aws/credentials.

No puede especificar este valor en una configuración de perfil con nombre o mediante un parámetro
de la línea de comandos.
AWS_STS_REGIONAL_ENDPOINTS (p. 60)

Especifica cómo la AWS CLI determina el punto de enlace del servicio de AWS que el cliente de la
AWS CLI utiliza para comunicarse con AWS Security Token Service (AWS STS).
• El valor predeterminado deAWS CLILa versión 1 eslegacy.
• El valor predeterminado deAWS CLILa versión 2 esregional.

Puede especificar uno de estos dos valores:


• legacy— Utiliza el punto final STS global,sts.amazonaws.com, para lo
siguienteAWSRegiones:ap-northeast-1,ap-south-1,ap-southeast-1,ap-
southeast-2,aws-global,ca-central-1,eu-central-1,eu-north-1,eu-west-1,eu-
west-2,eu-west-3,sa-east-1,us-east-1,us-east-2,us-west-1, yus-west-2. Todas las
demás regiones utilizan automáticamente su punto de enlace regional respectivo.
• regional— ElAWS CLIusa siempre laAWS STSpara la región configurada actualmente. Por
ejemplo, si el cliente está configurado para usar us-west-2, todas las llamadas a AWS STS se
hacen al punto de enlace regional sts.us-west-2.amazonaws.com en vez de al punto de enlace
global sts.amazonaws.com. Para enviar una solicitud al punto de enlace global mientras esta
configuración está habilitada, puede establecer la región en aws-global.

Opciones de línea de comandos


En el navegadorAWS CLIPuede utilizar las siguientes opciones de línea de comandos para anular
los ajustes de configuración predeterminados, cualquier configuración de perfil correspondiente o la
variable de entorno de ese único comando. No se pueden utilizar las opciones de línea de comandos
para especificar credenciales directamente, aunque es posible especificar qué perfil se debe utilizar.
Cada opción toma un argumento que requiere un espacio o un signo igual (=) que separa el argumento
del nombre de la opción. Si el valor del argumento es una cadena que contiene un espacio, debe utilizar
comillas en torno al argumento.

Los tipos de argumento (por ejemplo, cadena, booleano, etcétera) de cada opción de línea de comandos
se describen en detalle en Especificación de valores de parámetros para la AWS CLI (p. 103).

--ca-bundle <cadena>

Especifica el paquete de certificados de la entidad emisora de certificados (CA) que se va a utilizar


para verificar los certificados SSL.

75
AWS Command Line Interface Guía del usuario
Opciones de línea de comandos

—cli-auto-prompt
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible


si ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2,
consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Habilita el modo de solicitud automática para un solo comando. Como muestran los ejemplos
siguientes, puede especificarlo en cualquier momento.

$ aws --cli-auto-prompt
$ aws dynamodb --cli-auto-prompt
$ aws dynamodb describe-table --cli-auto-prompt

Esta opción anula la opciónaws_cli_auto_prompt (p. 73)y la variable de


entornocli_auto_prompt (p. 55)Configuración de perfil.

Para obtener información sobre lasAWS CLIfunción de petición automática de la versión 2,


consulteCon laAWS CLIsolicitarle comandos (p. 120).
--cli-connect-timeout <número entero>

Especifica el máximo tiempo de conexión del conector en segundos. Si el valor se establece en cero
(0), la conexión del socket espera de forma indefinida (bloqueo) y no se agota el tiempo de espera.
--cli-read-timeout <número entero>

Especifica el máximo tiempo de lectura del conector en segundos. Si el valor se establece en cero (0),
la lectura del socket espera de forma indefinida (bloqueo) y no se agota el tiempo de espera.
--color <cadena>

Especifica la compatibilidad con el color de salida. Los valores válidos son on, off y auto. El valor
predeterminado es auto.
--debug

Modificador booleano que permite registrar la depuración. LaAWS CLIde forma predeterminada
proporciona información limpia con respecto a los éxitos o fallas con respecto a los resultados de los
comandos en la salida del comando. La--debugproporciona los registros completos de Python. Esto
incluyestderrPara obtener información de diagnóstico sobre el funcionamiento del comando, que
puede ser útil para solucionar problemas por qué un comando proporciona resultados inesperados.
Para ver fácilmente los registros de depuración, sugerimos enviar los registros a un archivo para
buscar más fácilmente la información. Para ello, puede realizar una de las siguientes opciones.

Para enviarSoloelstderrinformación de diagnóstico, anexar2> debug.txtwheredebug.txtes el


nombre que desea usar para su archivo de depuración:

$ aws servicename commandname options --debug 2> debug.txt

Para enviarBOTHLa salida ystderrinformación de diagnóstico, anexar&>


debug.txtwheredebug.txtes el nombre que desea usar para su archivo de depuración:

$ aws servicename commandname options --debug &> debug.txt

--endpoint-url <cadena>

Especifica la URL a la que se va a enviar la solicitud. En la mayoría de comandos, la AWS CLI


determina automáticamente la URL en función del servicio seleccionado y la región de AWS
especificada. Sin embargo, algunos comandos requieren que especifique una dirección URL

76
AWS Command Line Interface Guía del usuario
Opciones de línea de comandos

específica de la cuenta. También puede configurar algunos servicios de AWS para alojar un punto de
enlace directamente dentro de la VPC privada, que entonces debería especificarse.

Para obtener una lista de los puntos de enlace de servicio estándar disponibles en cada región,
consulteAWSRegiones y puntos de enlace deen laReferencia general de Amazon Web Services.
—no-cli-auto-prompt
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible


si ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2,
consulte Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Deshabilita el modo de solicitud automática para un solo comando.

$ aws dynamodb describe-table --table-name Table1 --no-cli-auto-prompt

Esta opción anula la opciónaws_cli_auto_prompt (p. 73)y la variable de


entornocli_auto_prompt (p. 55)Configuración de perfil.

Para obtener información sobre lasAWS CLIfunción de petición automática de la versión 2,


consulteCon laAWS CLIsolicitarle comandos (p. 120).
—no-cli-pager

Modificador booleano que desactiva el uso de un localizador para la salida del comando.
--no-paginate

Un conmutador booleano que desactiva las múltiples llamadas deAWS CLIhace para recibir todos
los resultados de comandos que crea la paginación de la salida. Esto significa que sólo se muestra la
primera página de su salida.
--no-sign-request

Modificador booleano que deshabilita la firma de las solicitudes HTTP para el punto de enlace de
servicio de AWS. Impide que se carguen las credenciales.
--output <cadena>

Especifica el formato de salida que se va a utilizar con este comando. Puede especificar cualquiera de
los siguientes valores:
• json (p. 125)— La salida se formatea como unaJSONCadena.
• yaml (p. 125)— La salida se formatea como unaYAMLCadena. (está disponible en.AWS
CLIÚnicamente la versión 2.
• yaml-stream (p. 126)— La salida es transmitida y formateada comoYAMLCadena. La
transmisión permite un manejo más rápido de tipos de datos de gran tamaño. (está disponible
en.AWS CLIÚnicamente la versión 2.
• text (p. 127)— La salida tiene el formato de varias líneas de valores de cadena separados por
tabuladores. Esto puede ser útil para pasar la salida a un procesador de texto, comogrep,sed, o
bienawk.
• table (p. 129)— La salida se formatea como una tabla con los caracteres +|- para los bordes
de celda. Normalmente, la información se presenta en un formato que es más fácil de leer que los
demás formatos, pero que no es útil para programar.
--profile <cadena>

Especifica el perfil con nombre (p. 64) que se va a utilizar con este comando. Para configurar
perfiles con nombre adicionales, puede utilizar el comando aws configure con la opción --
profile.

77
AWS Command Line Interface Guía del usuario
Finalización de comandos

$ aws configure --profile <profilename>

--query <cadena>

Especifica una consulta de JMESPath que se usa para filtrar los datos de la respuesta. Para obtener
más información, consulte FiltradoAWS CLIsalida (p. 134).
--region <cadena>

Especifica a qué región de AWS se va a enviar la solicitud de AWS de este comando. Para obtener
una lista de todas las regiones que se pueden especificar, consulteAWSRegiones y puntos de enlace
deen laReferencia general de Amazon Web Services.
--version

Modificador booleano que muestra la versión actual del programa de la AWS CLI que se está
ejecutando.

Entre los usos habituales de las opciones de la línea de comandos se incluyen la comprobación de sus
recursos en varias regiones de AWS y el cambio del formato de salida para obtener una mayor legibilidad o
facilidad de uso al generar scripts. Por ejemplo, si no está seguro de en qué región se ejecuta su instancia,
puede ejecutar el comando describe-instances en cada región hasta que la encuentre, del modo siguiente.

$ aws ec2 describe-instances --output table --region us-east-1


-------------------
|DescribeInstances|
+-----------------+
$ aws ec2 describe-instances --output table --region us-west-1
-------------------
|DescribeInstances|
+-----------------+
$ aws ec2 describe-instances --output table --region us-west-2
------------------------------------------------------------------------------
| DescribeInstances |
+----------------------------------------------------------------------------+
|| Reservations ||
|+-------------------------------------+------------------------------------+|
|| OwnerId | 012345678901 ||
|| ReservationId | r-abcdefgh ||
|+-------------------------------------+------------------------------------+|
||| Instances |||
||+------------------------+-----------------------------------------------+||
||| AmiLaunchIndex | 0 |||
||| Architecture | x86_64 |||
...

Los tipos de argumento (por ejemplo, cadena, booleano, etcétera) de cada opción de línea de comandos
se describen en detalle en Especificación de valores de parámetros para la AWS CLI (p. 103).

Finalización de comandos
LaAWS Command Line Interface(AWS CLI) incluye una característica de finalización de comandos
compatible con bash-que le permite utilizar laTabpara completar un comando introducido parcialmente. En
la mayoría de los sistemas, debe configurarlo manualmente.

Para obtener información sobre lasAWS CLIversión 2 función de petición automática en su lugar,
consulteCon laAWS CLIsolicitarle comandos (p. 120).

78
AWS Command Line Interface Guía del usuario
Cómo funciona

Temas
• Cómo funciona (p. 79)
• Configuración de la finalización de comandos en Linux o macOS (p. 79)
• Configuración de la finalización de comandos en Windows (p. 82)
• Verifique la finalización de comandos (p. 82)

Cómo funciona
Cuando se introduce parcialmente un comando, parámetro u opción, la función de finalización de
comandos completa automáticamente el comando o muestra una lista sugerida de comandos. Para
solicitar que se complete el comando, escriba parcialmente un comando y pulse Tab (Tabulador).

En los ejemplos siguientes se muestran diferentes formas de utilizar la finalización de comandos:

• Introduzca parcialmente un comando y pulse Tab (Tabulador) para mostrar una lista sugerida de
comandos.

$ aws dynamodb dTAB


delete-backup describe-global-table
delete-item describe-global-table-settings
delete-table describe-limits
describe-backup describe-table
describe-continuous-backups describe-table-replica-auto-scaling
describe-contributor-insights describe-time-to-live
describe-endpoints

• Introduzca parcialmente un parámetro y pulse Tab (Tabulador) para mostrar una lista sugerida de
parámetros.

$ aws dynamodb delete-table --TAB


--ca-bundle --endpoint-url --profile
--cli-connect-timeout --generate-cli-skeleton --query
--cli-input-json --no-paginate --region
--cli-read-timeout --no-sign-request --table-name
--color --no-verify-ssl --version
--debug --output

• Introduzca un parámetro y pulse Tab (Tabulador) para mostrar una lista sugerida de valores de recursos.
Esta característica solo está disponible en laAWS CLIVersión 2.

$ aws dynamodb db delete-table --table-name TAB


Table 1 Table 2 Table 3

Configuración de la finalización de comandos en Linux


o macOS
Para configurar la finalización de comandos en Linux o macOS, es necesario conocer el nombre del shell
que se está utilizando y la ubicación delaws_completerscript.
Note

La finalización de comandos se configura y habilita automáticamente de forma predeterminada en


las instancias de Amazon EC2 que ejecutan Amazon Linux.

79
AWS Command Line Interface Guía del usuario
Configuración de la finalización
de comandos en Linux o macOS

Temas
• Confirme que la carpeta del finalizador está en su ruta (p. 80)
• Habilitar la finalización de comandos (p. 81)

Confirme que la carpeta del finalizador está en su ruta


Para elAWSpara que funcione con éxito, elaws_completernecesita estar en el camino de tu caparazón.
Lawhichpuede verificar si el completador está en su ruta.

$ which aws_completer
/usr/local/bin/aws_completer

Si el comando qué no puede encontrar el completador, siga los pasos siguientes para agregar la carpeta
del completador a su ruta de acceso.

Paso 1: Ubicación de AWS Completer


La ubicación de AWS Completer puede variar en función del método de instalación utilizado.

• Administrador de paquetes- Programas comopip,yum,brew, yapt-getnormalmente instale elAWSEn


una ubicación de ruta estándar (o un symlink al mismo).
• Si usastepip WIFTel--user, la ruta predeterminada es/usr/local/bin/aws_completer.
• Si usastepip porel--userLa ruta predeterminada es/home/username/.local/bin/
aws_completer.
• Instalador agregado- Si utilizó el instalador incluido, la ruta predeterminada es/usr/local/bin/
aws_completer.

Si no funciona nada más, puede utilizar lafindpara buscar en su sistema de archivos elAWSCompleter.

$ find / -name aws_completer


/usr/local/bin/aws_completer

Paso 2: Identificación de su shell


Para identificar qué shell está utilizando, puede usar uno de los siguientes comandos.

• echo $SHELL: muestra el nombre de archivo de programa del shell. Normalmente coincide con el
nombre del shell en uso, a menos que haya iniciado otro shell tras iniciar sesión.

$ echo $SHELL
/bin/bash

• ps: muestra los procesos en ejecución para el usuario actual. Uno de ellos es el shell.

$ ps
PID TTY TIME CMD
2148 pts/1 00:00:00 bash
8756 pts/1 00:00:00 ps

Paso 3: Añada el finalizador a su ruta


1. Busque el script de perfil de su shell en su carpeta de usuario.

80
AWS Command Line Interface Guía del usuario
Configuración de la finalización
de comandos en Linux o macOS

$ ls -a ~/
. .. .bash_logout .bash_profile .bashrc Desktop Documents Downloads

• Bash–.bash_profile,.profile, o bien.bash_login
• Zsh–.zshrc
• Tcsh–.tcshrc,.cshrc, o bien.login
2. Añada un comando de exportación al final del script de su perfil igual que en el siguiente ejemplo.
Reemplace /usr/local/bin/ por el nombre de la carpeta que ha creado en la sección anterior.

export PATH=/usr/local/bin/:$PATH

3. Vuelva a cargar el perfil en la sesión actual para que esos cambios surtan efecto. Reemplace
.bash_profile por el nombre del script de shell que ha creado en la primera sección.

$ source ~/.bash_profile

Habilitar la finalización de comandos


Después de confirmar que el finalizador está en su ruta, habilite la finalización de comandos ejecutando el
comando apropiado para el shell que está utilizando. Puede añadir el comando al perfil del shell para que
se ejecute cada vez que abra un nuevo shell. En cada comando, sustituya la/usr/bin/Ruta de acceso
con la de su sistema enConfirme que la carpeta del finalizador está en su ruta (p. 80).

• bash— Utilice el comando integradocomplete.

$ complete -C '/usr/local/bin/aws_completer' aws

Añada el comando a ~/.bashrc para que se ejecute cada vez que abra un nuevo shell.
~/.bash_profile debe obtener ~/.bashrc para asegurarse de que el comando también se ejecuta
en los shells de inicio de sesión.
• zsh— Para ejecutar la finalización de comandos, es necesario ejecutarbashcompinitAñada la
siguiente línea de carga automática al final de la~/.zshrcscript de perfil.

$ autoload bashcompinit && bashcompinit


$ autoload -Uz compinit && compinit
$ compinit

Para habilitar la finalización de comandos, utilice el comando integrado complete.

$ complete -C '/usr/local/bin/aws_completer' aws

Añada el comando a ~/.zshrc para que se ejecute cada vez que abra un nuevo shell.
• tcsh— completo paratcshrequiere un tipo de palabra y un patrón para definir el comportamiento de
finalización.

> complete aws 'p/*/`aws_completer`/'

Añada el comando a ~/.tschrc para que se ejecute cada vez que abra un nuevo shell.

Después de habilitar la finalización del comando,Verifique la finalización de comandos (p. 82)funciona.

81
AWS Command Line Interface Guía del usuario
Configuración de la finalización de comandos en Windows

Configuración de la finalización de comandos en


Windows
Para habilitar la finalización de comandos para PowerShell en Windows, siga los pasos siguientes en
PowerShell.

1. Abra su$PROFILECon el siguiente comando.

PS C:\> Notepad $PROFILE

Si no dispone de una$PROFILE, cree un perfil de usuario mediante el siguiente comando.

PS C:\> if (!(Test-Path -Path $PROFILE ))


{ New-Item -Type File -Path $PROFILE -Force }

Para obtener más información sobre los perfiles de PowerShell, consulte.Cómo utilizar perfiles en ISE
de Windows PowerShellen elDocumentos de MicrosoftSitio web.
2. Para habilitar la finalización de comandos, agregue el siguiente bloque de código a su perfil, guarde y, a
continuación, cierre el archivo.

Register-ArgumentCompleter -Native -CommandName aws -ScriptBlock {


param($commandName, $wordToComplete, $cursorPosition)
$env:COMP_LINE=$wordToComplete
$env:COMP_POINT=$cursorPosition
aws_completer.exe | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_,
'ParameterValue', $_)
}
Remove-Item Env:\COMP_LINE
Remove-Item Env:\COMP_POINT
}

3. Verifique la finalización de comandos (p. 82)funciona.

Verifique la finalización de comandos


Después de habilitar la finalización de comandos, vuelva a cargar el shell, escriba un comando parcial y
pulseTabpara ver los comandos disponibles.

$ aws sTAB
s3 ses sqs sts swf
s3api sns storagegateway support

AWS CLIretries
En este tema se describe cómo se encuentra elAWS CLIpodría ver llamadas aAWSLos servicios de fallan
debido a problemas inesperados. Estos problemas pueden ocurrir en el lado del servidor o pueden fallar
debido a la limitación de velocidad de laAWSal que está intentando llamar. Este tipo de fallos generalmente
no requieren un manejo especial y la llamada se realiza de nuevo automáticamente, a menudo después
de un breve período de espera. LaAWS CLIproporciona muchas características para ayudar a reintentar
llamadas de cliente aAWScuando se experimentan este tipo de errores o excepciones.

82
AWS Command Line Interface Guía del usuario
Modos de reintentos disponibles

Temas
• Modos de reintentos disponibles (p. 83)
• Configuración de un modo de reintento (p. 84)
• Visualización de registros de reintentos (p. 85)

Modos de reintentos disponibles


LaAWS CLItiene varios modos para elegir dependiendo de su versión:
• Modo de reintento heredado (p. 83)
• Modo de reintentos estándar (p. 83)
• Modo de reintentos flexible (p. 84)

Modo de reintento heredado


El modo heredado es el modo predeterminado utilizado por la opciónAWS CLIVersión 1. El modo heredado
utiliza un controlador de reintentos más antiguo que tiene una funcionalidad limitada que incluye:

• Un valor predeterminado de 4 para los intentos máximos de reintento, lo que hace un total de 5 intentos
de llamada. Este valor se puede sobrescribir a través delmax_attemptsParámetro de configuración.
• Vuelva a intentar el siguiente número limitado de errores/excepciones:
• Errores generales de conexión:
• ConnectionError
• ConnectionClosedError
• ReadTimeoutError
• EndpointConnectionError
• Errores y excepciones de limitación/limitación del lado del servicio:
• Throttling
• ThrottlingException
• ThrottledException
• RequestThrottledException
• ProvisionedThroughputExceededException
• Reintente los intentos de varios códigos de estado HTTP, incluidos 429, 500, 502, 502, 503, 504 y 509.
• Cualquier intento de reintento incluirá un retroceso exponencial por un factor base de 2.

Modo de reintentos estándar


El modo estándar es un conjunto estándar de reglas de reintento en elAWSSDK con más funcionalidad
que heredados. Este modo es el predeterminado paraAWS CLIVersión 2. El modo estándar se creó para
elAWS CLIversión 2 y es retroportado aAWS CLIVersión 1. La funcionalidad del modo estándar incluye:

• Un valor predeterminado de 2 para los intentos máximos de reintento, haciendo un total de 3 intentos de
llamada. Este valor se puede sobrescribir a través delmax_attemptsParámetro de configuración.
• Vuelva a intentar la siguiente lista ampliada de errores/excepciones:
• Errores/excepciones transitorios
• RequestTimeout
• RequestTimeoutException
• PriorRequestNotComplete

83
AWS Command Line Interface Guía del usuario
Configuración de un modo de reintento

• ConnectionError
• HTTPClientError
• Errores y excepciones de limitación/limitación del lado del servicio:
• Throttling
• ThrottlingException
• ThrottledException
• RequestThrottledException
• TooManyRequestsException
• ProvisionedThroughputExceededException
• TransactionInProgressException
• RequestLimitExceeded
• BandwidthLimitExceeded
• LimitExceededException
• RequestThrottled
• SlowDown
• EC2ThrottledException

• Vuelva a intentar con códigos de error transitorios y no descriptivos. Específicamente, estos códigos de
estado HTTP: 500, 502, 503, 504.
• Cualquier intento de reintento incluirá un retroceso exponencial por un factor base de 2 para un tiempo
máximo de retroceso de 20 segundos.

Modo de reintentos flexible


Warning

El modo adaptativo es un modo experimental y está sujeto a cambios, tanto en las características
como en el comportamiento.

El modo de reintento adaptativo es un modo de reintento experimental que incluye todas las características
del modo estándar. Además de las características del modo estándar, el modo adaptativo también
introduce la limitación de la velocidad del lado del cliente mediante el uso de un depósito de token y
variables de límite de velocidad que se actualizan dinámicamente con cada intento de reintento. Este modo
ofrece flexibilidad en los reintentos del lado del cliente que se adapta a la respuesta de estado de error/
excepción desde unAWSServicio de.

Con cada nuevo intento de reintento, el modo adaptativo modifica las variables de límite de velocidad en
función del error, la excepción o el código de estado HTTP presentado en la respuesta delAWSServicio de.
Estas variables de límite de velocidad se utilizan para calcular una nueva tasa de llamada para el cliente.
Cada excepción/error o respuesta HTTP no exitosa (proporcionada en la lista anterior) de unAWSactualiza
las variables de límite de velocidad a medida que se producen reintentos hasta que se alcanza el éxito, se
agota el depósito de token o se alcanza el valor máximo de intentos configurado.

Configuración de un modo de reintento


LaAWS CLIincluye una variedad de configuraciones de reintento, así como métodos de configuración que
se deben tener en cuenta al crear el objeto cliente.

Métodos de configuración disponibles


En el navegadorAWS CLILos usuarios pueden configurar reintentos de las siguientes maneras:

84
AWS Command Line Interface Guía del usuario
Visualización de registros de reintentos

• Variables de entorno
• AWS CLIArchivo de configuración

Los usuarios pueden personalizar las opciones de reintentos siguientes:

• Modo de reintento: especifica qué modo de reintento se utiliza elAWS CLIUso de. Como se describió
anteriormente, hay tres modos de reintento disponibles: heredado, estándar y adaptativo. El valor
predeterminado deAWS CLILa versión 1 es heredada y paraAWS CLIversión 2 es estándar.
• Máx. intentos: especifica el valor de los intentos de reintento máximos deAWS CLIutiliza el controlador
de retry, donde la llamada inicial cuenta para el valor que proporciona. El valor predeterminado es 5.

Definición de una configuración de reintento en las variables de


entorno
Para definir la configuración de reintento para elAWS CLI, actualice las variables de entorno de su sistema
operativo.

Las variables de entorno de reintentos son:

• AWS_RETRY_MODE
• AWS_MAX_ATTEMPTS

Para obtener más información acerca de las variables de entorno, consulteVariables de entorno para
configurar la AWS CLI (p. 71).

Definir una configuración de reintento en suAWSArchivo de


configuración
Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible si


ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2, consulte
Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Para cambiar la configuración de reintento, actualice suAWSArchivo de configuración. La ubicación


predeterminada deAWSarchivo de configuración es ~/.aws/config.

A continuación se muestra un ejemplo deAWSArchivo de configuración:

[default]
retry_mode = standard
max_attempts = 6

Para obtener más información sobre los archivos de configuración, consulteOpciones de los archivos de
configuración y credenciales (p. 51).

Visualización de registros de reintentos


LaAWS CLIutiliza la metodología de reintento y el registro de Boto3. Puede utilizar la opción--debugen
cualquier comando para recibir registros de depuración. Para obtener más información sobre cómo utilizar
el--debug, consulteOpciones de línea de comandos (p. 75).

85
AWS Command Line Interface Guía del usuario
Obtención de credenciales con un proceso externo

Si busca «reintento» en sus registros de depuración, encontrará la información de reintento que necesita.
Las entradas del registro del cliente para los intentos de reintento dependen del modo de reintento que
haya habilitado.

Modo heredado:

Los mensajes de reintento son generados por botocore.retryhandler. Verá uno de los tres mensajes:

• No retry needed
• Retry needed, action of: <action_name>
• Reached the maximum number of retry attempts: <attempt_number>

Modo estándar o adaptativo:

Los mensajes de reintento son generados por botocore.retries.standard. Verá uno de los tres mensajes:

• No retrying request
• Retry needed, retrying request after delay of: <delay_value>
• Retry needed but retry quota reached, not retrying request

Para obtener el archivo de definición completa de los reintentos de botocore, consulte_retry.jsonen


elRepositorio GitHub.

Obtención de credenciales con un proceso externo


Warning

En el siguiente tema, se explica cómo se obtienen credenciales desde un proceso externo.


Esto puede suponer un riesgo para la seguridad si el comando que genera las credenciales
llega a estar accesible para usuarios o procesos no aprobados. Se recomienda utilizar las
alternativas seguras y compatibles ofrecidas por la AWS CLI y AWS para reducir el riesgo de que
las credenciales se vean comprometidas. Asegúrese de proteger el archivo config y todos los
archivos auxiliares y herramientas para evitar su divulgación.
Asegúrese de que su herramienta de credenciales personalizada no escriba información secreta
enStdErrporque los SDK deAWS CLIpuede capturar y registrar dicha información, exponiéndola
potencialmente a usuarios no autorizados.

Si tiene un método para generar o buscar credenciales que no es directamente compatible con laAWS CLI,
puede configurar elAWS CLIpara utilizarlo configurando elcredential_processen elconfigfile.

Por ejemplo, puede incluir una entrada similar a la siguiente en el archivo config:

[profile developer]
credential_process = /opt/bin/awscreds-custom --username helen

Syntax

Para crear esta cadena de forma que sea compatible con cualquier sistema operativo, siga estas reglas:

• Si la ruta de acceso o el nombre del archivo contienen un espacio, rodee la ruta completa y el nombre
del archivo con comillas dobles (" "). La ruta y el nombre de archivo solo pueden constar de los
caracteres: A-Z a-z 0-9 - _. espacio
• Si un nombre de parámetro o un valor de parámetro contienen un espacio, rodee ese elemento con
comillas dobles (" "). Incluya solo el nombre o el valor, no el par.

86
AWS Command Line Interface Guía del usuario
Uso de credenciales para metadatos
de instancias de Amazon EC2

• No incluya ninguna variable de entorno en las cadenas. Por ejemplo, no puede incluir $HOME ni
%USERPROFILE%.
• No especifique la carpeta de inicio como ~. Debe especificar la ruta completa.

Ejemplo para Windows

credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with


spaces"

Ejemplo para Linux o macOS

credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter


with spaces"

Salida prevista del programa Credentials

La AWS CLI ejecuta el comando tal y como se especifica en el perfil y, a continuación, lee datos de
STDOUT. El comando que especifique debe generar una salida JSON en STDOUT que se ajuste a la
siguiente sintaxis.

{
"Version": 1,
"AccessKeyId": "an AWS access key",
"SecretAccessKey": "your AWS secret access key",
"SessionToken": "the AWS session token for temporary credentials",
"Expiration": "ISO8601 timestamp when the credentials expire"
}

Note

En la fecha de publicación del presente documento, la clave Version debe establecerse en 1.


Puede aumentar con el paso del tiempo a medida que la estructura evolucione.

La clave Expiration es una marca temporal con formato ISO8601. Si la clave Expiration no está
presente en la salida de la herramienta, la CLI da por hecho que las credenciales son credenciales a
largo plazo que no se actualizan. De otro modo, las credenciales se consideran credenciales temporales
y se actualizan automáticamente volviendo a ejecutar el comando credential_process antes de que
caduquen.
Note

La AWS CLI no almacena en caché credenciales de procesos externos de la forma que lo hace
con las credenciales de asunción de rol. Si se requiere el almacenamiento en caché, debe
implementarlo en el proceso externo.

El proceso externo puede devolver un código de devolución distinto de cero para indicar que se ha
producido un error al intentar recuperar las credenciales.

Uso de credenciales para metadatos de instancias


de Amazon EC2
Cuando ejecuta el comandoAWS CLIDesde una instancia de Amazon Elastic Compute Cloud (Amazon
EC2), puede simplificar el proceso de proporcionar credenciales a los comandos. Cada instancia de
Amazon EC2 contiene metadatos queAWS CLIPuede consultar directamente las credenciales temporales.

87
AWS Command Line Interface Guía del usuario
Prerequisites

Cuando se adjunta un rol de IAM a la instancia, elAWS CLIRecupera las credenciales de los metadatos de
la instancia de forma automática y segura.

Para deshabilitar este servicio, utilice la herramientaAWS_EC2_METADATA_DISABLED (p. 74)variable


de entorno.

Prerequisites
Para utilizar las credenciales de Amazon EC2 con elAWS CLIDebe completar lo siguiente:

• Para lanzar la instancia Amazon EC2AWS CLIYa está instalado. Si el archivo deAWS CLISi no está
instalado, instale laAWS CLI. Para obtener más información, consulte Instalar, actualizar y desinstalar
elAWS CLI (p. 6).
• Comprende los archivos de configuración. Para obtener más información, consulte Opciones de los
archivos de configuración y credenciales (p. 51).
• Entiendes los perfiles con nombre. Para obtener más información, consulte Perfiles con
nombre (p. 64).
• Ha creado unAWS Identity and Access ManagementEl rol de IAM que tiene acceso a los recursos
necesarios y asoció ese rol a la instancia de Amazon EC2 al lanzarla. Para obtener más información,
consultePolíticas de IAM para Amazon EC2en laGuía del usuario de Amazon EC2 para instancias de
LinuxyConceder acceso a aplicaciones que se ejecutan en instancias Amazon EC2AWSRecursosen
laGuía del usuario de IAM.

Configuración de un perfil para metadatos de Amazon


EC2
Para especificar que desea utilizar las credenciales disponibles en el perfil de instancia de Amazon EC2 de
alojamiento, utilice la siguiente sintaxis en un perfil con nombre en su archivo de configuración. Consulte
los siguientes pasos para obtener más instrucciones.

[profile profilename]
role_arn = arn:aws:iam::123456789012:role/rolename
credential_source = Ec2InstanceMetadata
region = region

1. Cree un perfil en su archivo de configuración.

[profile profilename]

2. Agregue su rol arn de IAM que tenga acceso a los recursos necesarios.

role_arn = arn:aws:iam::123456789012:role/rolename

3. Especifique .Ec2InstanceMetadatacomo fuente de credenciales.

credential_source = Ec2InstanceMetadata

4. Establezca su región.

region = region

Ejemplo

88
AWS Command Line Interface Guía del usuario
Uso de un proxy HTTP

El siguiente ejemplo presupone lamarketingadminroley utiliza la funciónus-west-2En un perfil de


instancia de Amazon EC2marketingadmin.

[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
region = us-west-2

Uso de un proxy HTTP


Para acceder a AWS a través de servidores proxy, puede configurar las variables de entorno HTTP_PROXY
y HTTPS_PROXY con los nombres de dominio de DNS o con las direcciones IP y los números de puerto
que utilizan los servidores proxy.
Note

En los ejemplos siguientes, se muestra el nombre de la variable de entorno con todas las letras
en mayúscula. Sin embargo, si especifica una variable dos veces, una vez con letras mayúsculas
y otra vez con letras minúsculas, la variable con letras minúsculas tiene valor. Recomendamos
que defina cada variable solo una vez para evitar la confusión de los clientes y un comportamiento
inesperado.

Los siguientes ejemplos muestran cómo puede utilizar la dirección IP explícita de su proxy o un nombre
de DNS que se resuelve en la dirección IP de su proxy. Cualquiera puede ir seguido de dos puntos y el
número de puerto al que se deben enviar las consultas.

Linux o macOS

$ export HTTP_PROXY=http://10.15.20.25:1234
$ export HTTP_PROXY=http://proxy.example.com:1234
$ export HTTPS_PROXY=http://10.15.20.25:5678
$ export HTTPS_PROXY=http://proxy.example.com:5678

Windows

C:\> setx HTTP_PROXY http://10.15.20.25:1234


C:\> setx HTTP_PROXY http://proxy.example.com:1234
C:\> setx HTTPS_PROXY http://10.15.20.25:5678
C:\> setx HTTPS_PROXY http://proxy.example.com:5678

Autenticación en un proxy
La AWS CLI admite la autenticación básica de HTTP. Especifique el nombre de usuario y la contraseña en
la URL del proxy como se indica a continuación.

Linux o macOS

$ export HTTP_PROXY=http://username:[email protected]:1234
$ export HTTPS_PROXY=http://username:[email protected]:5678

Windows

C:\> setx HTTP_PROXY http://username:[email protected]:1234

89
AWS Command Line Interface Guía del usuario
Uso de un proxy en instancias Amazon EC2

C:\> setx HTTPS_PROXY http://username:[email protected]:5678

Note

La AWS CLI no admite servidores proxy NTLM. Si utiliza un proxy del protocolo NTLM o Kerberos,
es posible que pueda conectarse a través de un proxy de autenticación como Cntlm.

Uso de un proxy en instancias Amazon EC2


Si configura un proxy en una instancia de Amazon EC2 que se ha lanzado con un rol de IAM de asociado,
asegúrese de excluir la dirección utilizada para obtener acceso a la instancia deMetadatos de instancia.
Para ello, establezca la propiedadNO_PROXYA la dirección IP del servicio de metadatos de la instancia,
169.254.169.254. Esta dirección no varía.

Linux o macOS

$ export NO_PROXY=169.254.169.254

Windows

C:\> setx NO_PROXY 169.254.169.254

Uso de un rol de IAM en laAWS CLI


UnaAWS Identity and Access ManagementFunción de (IAM)Es una herramienta de autorización que
permite a un usuario de IAM conseguir permisos adicionales o distintos, u obtener permisos para realizar
acciones en otroAWSaccount.

Puede configurar laAWS Command Line Interface(AWS CLIPara utilizar un rol de IAM mediante la
definición un perfil para el rol en la.~/.aws/configfile.

En el siguiente ejemplo se muestra un perfil de rol llamado marketingadmin. Si ejecuta


comandos con--profile marketingadmin(o especifíquelo con el parámetrovariable
de entorno AWS_PROFILE (p. 71)), elAWS CLIutiliza las credenciales definidas en
un perfil independienteuser1Para asumir el rol con el nombre de recurso de Amazon
(ARN)arn:aws:iam::123456789012:role/marketingadminrole. Puede ejecutar cualquier
operación permitida por los permisos asignados a ese rol.

[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
source_profile = user1

A continuación, puede especificar unsource_profileque apunte a un perfil con nombre independiente


que contenga credenciales de usuario de IAM con permiso para utilizar el rol. En el ejemplo anterior, el
perfil marketingadmin utiliza las credenciales en el perfil user1. Cuando se especifica que unAWS
CLIes usar el perfilmarketingadmin, elAWS CLIbusca automáticamente las credenciales para el
enlaceuser1y los utiliza para solicitar credenciales temporales para el rol de IAM especificado. La CLI usa
la operación sts:AssumeRole en segundo plano para llevar esto a cabo. Estas credenciales temporales se
utilizan para ejecutar laAWS CLIEl comando de. El rol especificado debe tener políticas de permisos de
IAM asociadas que permitan laAWS CLIPara ejecutar.

Para ejecutar unAWS CLIDesde una instancia de Amazon Elastic Compute Cloud (Amazon EC2) o en un
contenedor de Amazon Elastic Container Service (Amazon ECS), puede utilizar un rol de IAM asociado

90
AWS Command Line Interface Guía del usuario
Configuración y uso de un rol

al perfil de instancia o al contenedor. Si no especifica ningún perfil o no establece ninguna variable de


entorno, ese rol se utiliza directamente. De este modo, puede evitar el almacenamiento de las claves de
acceso de larga duración en las instancias. También puede utilizar esos roles de instancia o contenedor
solo para obtener credenciales para otro rol. Para ello, utilice credential_source (en lugar de
source_profile) para especificar cómo encontrar las credenciales. El atributo credential_source es
compatible con los siguientes valores:

• EnvironmentRecupera las credenciales de origen de las variables de entorno.


• Ec2InstanceMetadataUtiliza el rol de IAM asociado al perfil de instancia de Amazon EC2.
• EcsContainer: utiliza la función de IAM adjunta al contenedor de Amazon ECS.

En el siguiente ejemplo se muestra el mismomarketingadminroleUso al hacer referencia a un perfil de


instancia de Amazon EC2.

[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata

Cuando invoca un rol, tiene otras opciones que puede exigir; por ejemplo, el uso de la autenticación
multifactor y de un ID externo (que compañías externas utilizan para acceder a los recursos de sus
clientes). También puede especificar nombres de sesión de roles únicos que puedan auditarse más
fácilmente en registros AWS CloudTrail.

Secciones
• Configuración y uso de un rol (p. 91)
• Uso de la autenticación multifactor (p. 93)
• Roles entre cuentas e ID externo (p. 94)
• Especificación de un nombre de sesión de rol para simplificar las auditorías (p. 94)
• Adopción de un rol con una identidad web (p. 95)
• Borrado de las credenciales almacenadas en memoria caché (p. 96)

Configuración y uso de un rol


Cuando ejecuta comandos con un perfil que especifica un rol de IAM, el comandoAWS CLIutiliza
las credenciales del perfil de origen para llamar aAWS Security Token Service(AWS STS) y solicitar
credenciales temporales para el rol especificado. El usuario del perfil de origen debe tener permiso
para llamar a sts:assume-role en el rol del perfil especificado. El rol debe tener una relación de
confianza que permita al usuario del perfil de origen utilizarlo. El proceso de recuperación y posterior uso
de credenciales temporales en un rol a menudo se denomina asumir el rol.

Puede crear un rol en IAM con los permisos que quiera que asuman los usuarios siguiendo el
procedimiento deCreación de un rol para delegar permisos a un usuario de IAMen laAWS Identity and
Access ManagementGuía del usuario. Si el rol y el usuario de IAM del perfil de origen se encuentran en la
misma cuenta, puede introducir su propio ID de cuenta al configurar la relación de confianza del rol.

Después de crear el rol, modifique la relación de confianza para permitir que el usuario de IAM (o los
usuarios de la.AWS) para asumirlo.

En el siguiente ejemplo se muestra una política de confianza que puede asociarse a un rol. Esta política
permite asumir el rol a cualquier usuario de IAM en la cuenta 123456789012,ifel administrador de esa
cuenta otorga explícitamente elsts:assumerolepermiso para el usuario de.

{
"Version": "2012-10-17",

91
AWS Command Line Interface Guía del usuario
Configuración y uso de un rol

"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "sts:AssumeRole"
}
]
}

La política de confianza no concede permisos. El administrador de la cuenta debe delegar el permiso para
asumir el rol a usuarios individuales asociando una política a los permisos adecuados. En el siguiente
ejemplo se muestra una política que puede asociarse a un usuario de IAM que permite al usuario asumir
únicamente lamarketingadminroleRol de . Para obtener más información acerca de cómo conceder
acceso a un usuario para asumir un rol, consulteConceder permisos de usuario para cambiar de rolen
laGuía del usuario de IAM.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::123456789012:role/marketingadminrole"
}
]
}

El usuario de IAM no necesita tener permisos adicionales para ejecutar laAWS CLIusando el perfil
de rol. En cambio, los permisos para ejecutar el comando proceden de los asociados al rol. Puede
asociar políticas de permisos al rol para especificar qué acciones pueden realizarse en relación con qué
recursos de AWS. Para obtener más información acerca de cómo asociar permisos a un rol (que funciona
exactamente igual que en un usuario de IAM), consulteCambio de los permisos de un usuario de IAMen
laGuía del usuario de IAM.

Ahora que ya tiene el perfil del rol, los permisos del rol, la relación de confianza del rol y los permisos de
usuario configurados correctamente, puede utilizar el rol en la línea de comandos invocando la opción
--profile. Por ejemplo, el siguiente comando Amazon S3 a lalsusando los permisos adjuntos al
comandomarketingadminDescribe cómo se define en el ejemplo al principio de este tema.

$ aws s3 ls --profile marketingadmin

Si desea utilizar el rol para varias llamadas, puede configurar la variable de entorno AWS_PROFILE para la
sesión actual desde la línea de comandos. Siempre que esa variable de entorno se haya definido, no será
necesario especificar la opción --profile en cada comando.

Linux o macOS

$ export AWS_PROFILE=marketingadmin

Windows

C:\> setx AWS_PROFILE marketingadmin

Para obtener más información acerca de cómo configurar los usuarios y roles de IAM, consulteUsuarios y
grupos deyRoles deen laGuía del usuario de IAM.

92
AWS Command Line Interface Guía del usuario
Uso de MFA

Uso de la autenticación multifactor


Para mayor seguridad, puede pedir a los usuarios que proporcionen una clave única generada a partir
de un dispositivo de autenticación multifactor (MFA), un dispositivo U2F o una aplicación móvil cuando
realicen una llamada utilizando el perfil del rol.

En primer lugar, puede elegir modificar la relación de confianza del rol de IAM para exigir MFA. Esto impide
que una persona utilice el rol sin autenticarse primero mediante MFA. A modo de ejemplo, vea la línea
Condition en el siguiente ejemplo. Esta directiva permite al usuario de IAM llamadoanikaPara asumir el
rol al que la política está asociado, pero solo si se autentica mediante MFA.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" },
"Action": "sts:AssumeRole",
"Condition": { "Bool": { "aws:multifactorAuthPresent": true } }
}
]
}

A continuación, añada una línea al perfil del rol que especifique el ARN del dispositivo MFA del usuario. La
siguiente muestraconfigLas entradas de archivo muestran dos perfiles de rol que utilizan las claves de
acceso del usuario de IAManikaPara solicitar credenciales temporales para el rolcli-role. El usuario
anika tiene permisos para asumir el rol, concedidos por la política de confianza del rol.

[profile role-without-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile=cli-user

[profile role-with-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile = cli-user
mfa_serial = arn:aws:iam::128716708097:mfa/cli-user

[profile anika]
region = us-west-2
output = json

El valor mfa_serial puede ser un ARN, tal como se muestra, o el número de serie de un token de MFA
de hardware.

El primer perfil, role-without-mfa, no requiere MFA. Sin embargo, como la política de confianza
asociada al rol del ejemplo anterior requiere MFA, cualquier intento de ejecutar un comando con este perfil
produce un error.

$ aws iam list-users --profile role-without-mfa

An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied

La segunda entrada del perfil, role-with-mfa, identifica el dispositivo MFA que se va a utilizar.
Cuando el usuario intenta ejecutar unAWS CLIcon este perfil, el comandoAWS CLISolicita al usuario
que introduzca la contraseña de un solo uso (OTP) proporcionada a través del dispositivo MFA. Si la

93
AWS Command Line Interface Guía del usuario
Roles entre cuentas e ID externo

autenticación MFA se realiza correctamente, el comando realiza la operación solicitada. La OTP no se


muestra en la pantalla.

$ aws iam list-users --profile role-with-mfa


Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user:
{
"Users": [
{
...

Roles entre cuentas e ID externo


Puede habilitar que los usuarios de IAM utilicen roles que pertenezcan a diferentes cuentas si configura
el rol como un rol entre cuentas. Durante la creación del rol, defina el tipo de rol comoOtroAWSaccount,
según se explica en laCreación de un rol para delegar permisos a un usuario de IAM. Si lo desea,
seleccione Require MFA (Requerir MFA). La opción Require MFA (Requerir NFA) configura la
condición apropiada en la relación de confianza, tal y como se describe en Uso de la autenticación
multifactor (p. 93).

Si utiliza un ID externo para ofrecer mayor control sobre quién puede utilizar un rol entre cuentas, también
debe añadir el parámetro external_id al perfil del rol. Esto se utiliza normalmente solo cuando la otra
cuenta la controla alguien ajeno a su empresa u organización.

[profile crossaccountrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
external_id = 123456

Especificación de un nombre de sesión de rol para


simplificar las auditorías
Cuando muchas personas comparten un rol, la auditoría se convierte en un desafío más. Deseará asociar
cada operación invocada con la persona que invocó la acción. Sin embargo, cuando la persona utiliza
un rol, la asunción del rol por parte de la persona es una acción independiente de la invocación de una
operación y debe relacionar manualmente las dos.

Puede simplificar este proceso especificando nombres de sesión de rol únicos cuando los usuarios
asumen un rol. Para ello, añada un parámetro role_session_name a cada perfil con nombre en el
archivo config que especifica un rol. El valor role_session_name se pasa a la operación AssumeRole
y pasa a formar parte del ARN de la sesión de rol. También se incluye en los registros de AWS CloudTrail
de todas las operaciones registradas.

Por ejemplo, podría crear un perfil basado en roles de la siguiente manera.

[profile namedsessionrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
role_session_name = Session_Maria_Garcia

De este modo, la sesión del rol tendría el siguiente ARN.

arn:aws:iam::234567890123:assumed-role/SomeRole/Session_Maria_Garcia

Además, todos los registros de AWS CloudTrail incluyen el nombre de la sesión del rol en la información
obtenida para cada operación.

94
AWS Command Line Interface Guía del usuario
Adopción de un rol con una identidad web

Adopción de un rol con una identidad web


Puede configurar un perfil para indicar que la AWS CLI debe asumir un rol mediante la identidad federada
web y Open ID Connect (OIDC). Al especificar esto en un perfil, la AWS CLI realiza automáticamente la
llamada a AssumeRoleWithWebIdentity de AWS STS correspondiente.
Note

Cuando especifica un perfil que utiliza un rol de IAM, laAWS CLIRealiza las llamadas
correspondientes para recuperar las credenciales temporales. Estas credenciales se guardan en
~/.aws/cli/cache. Los comandos de la AWS CLI posteriores que especifican el mismo perfil
utilizan las credenciales temporales almacenadas en caché hasta que caducan. En ese momento,
la AWS CLI actualiza automáticamente las credenciales.

Para recuperar y utilizar credenciales temporales utilizando identidades federadas web, puede especificar
los siguientes valores de configuración en un perfil compartido:

role_arn (p. 90)

Especifica el ARN del rol que se va a adoptar.


web_identity_token_file

Especifica la ruta a un archivo que contiene un token de acceso de OAuth 2.0 o un ID de


token de OpenID Connect proporcionado por el proveedor de identidad. La AWS CLI carga
este archivo y pasa su contenido como el argumento WebIdentityToken de la operación
AssumeRoleWithWebIdentity.
role_session_name (p. 94)

Especifica un nombre opcional que se aplica a esta sesión de asunción de rol.

A continuación, se muestra un ejemplo de la configuración mínima necesaria para configurar un rol de


adopción con un perfil de identidad web:

# In ~/.aws/config

[profile web-identity]
role_arn=arn:aws:iam:123456789012:role/RoleNameToAssume
web_identity_token_file=/path/to/a/token

También puede establecer esta configuración utilizando variables de entorno (p. 71):

AWS_ROLE_ARN

ARN del rol que se va a adoptar.


AWS_WEB_IDENTITY_TOKEN_FILE

La ruta al archivo de token de identidad web.


AWS_ROLE_SESSION_NAME

El nombre aplicado a esta sesión de asunción de rol.

Note

Actualmente, estas variables de entorno solo se aplican al rol que se va a adoptar con un
proveedor de identidades web. No se aplican a la configuración general del proveedor de roles de
adopción.

95
AWS Command Line Interface Guía del usuario
Borrado de las credenciales
almacenadas en memoria caché

Borrado de las credenciales almacenadas en memoria


caché
Al utilizar un rol, la AWS CLI almacena en caché localmente las credenciales temporales hasta que
caducan. La próxima vez que intente utilizarlas, la AWS CLI intentará renovarlas en su nombre.

Si las credenciales temporales del rol se revocan, no se renuevan automáticamente y se producirá un


error al intentar utilizarlas. Sin embargo, puede eliminar la caché para obligar a la AWS CLI a que recupere
nuevas credenciales.

Linux o macOS

$ rm -r ~/.aws/cli/cache

Windows

C:\> del /s /q %UserProfile%\.aws\cli\cache

96
AWS Command Line Interface Guía del usuario
Obtener ayuda

Mediante AWS CLI


En esta sección se presentan muchas de las características comunes y las opciones disponibles en la
AWS Command Line Interface (AWS CLI). Para obtener una lista de comandos, consulte elAWS CLIGuía
de referencia de la versión 1yAWS CLIGuía de referencia de la versión 2.
Note

De forma predeterminada, la AWS CLI envía solicitudes a los servicios de AWS mediante HTTPS
en el puerto TCP 443. Para utilizar la AWS CLI correctamente, debe poder realizar conexiones
salientes en el puerto TCP 443.

Temas de esta guía


• Obtener ayuda con la AWS CLI (p. 97)
• Estructura de comandos en la AWS CLI (p. 101)
• Especificación de valores de parámetros para la AWS CLI (p. 103)
• Con laAWS CLIsolicitarle comandos (p. 120)
• Control de la salida de comandos desde la AWS CLI (p. 123)
• Descripción de los códigos de devolución de la AWS CLI (p. 151)
• Mediante laAWS CLIasistentes (p. 152)
• Creación y uso deAWS CLIAlias de (p. 153)

Obtener ayuda con la AWS CLI


Puede obtener ayuda para cualquier comando cuando utiliza la AWS Command Line Interface (AWS CLI).
Para ello, simplemente escriba help al final del nombre de un comando.

Por ejemplo, el siguiente comando muestra la ayuda de las opciones generales de la AWS CLI generales y
los comandos de nivel superior.

$ aws help

En el siguiente comando se muestran los comandos específicos de Amazon Elastic Compute Cloud
(Amazon EC2) disponibles.

$ aws ec2 help

En el siguiente ejemplo se muestra información de ayuda detallada de Amazon


EC2DescribeInstances. La ayuda incluye descripciones de los parámetros de entrada, los filtros
disponibles y qué se incluye como salida. También incluye ejemplos que muestran cómo escribir
variaciones comunes del comando.

$ aws ec2 describe-instances help

La ayuda de cada comando se divide en seis secciones:

Nombre

El nombre del comando.

97
AWS Command Line Interface Guía del usuario
Obtener ayuda

NAME
describe-instances -

Descripción

Una descripción de la operación de la API que el comando invoca.

DESCRIPTION
Describes one or more of your instances.

If you specify one or more instance IDs, Amazon EC2 returns information
for those instances. If you do not specify instance IDs, Amazon EC2
returns information for all relevant instances. If you specify an
instance ID that is not valid, an error is returned. If you specify an
instance that you do not own, it is not included in the returned
results.
...

Sinopsis

La sintaxis básica para utilizar el comando y sus opciones. Si una opción aparece entre corchetes,
significa que es opcional, que tiene un valor predeterminado o que existe una opción alternativa que
puede utilizarse en su lugar.

SYNOPSIS
describe-instances
[--dry-run | --no-dry-run]
[--instance-ids <value>]
[--filters <value>]
[--cli-input-json <value>]
[--starting-token <value>]
[--page-size <value>]
[--max-items <value>]
[--generate-cli-skeleton]

Por ejemplo, describe-instances tiene un comportamiento predeterminado que describe todas


las instancias de la cuenta y la región de AWS actuales. Si lo desea, puede especificar una lista de
instance-ids para describir una o varias instancias. dry-run es un indicador booleano opcional
que no adopta ningún valor. Para utilizar un indicador booleano, especifique el valor aparece; en este
caso, --dry-run o --no-dry-run. Del mismo modo, --generate-cli-skeleton no adopta un
valor. Si existen condiciones para usar una opción, aparecen descritas en la sección OPTIONS o se
muestran en los ejemplos.
Opciones

Una descripción de cada una de las opciones que aparecen en el resumen.

OPTIONS
--dry-run | --no-dry-run (boolean)
Checks whether you have the required permissions for the action,
without actually making the request, and provides an error response.
If you have the required permissions, the error response is DryRun-
Operation . Otherwise, it is UnauthorizedOperation .

--instance-ids (list)
One or more instance IDs.

Default: Describes all your instances.


...

98
AWS Command Line Interface Guía del usuario
Obtener ayuda

Ejemplos

Ejemplos que ilustran el uso del comando y sus opciones. Si no se proporciona un ejemplo de un
comando o un caso de uso que necesite, solicítelo a través del enlace de comentarios de esta página
o de la referencia de comandos de la AWS CLI en la página de ayuda del comando.

EXAMPLES
To describe an Amazon EC2 instance

Command:

aws ec2 describe-instances --instance-ids i-5203422c

To describe all instances with the instance type m1.small

Command:

aws ec2 describe-instances --filters "Name=instance-type,Values=m1.small"

To describe all instances with an Owner tag

Command:

aws ec2 describe-instances --filters "Name=tag-key,Values=Owner"


...

Salida

Descripciones de cada uno de los campos y tipos de datos incluidos en la respuesta de AWS.

Para describe-instances, la salida es una lista de objetos de reserva, cada uno de los cuales
contiene varios campos y objetos con información acerca de las instancias asociadas al mismo.
Esta información proviene de laDocumentación de API para el tipo de datos de reservaUtilizado por
Amazon EC2.

OUTPUT
Reservations -> (list)
One or more reservations.

(structure)
Describes a reservation.

ReservationId -> (string)


The ID of the reservation.

OwnerId -> (string)


The ID of the AWS account that owns the reservation.

RequesterId -> (string)


The ID of the requester that launched the instances on your
behalf (for example, AWS Management Console or Auto Scaling).

Groups -> (list)


One or more security groups.

(structure)
Describes a security group.

GroupName -> (string)


The name of the security group.

GroupId -> (string)


The ID of the security group.

99
AWS Command Line Interface Guía del usuario
Documentación de AWS CLI

Instances -> (list)


One or more instances.

(structure)
Describes an instance.

InstanceId -> (string)


The ID of the instance.

ImageId -> (string)


The ID of the AMI used to launch the instance.

State -> (structure)


The current state of the instance.

Code -> (integer)


The low byte represents the state. The high byte
is an opaque internal value and should be ignored.
...

Cuando la AWS CLI proporciona la salida en formato JSON, se convierte en una matriz de objetos de
reserva, similar a la del siguiente ejemplo.

{
"Reservations": [
{
"OwnerId": "012345678901",
"ReservationId": "r-4c58f8a0",
"Groups": [],
"RequesterId": "012345678901",
"Instances": [
{
"Monitoring": {
"State": "disabled"
},
"PublicDnsName": "ec2-52-74-16-12.us-west-2.compute.amazonaws.com",
"State": {
"Code": 16,
"Name": "running"
},
...

Cada objeto de reserva tiene campos que describen la reserva y una matriz de objetos de instancia,
cada uno de ellos con sus propios campos (por ejemplo, PublicDnsName) y objetos (por ejemplo
State) que los describen.
Usuarios de Windows

Puede añadir una barra vertical (|) a la salida del comando de ayuda al comando more para
ver las páginas del archivo de ayuda una a una. Pulse la barra espaciadora o AvPág para
avanzar por el documento y q para salir.

C:\> aws ec2 describe-instances help | more

Documentación de AWS CLI


LaAWS CLIReferencia de los comandos de laLa también incorpora el contenido de la ayuda de todos
losAWS CLIcommands. Las descripciones se presentan para facilitar la navegación y la consulta en
móviles, tabletas o equipos de escritorio.

100
AWS Command Line Interface Guía del usuario
Documentación de la API

Note

Los archivos de ayuda contienen enlaces que no se pueden ver o visitar desde la línea de
comandos. Puede ver e interactuar con estos enlaces a través de laAWS CLIReferencia de los
comandos de la.

Documentación de la API
Todos los comandos de la AWS CLI corresponden a solicitudes realizadas a la API pública de un servicio
de AWS. Cada servicio con una API pública tiene una referencia de API que puede encontrarse en la
página de inicio del servicio en laAWSSitio web Documentación. El contenido de una referencia de API
varía en función de cómo se construye la API y del protocolo utilizado. Normalmente, las referencias de
API contienen información detallada sobre las acciones compatibles con la API, los datos enviados al
servicio y desde este, y cualquier posible situación de error que pueda detectar el sistema.

Secciones de documentación de la API

• Actions— Información detallada de cada operación y sus parámetros (incluidas las restricciones de
longitud o contenido y valores predeterminados). Muestra los errores que pueden ocurrir con esta
operación. Cada operación se corresponde con un subcomando de la AWS CLI.
• Tipos de datos— Información detallada sobre las estructuras que un comando puede requerir como
parámetro o devolver en respuesta a una solicitud.
• Parámetros comunes: información detallada sobre los parámetros compartidos por toda la acción para el
servicio.
• Errores comunes: información detallada sobre los errores que pueden ser devueltos por cualquiera de
las operaciones del servicio.

El nombre y la disponibilidad de cada sección puede variar en función del servicio.


CLI específicas de los servicios

Algunos servicios tienen una CLI distinta que existía antes de que se creara una única AWS CLI
para funcionar con todos los servicios. Las CLI específicas de los servicios tienen documentación
aparte, a la que se accede con un enlace a la página de documentación del servicio. La
documentación de las CLI específicas de los servicios no se aplica a la AWS CLI.

Estructura de comandos en la AWS CLI


En este tema se abordan lasAWS Command Line Interface(AWS CLI) está estructurado, y cómo usar
comandos de espera.

Temas
• Estructura de comandos (p. 101)
• Wait (p. 102)

Estructura de comandos
LaAWS CLILa utiliza una estructura multiparte en la línea de comandos que deben especificarse en el
siguiente orden:

1. La llamada base al programa de aws.


2. El comando de nivel superior, que normalmente corresponde a un servicio de AWS compatible con la
AWS CLI.

101
AWS Command Line Interface Guía del usuario
Wait

3. El subcomando que especifica qué operación realizar.


4. GeneralesAWS CLIOpciones o parámetros necesarios por la operación. Puede especificarlos en
cualquier orden siempre que vayan detrás de las tres primeras partes. Si se especifica un parámetro
exclusivo varias veces, solo se aplica el último valor.

$ aws <command> <subcommand> [options and parameters]

Los parámetros pueden tomar varios tipos de valores de entrada, como números, cadenas, listas, mapas y
estructuras JSON. Los valores admitidos dependen del comando y los subcomandos que especifique.

Examples
Amazon S3

En el siguiente ejemplo se enumeran todos los buckets de Amazon S3.

$ aws s3 ls
2018-12-11 17:08:50 my-bucket
2018-12-14 14:55:44 my-bucket2

Para obtener más información sobre los comandos de Amazon S3, consulte.aws s3en laAWS
CLIReferencia de los comandos de la.

aws s3

AWS CloudFormation

Los siguientes ejemplos dechange-set-create-completecambia el nombre de la pila de


cloudformation amy-change-set.

$ aws cloudformation change-set-create-complete --stack-name my-stack --change-set-name my-


change-set

Para obtener más información sobre lasAWS CloudFormationconsulteaws cloudformationen laAWS


CLIReferencia de los comandos de la.

Wait
AlgunoAWSlos servicios tienenwaitdisponibles. Cualquier comando que useaws waitPor lo general,
espera hasta que un comando se completa antes de ir al siguiente paso. Esto es especialmente útil para
comandos multiparte o secuencias de comandos, ya que puede utilizar un comando wait para evitar pasar
a pasos posteriores si el comando wait falla.

LaAWS CLILa usa una estructura multiparte en la línea de comandos para lawaitque deben especificarse
en el siguiente orden:

1. La llamada base al programa de aws.


2. El comando de nivel superior, que normalmente corresponde a un servicio de AWS compatible con la
AWS CLI.
3. El comando wait
4. El subcomando que especifica qué operación realizar.
5. Opciones o parámetros generales de la CLI necesarios por la operación. Puede especificarlos en
cualquier orden siempre que vayan detrás de las tres primeras partes. Si se especifica un parámetro
exclusivo varias veces, solo se aplica el último valor.

102
AWS Command Line Interface Guía del usuario
Especificación de valores de parámetros

$ aws <command> wait <subcommand> [options and parameters]

Los parámetros pueden tomar varios tipos de valores de entrada, como números, cadenas, listas, mapas y
estructuras JSON. Los valores admitidos dependen del comando y los subcomandos que especifique.
Note
No todos los servicios de AWS admitenwaitcommands. Consulte laAWS CLIGuía de referencia
depara ver si su servicio admitewaitcommands.

Examples
AWS CloudFormation

Los siguientes ejemplos dewait change-set-create-completeejemplos de comandos se detiene y


se reanuda sólo después de que pueda confirmar que el comandomy-change-setconjunto de cambios
en lamy-stackLa pila está lista para ejecutarse.

$ aws cloudformation wait change-set-create-complete --stack-name my-stack --change-set-


name my-change-set

Para obtener más información sobre lasAWS CloudFormation waitconsultewaiten laAWS CLIReferencia
de los comandos de la.

AWS CodeDeploy

Los siguientes ejemplos dewait deployment-successfulejemplos de comandos se detiene hasta que


elD-A1B2C3111La implementación se completa correctamente.

$ aws deploy wait deployment-successful --deployment-id d-A1B2C3111

Para obtener más información sobre lasAWS CodeDeploy waitconsultewaiten laAWS CLIReferencia de
los comandos de la.

Especificación de valores de parámetros para la


AWS CLI
Muchos de los parámetros que se utilizan en AWS Command Line Interface (AWS CLI) son simples
valores numéricos o de cadena, como el nombre del par de claves my-key-pair en el siguiente ejemplo.

$ aws ec2 create-key-pair --key-name my-key-pair

Puede entrecomillar o no cadenas que no contengan caracteres de espacio. Sin embargo, las cadenas que
incluyen uno o varios caracteres de espacio deben entrecomillarse. Para obtener más información sobre
el uso de comillas alrededor de parámetros complejos, consulte Entrecomillado de cadenas en la AWS
CLI (p. 106).

Temas del parámetro


• Tipos de parámetros comunes de la AWS CLI (p. 104)
• Entrecomillado de cadenas en la AWS CLI (p. 106)
• Carga de parámetros de la AWS CLI desde un archivo (p. 108)
• Generación del esqueleto y los parámetros de entrada de la AWS CLI a partir de un archivo de entrada
JSON o YAML (p. 110)
• Uso de sintaxis abreviada con la AWS CLI (p. 118)

103
AWS Command Line Interface Guía del usuario
Tipos de parámetros comunes

Tipos de parámetros comunes de la AWS CLI


En esta sección, se describen algunos de los tipos de parámetros comunes y el formato requerido típico. Si
tiene problemas con el formato de un parámetro en un comando específico, consulte la ayuda escribiendo
help después del nombre del comando, tal y como se muestra.

$ aws ec2 describe-spot-price-history help

La ayuda para cada subcomando describe su función, opciones, resultado y ejemplos. La sección de
opciones incluye el nombre y la descripción de cada una de las opciones con el tipo de parámetro de la
opción entre paréntesis.

String
Los parámetros de cadena pueden contener caracteres alfanuméricos, símbolos y espacios en blanco del
conjunto de caracteres ASCII. Las cadenas que contienen espacios en blanco deben entrecomillarse. Le
recomendamos que no utilice símbolos ni espacios en blanco diferentes del carácter de espacio estándar,
ya que se podrían producir resultados inesperados.

Algunos parámetros de cadena pueden aceptar datos binarios de un archivo. Consulte Archivos
binarios (p. 109) para ver un ejemplo.

Timestamp
Las marcas temporales tienen un formato conforme a la norma ISO 8601. A veces se les denomina
parámetros "DateTime" o "Date".

$ aws ec2 describe-spot-price-history --start-time 2014-10-13T19:00:00Z

Los formatos aceptados son:

• AAAA-MM-DDThh:mm:ss.sssTZD (UTC), por ejemplo, 2014-10-01T20:30:00.000Z


• AAAA-MM-DDThh:mm:ss.sssTZD (con compensación), por ejemplo, 2014-10-01T12:30:00.000-08:00
• AAAA:MM:DD, por ejemplo, 2014-10-01
• Hora Unix en segundos; por ejemplo, 1412195400. Esto es lo que a veces se denomina fecha de inicio
UNIX y representa el número de segundos desde la medianoche del 1 de enero de 1970 UTC.

(está disponible en.AWS CLIVersión 2) De forma predeterminada, laAWS CLILa versión 2 traduce todos
losresponseValores DateTime al formato ISO 8601.

List
Una o varias cadenas separadas por espacios. Si cualquiera de los elementos de cadena contiene un
espacio, debe escribir dicho elemento entre comillas.

$ aws ec2 describe-spot-price-history --instance-types m1.xlarge m1.medium

Boolean
Marcador binario que activa o desactiva una opción. Por ejemplo, ec2 describe-spot-price-
history tiene con un parámetro --dry-run booleano que, cuando se especifica, valida la consulta con
el servicio sin ejecutar realmente una consulta.

104
AWS Command Line Interface Guía del usuario
Tipos de parámetros comunes

$ aws ec2 describe-spot-price-history --dry-run

El resultado indica si el comando tenía el formato correcto o no. Este comando también incluye una
versión --no-dry-run del parámetro que puede utilizarse para indicar de forma explícita que el comando
debe ejecutarse con normalidad, aunque no es necesario incluirlo, ya que este es el comportamiento
predeterminado.

Integer
Un número entero sin firma.

$ aws ec2 describe-spot-price-history --max-items 5

Binario/Blob (objeto binario grande)


En el navegadorAWS CLIversión 1, para pasar un valor a un parámetro con tipoblobDebe especificar
una ruta a un archivo local que contenga los datos binarios. La ruta no debe contener ningún identificador
de protocolo, como http:// o file://. La ruta especificada se interpreta como una ruta relativa al
directorio de trabajo actual. Por ejemplo, el parámetro --body para aws s3api put-object es un blob.

$ aws s3api put-object --bucket my-bucket --key testimage.png --body /tmp/image.png

(está disponible en.AWS CLIVersión 2) En el navegadorAWS CLILa versión 2, puede pasar un valor
binario como una cadena codificada en base64 directamente en la línea de comandos. Además, de forma
predeterminada en el cuadro de diálogoAWS CLIversión 2, los archivos a los que se hace referencia con
elfile://se tratan como texto codificado en base64.

Puede revertir elAWS CLIversión 2 para ser compatible conAWS CLIversión 1 configurando la
propiedadcli-binary-format (p. 55)Configuración de :

• Si el valor del parámetro es raw-in-base64-out, los archivos a los que se hace referencia utilizando
el prefijo file:// se tratan como binarios sin codificar y sin procesar.
• Si el valor del parámetro es base64 (el valor predeterminado), los archivos a los que se hace referencia
mediante el prefijo file:// se tratan como texto codificado en base64.

Los archivos a los que se hace referencia utilizando el prefijo fileb:// siempre se tratan como binarios
sin codificar, independientemente del valor de cli_binary_format.

Para obtener más información, consulte el valor cli-binary-format (p. 55).

Map
Un conjunto de pares de clave-valor especificado en JSON o mediante la sintaxis abreviada (p. 118)
de la CLI. En el siguiente ejemplo de JSON, se lee un elemento de una tabla de Amazon DynamoDB
denominadamy-tablecon un parámetro de mapa,--key. El parámetro especifica la clave principal
denominada id con un valor numérico de 1 en una estructura JSON anidada.

Para un uso más avanzado de JSON en una línea de comandos, considere usar un procesador JSON
de línea de comandos, comojq, para crear cadenas JSON. Para obtener más información sobre lasjq,
consulte lajq repositoriosenGitHub.

$ aws dynamodb get-item --table-name my-table --key '{"id": {"N":"1"}}'

105
AWS Command Line Interface Guía del usuario
Comillas con cadenas

{
"Item": {
"name": {
"S": "John"
},
"id": {
"N": "1"
}
}
}

Entrecomillado de cadenas en la AWS CLI


Principalmente hay dos maneras en que se usan comillas simples y dobles en elAWS CLI.

• Usar comillas alrededor de cadenas que contienen espacios en blanco (p. 106)
• Usar comillas dentro de cadenas (p. 107)

Usar comillas alrededor de cadenas que contienen espacios en


blanco
Los nombres de los parámetros y sus valores están separados por espacios en la línea de comandos.
Si un valor de cadena contiene un espacio incrustado, debe rodear toda la cadena con comillas para
evitar que la AWS CLI malinterprete el espacio como un divisor entre el valor y el siguiente nombre del
parámetro. El tipo de comillas que utilice depende del sistema operativo que esté ejecutando laAWS
CLIencendido.

Linux and macOS

Usar comillas simples' '

$ aws ec2 create-key-pair --key-name 'my key pair'

Para obtener más información acerca del uso de comillas, consulte la documentación del usuario de
su shell preferido.
PowerShell

Cotizaciones simples (recomendadas)

Usar comillas simples' '.

PS C:\> aws ec2 create-key-pair --key-name 'my key pair'

Comillas dobles

Usar comillas dobles" ".

PS C:\> aws ec2 create-key-pair --key-name "my key pair"

Para obtener más información acerca del uso de comillas, consulteAcerca de las reglas de
cotizaciónen laDocumentos de Microsoft PowerShell.
Windows command prompt

Usar comillas dobles" ".

106
AWS Command Line Interface Guía del usuario
Comillas con cadenas

C:\> aws ec2 create-key-pair --key-name "my key pair"

Si lo desea, puede separar el nombre del parámetro del valor con un signo de igual=en lugar de un
espacio. Normalmente, esto solo es necesario si el valor del parámetro comienza con un guion.

$ aws ec2 delete-key-pair --key-name=-mykey

Usar comillas dentro de cadenas


Las cadenas pueden contener comillas, y el shell puede requerir comillas de escape para que funcionen
correctamente. Uno de los tipos de valor de parámetro comunes es una cadena JSON. Esto es complejo
ya que incluye espacios y comillas dobles" "alrededor de cada nombre de elemento y valor en la
estructura JSON. El modo en que introduzca parámetros con formato JSON en la línea de comandos varía
en función de su sistema operativo.

Para un uso más avanzado de JSON en la línea de comandos, considere usar un procesador JSON de
línea de comandos, comojq, para crear cadenas JSON. Para obtener más información sobre lasjq,
consulte lajq repositoriosenGitHub.

Linux and macOS

Para que Linux y macOS interpreten cadenas, literalmente, use comillas simples' 'Para entrecomillar
la estructura de datos JSON, como en el siguiente ejemplo. No necesita escapar comillas dobles
incrustadas en la cadena JSON, ya que se tratan literalmente. Dado que el JSON está encerrado entre
comillas simples, cualquier comilla simple en la cadena tendrá que ser escapada, esto generalmente
se logra usando una barra diagonal inversa antes de la comilla simple\'.

$ aws ec2 run-instances \


--image-id ami-12345678 \
--block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":
{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'

Para obtener más información acerca del uso de comillas, consulte la documentación del usuario de
su shell preferido.
PowerShell

Usar comillas simples' 'Comillas dobles" ".

Cotizaciones simples (recomendadas)

Dado que las estructuras de datos JSON incluyen comillas dobles, sugerimosSINGLEComillas'
'para adjuntarlo. Si usaSINGLEcomillas, no necesita escapardoublecomillas incrustadas en la cadena
JSON. Sin embargo, debe escapar de cadaSINGLEcomillas con una marca de retroceso`dentro de la
estructura JSON.

PS C:\> aws ec2 run-instances `


--image-id ami-12345678 `
--block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":
{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'

Comillas dobles

Si usadoublecomillas, no necesita escaparSINGLEcomillas incrustadas en la cadena JSON. Sin


embargo, debe escapar de cadadoublecomillas con una marca de retroceso`dentro de la estructura
JSON, como con el siguiente ejemplo.

107
AWS Command Line Interface Guía del usuario
Parámetros de archivos

PS C:\> aws ec2 run-instances `


--image-id ami-12345678 `
--block-device-mappings "[{`"DeviceName`":`"/dev/sdb`",`"Ebs`":
{`"VolumeSize`":20,`"DeleteOnTermination`":false,`"VolumeType`":`"standard`"}}]"

Para obtener más información acerca del uso de comillas, consulteAcerca de las reglas de
cotizaciónen laDocumentos de Microsoft PowerShell.
Warning

Antes de que PowerShell envíe un comando alAWS CLI, determina si su comando se


interpreta usando PowerShell típico oCommandLineToArgvWcitando reglas. Cuando
PowerShell procesa conCommandLineToArgvW, debe rodear cadenas con comillas simples'
'y caracteres de escape con una barra invertida\.

PS C:\> aws ec2 run-instances `


--image-id ami-12345678 `
--block-device-mappings '[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":
{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]'

Para omitir las reglas de cita de PowerShell para la entrada de datos JSON, use Blobs para
pasar los datos JSON directamente alAWS CLI. Para obtener más información acerca de los
blobs, consulteBinario/Blob (objeto binario grande) (p. 105).
Para obtener más información sobre lasCommandLineToArgvWEn PowerShell,
consulte¿Qué pasa con el extraño tratamiento de comillas y barras invertidas por
CommandLineToArgVWen laMicrosoft DevBlogs,Todos citan argumentos de línea de
comandos de manera incorrectaen laMicrosoft Docs, yfunción CommandLineToArgvwen
laDocumentos de Microsoft.
Windows command prompt

El símbolo del sistema de Windows requiere comillas dobles" "Para incluir la estructura de datos
JSON. Además, para evitar que el procesador de comandos malinterprete las comillas dobles
incrustadas en el JSON, también debe escapar (ir precedido por una barra invertida\Comillas
dobles"En la propia estructura de datos JSON, como en el siguiente ejemplo.

C:\> aws ec2 run-instances ^


--image-id ami-12345678 ^
--block-device-mappings "[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":
{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]"

El único caso en el que no se utiliza el carácter de escape es con las comillas dobles de los extremos.

Carga de parámetros de la AWS CLI desde un archivo


Algunos parámetros esperan nombres de archivo como argumentos, desde los que la AWS CLI carga los
datos. Otros parámetros le permiten especificar el valor del parámetro como texto escrito en la línea de
comandos o leído de un archivo. Tanto si un archivo es obligatorio como si es opcional, debe codificarlo
correctamente para que la AWS CLI pueda entenderlo. La codificación del archivo debe coincidir con
la configuración regional predeterminada del sistema de lectura. Esto se puede determinar utilizando
lalocale.getpreferredencoding()Método de.
Note

De forma predeterminada, Windows PowerShell genera texto como UTF-16, lo que está en
conflicto con la codificación UTF-8 utilizada por muchos sistemas Linux. Le recomendamos que
utilice -Encoding ascii con los comandos Out-File de PowerShell para asegurarse de que
la AWS CLI puede leer el archivo resultante.

108
AWS Command Line Interface Guía del usuario
Parámetros de archivos

En ocasiones, resulta conveniente cargar el valor de un parámetro desde un archivo en lugar de intentar
escribirlo como un valor de parámetro de la línea de comandos, como, por ejemplo, cuando el parámetro
es una cadena JSON compleja. Para especificar un archivo que contenga el valor, especifique la URL del
archivo con el siguiente formato.

file://complete/path/to/file

Los dos primeros caracteres de barra inclinada "/" forman parte de la especificación. Si la ruta requerida
comienza con '/', el resultado será tres caracteres de barra inclinada: file:///folder/file.

La dirección URL proporciona la ruta al archivo que incluye el contenido del parámetro real.
Note
Este comportamiento se deshabilita de forma automática en los parámetros que ya esperan una
URL, como el parámetro que identifica una URL de plantilla de AWS CloudFormation.
También puede deshabilitar este comportamiento añadiendo la siguiente línea a suAWS
CLIArchivo de configuración.

cli_follow_urlparam = false

Las rutas de archivo en los siguientes ejemplos se interpretan como rutas relativas al directorio de trabajo
actual.

Linux o macOS

// Read from a file in the current directory


$ aws ec2 describe-instances --filters file://filter.json

// Read from a file in /tmp


$ aws ec2 describe-instances --filters file:///tmp/filter.json

Windows

// Read from a file in C:\temp


C:\> aws ec2 describe-instances --filters file://C:\temp\filter.json

La opción de prefijo file:// admite ampliaciones tipo Unix, incluidas "~/", "./" y "../". En Windows, la
expresión "~/" se amplía a su directorio de usuarios, guardado en la variable de entorno %USERPROFILE%.
Por ejemplo, en Windows 10 normalmente tendría un directorio de usuarios en C:\Users\User Name\.

Debe añadir el carácter de escape a los documentos JSON que están integrados como valor de otro
documento JSON.

$ aws sqs create-queue --queue-name my-queue --attributes file://attributes.json

attributes.json

{
"RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-
west-2:0123456789012:deadletter\", \"maxReceiveCount\":\"5\"}"
}

Archivos binarios
Para los comandos que toman datos binarios como un parámetro, especifique que los datos son contenido
binario utilizando el prefijo fileb://. Los comandos que aceptan datos binarios son:

109
AWS Command Line Interface Guía del usuario
Generar una plantilla de esqueleto de la CLI

• Parámetro aws ec2 run-instances – --user-data.


• Parámetro aws s3api put-object – --sse-customer-key.
• Parámetro aws kms decrypt – --ciphertext-blob.

En el siguiente ejemplo, se genera una clave AES binaria de 256 bits utilizando una herramienta de línea
de comandos de Linux y después se proporciona dicha clave a Amazon S3 para cifrar un archivo cargado
en el lado del servidor.

$ dd if=/dev/urandom bs=1 count=32 > sse.key


32+0 records in
32+0 records out
32 bytes (32 B) copied, 0.000164441 s, 195 kB/s
$ aws s3api put-object --bucket my-bucket --key test.txt --body test.txt --sse-customer-key
fileb://sse.key --sse-customer-algorithm AES256
{
"SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==",
"SSECustomerAlgorithm": "AES256",
"ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\""
}

Archivos remotos
La AWS CLI también permite cargar parámetros desde un archivo ubicado en Internet con una URL
http:// o https://. En el siguiente ejemplo, se hace referencia a un archivo almacenado en un bucket
de Amazon S3. Esto le permite obtener acceso a archivos de parámetros desde cualquier equipo, pero
requiere que el contenedor sea de acceso público.

$ aws ec2 run-instances --image-id ami-12345678 --block-device-mappings http://my-


bucket.s3.amazonaws.com/filename.json

En el ejemplo anterior se presupone que el archivo filename.json contiene los siguientes datos JSON.

[
{
"DeviceName": "/dev/sdb",
"Ebs": {
"VolumeSize": 20,
"DeleteOnTermination": false,
"VolumeType": "standard"
}
}
]

Para ver otro ejemplo que haga referencia a un archivo que contenga parámetros con formato JSON,
consulteAsociación de una política administrada por IAM a un usuario de IAM (p. 182).

Generación del esqueleto y los parámetros de entrada


de la AWS CLI a partir de un archivo de entrada JSON
o YAML
Important

Puede crear y consumir plantillas de esqueleto de entrada YAML sólo con la versión 2 de laAWS
CLI. Si usaAWS CLILa versión 1, solo podrá crear y consumir plantillas de esqueleto de entrada
JSON.

110
AWS Command Line Interface Guía del usuario
Generar una plantilla de esqueleto de la CLI

La mayoría de los comandos de AWS Command Line Interface (AWS CLI) pueden aceptar toda la entrada
de parámetros desde un archivo con los parámetros --cli-input-json y --cli-input-yaml.

Esos mismos comandos cuentan con el parámetro --generate-cli-skeleton, que permite generar
un archivo con todos los parámetros en formato YAML o JSON que se pueden editar y rellenar. A
continuación, puede ejecutar el comando con el parámetro --cli-input-json o --cli-input-yaml
correspondiente y apuntar al archivo cumplimentado.
Important

Varios comandos de la AWS CLI no se corresponden directamente con operaciones individuales


de la API de AWS, como los comandos de aws s3. Estos comandos no son compatibles con
los parámetros --generate-cli-skeleton, --cli-input-json y --cli-input-yaml
descritos en este tema. Si no sabe si un determinado comando admite estos parámetros, ejecute
el siguiente comando sustituyendo los nombres del servicio y el comando con los que quiera
usar.

$ aws service command help

El resultado incluye una sección Synopsis que muestra los parámetros que admite el comando
especificado.

$ aws iam list-users help


...
SYNOPSIS
list-users
...
[--cli-input-json | --cli-input-yaml]
...
[--generate-cli-skeleton <value>]
...

El parámetro --generate-cli-skeleton hace que el comando no se ejecute, sino que genere y


muestre una plantilla de parámetros que se puede personalizar y utilizar como entrada de otro comando
posterior. La plantilla generada incluye todos los parámetros que admite el comando.

El parámetro --generate-cli-skeleton acepta uno de los siguientes valores:

• inputLa plantilla generada incluye todos los parámetros de entrada con formato JSON. Este es el valor
predeterminado.
• yaml-inputLa plantilla generada incluye todos los parámetros de entrada con formato YAML.
• outputLa plantilla generada incluye todos los parámetros de salida con formato JSON. Actualmente, no
puede solicitar los parámetros de salida en formato YAML.

Como la AWS CLI es esencialmente un "encapsulador" de la API del servicio, el archivo de esqueleto
espera que el usuario haga referencia a todos los parámetros utilizando los nombres de parámetro de
la API subyacente. Es probable que este nombre sea distinto al nombre del parámetro de la AWS CLI.
Por ejemplo, un parámetro de la AWS CLI llamado user-name podría corresponderse con un parámetro
de la API de servicio de AWS llamado UserName (observe cómo se usan las mayúsculas y que falta un
guion). Le recomendamos que utilice la opción --generate-cli-skeleton para generar la plantilla
con los nombres de parámetros "correctos" con el fin de evitar errores. También puede consultar la Guía
de referencia de la API del servicio para ver los nombres de los parámetros esperados. Puede eliminar
cualquier parámetro de la plantilla que no sea necesario y para el que no desee proporcionar un valor.

Por ejemplo, si ejecuta el siguiente comando, se genera la plantilla de parámetros para el comando de
Amazon Elastic Compute Cloud (Amazon EC2)run-instances.

111
AWS Command Line Interface Guía del usuario
Generar una plantilla de esqueleto de la CLI

JSON

En el siguiente ejemplo, se muestra cómo se genera una plantilla con formato JSON utilizando el valor
predeterminado (input) en el parámetro --generate-cli-skeleton.

$ aws ec2 run-instances --generate-cli-skeleton

{
"DryRun": true,
"ImageId": "",
"MinCount": 0,
"MaxCount": 0,
"KeyName": "",
"SecurityGroups": [
""
],
"SecurityGroupIds": [
""
],
"UserData": "",
"InstanceType": "",
"Placement": {
"AvailabilityZone": "",
"GroupName": "",
"Tenancy": ""
},
"KernelId": "",
"RamdiskId": "",
"BlockDeviceMappings": [
{
"VirtualName": "",
"DeviceName": "",
"Ebs": {
"SnapshotId": "",
"VolumeSize": 0,
"DeleteOnTermination": true,
"VolumeType": "",
"Iops": 0,
"Encrypted": true
},
"NoDevice": ""
}
],
"Monitoring": {
"Enabled": true
},
"SubnetId": "",
"DisableApiTermination": true,
"InstanceInitiatedShutdownBehavior": "",
"PrivateIpAddress": "",
"ClientToken": "",
"AdditionalInfo": "",
"NetworkInterfaces": [
{
"NetworkInterfaceId": "",
"DeviceIndex": 0,
"SubnetId": "",
"Description": "",
"PrivateIpAddress": "",
"Groups": [
""
],
"DeleteOnTermination": true,
"PrivateIpAddresses": [

112
AWS Command Line Interface Guía del usuario
Generar una plantilla de esqueleto de la CLI

{
"PrivateIpAddress": "",
"Primary": true
}
],
"SecondaryPrivateIpAddressCount": 0,
"AssociatePublicIpAddress": true
}
],
"IamInstanceProfile": {
"Arn": "",
"Name": ""
},
"EbsOptimized": true
}

YAML

En el ejemplo siguiente, se muestra cómo se genera una plantilla con formato YAML utilizando el valor
yaml-input en el parámetro --generate-cli-skeleton.

$ aws ec2 run-instances --generate-cli-skeleton yaml-input

BlockDeviceMappings: # The block device mapping entries.


- DeviceName: '' # The device name (for example, /dev/sdh or xvdh).
VirtualName: '' # The virtual device name (ephemeralN).
Ebs: # Parameters used to automatically set up Amazon EBS volumes when the instance
is launched.
DeleteOnTermination: true # Indicates whether the EBS volume is deleted on
instance termination.
Iops: 0 # The number of I/O operations per second (IOPS) that the volume supports.
SnapshotId: '' # The ID of the snapshot.
VolumeSize: 0 # The size of the volume, in GiB.
VolumeType: st1 # The volume type. Valid values are: standard, io1, gp2, sc1, st1.
Encrypted: true # Indicates whether the encryption state of an EBS volume is
changed while being restored from a backing snapshot.
KmsKeyId: '' # Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer
managed CMK under which the EBS volume is encrypted.
NoDevice: '' # Suppresses the specified device included in the block device mapping
of the AMI.
ImageId: '' # The ID of the AMI.
InstanceType: c4.4xlarge # The instance type. Valid values are: t1.micro, t2.nano,
t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge, t3.nano, t3.micro,
t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge, t3a.nano, t3a.micro, t3a.small,
t3a.medium, t3a.large, t3a.xlarge, t3a.2xlarge, m1.small, m1.medium, m1.large,
m1.xlarge, m3.medium, m3.large, m3.xlarge, m3.2xlarge, m4.large, m4.xlarge,
m4.2xlarge, m4.4xlarge, m4.10xlarge, m4.16xlarge, m2.xlarge, m2.2xlarge, m2.4xlarge,
cr1.8xlarge, r3.large, r3.xlarge, r3.2xlarge, r3.4xlarge, r3.8xlarge, r4.large,
r4.xlarge, r4.2xlarge, r4.4xlarge, r4.8xlarge, r4.16xlarge, r5.large, r5.xlarge,
r5.2xlarge, r5.4xlarge, r5.8xlarge, r5.12xlarge, r5.16xlarge, r5.24xlarge, r5.metal,
r5a.large, r5a.xlarge, r5a.2xlarge, r5a.4xlarge, r5a.8xlarge, r5a.12xlarge,
r5a.16xlarge, r5a.24xlarge, r5d.large, r5d.xlarge, r5d.2xlarge, r5d.4xlarge,
r5d.8xlarge, r5d.12xlarge, r5d.16xlarge, r5d.24xlarge, r5d.metal, r5ad.large,
r5ad.xlarge, r5ad.2xlarge, r5ad.4xlarge, r5ad.8xlarge, r5ad.12xlarge, r5ad.16xlarge,
r5ad.24xlarge, x1.16xlarge, x1.32xlarge, x1e.xlarge, x1e.2xlarge, x1e.4xlarge,
x1e.8xlarge, x1e.16xlarge, x1e.32xlarge, i2.xlarge, i2.2xlarge, i2.4xlarge,
i2.8xlarge, i3.large, i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge, i3.16xlarge,
i3.metal, i3en.large, i3en.xlarge, i3en.2xlarge, i3en.3xlarge, i3en.6xlarge,
i3en.12xlarge, i3en.24xlarge, i3en.metal, hi1.4xlarge, hs1.8xlarge, c1.medium,
c1.xlarge, c3.large, c3.xlarge, c3.2xlarge, c3.4xlarge, c3.8xlarge, c4.large,
c4.xlarge, c4.2xlarge, c4.4xlarge, c4.8xlarge, c5.large, c5.xlarge, c5.2xlarge,
c5.4xlarge, c5.9xlarge, c5.12xlarge, c5.18xlarge, c5.24xlarge, c5.metal, c5d.large,
c5d.xlarge, c5d.2xlarge, c5d.4xlarge, c5d.9xlarge, c5d.18xlarge, c5n.large,

113
AWS Command Line Interface Guía del usuario
Generar una plantilla de esqueleto de la CLI

c5n.xlarge, c5n.2xlarge, c5n.4xlarge, c5n.9xlarge, c5n.18xlarge, cc1.4xlarge,


cc2.8xlarge, g2.2xlarge, g2.8xlarge, g3.4xlarge, g3.8xlarge, g3.16xlarge, g3s.xlarge,
g4dn.xlarge, g4dn.2xlarge, g4dn.4xlarge, g4dn.8xlarge, g4dn.12xlarge, g4dn.16xlarge,
cg1.4xlarge, p2.xlarge, p2.8xlarge, p2.16xlarge, p3.2xlarge, p3.8xlarge, p3.16xlarge,
p3dn.24xlarge, d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge, f1.2xlarge, f1.4xlarge,
f1.16xlarge, m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge, m5.8xlarge, m5.12xlarge,
m5.16xlarge, m5.24xlarge, m5.metal, m5a.large, m5a.xlarge, m5a.2xlarge, m5a.4xlarge,
m5a.8xlarge, m5a.12xlarge, m5a.16xlarge, m5a.24xlarge, m5d.large, m5d.xlarge,
m5d.2xlarge, m5d.4xlarge, m5d.8xlarge, m5d.12xlarge, m5d.16xlarge, m5d.24xlarge,
m5d.metal, m5ad.large, m5ad.xlarge, m5ad.2xlarge, m5ad.4xlarge, m5ad.8xlarge,
m5ad.12xlarge, m5ad.16xlarge, m5ad.24xlarge, h1.2xlarge, h1.4xlarge, h1.8xlarge,
h1.16xlarge, z1d.large, z1d.xlarge, z1d.2xlarge, z1d.3xlarge, z1d.6xlarge,
z1d.12xlarge, z1d.metal, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, u-18tb1.metal,
u-24tb1.metal, a1.medium, a1.large, a1.xlarge, a1.2xlarge, a1.4xlarge, a1.metal,
m5dn.large, m5dn.xlarge, m5dn.2xlarge, m5dn.4xlarge, m5dn.8xlarge, m5dn.12xlarge,
m5dn.16xlarge, m5dn.24xlarge, m5n.large, m5n.xlarge, m5n.2xlarge, m5n.4xlarge,
m5n.8xlarge, m5n.12xlarge, m5n.16xlarge, m5n.24xlarge, r5dn.large, r5dn.xlarge,
r5dn.2xlarge, r5dn.4xlarge, r5dn.8xlarge, r5dn.12xlarge, r5dn.16xlarge, r5dn.24xlarge,
r5n.large, r5n.xlarge, r5n.2xlarge, r5n.4xlarge, r5n.8xlarge, r5n.12xlarge,
r5n.16xlarge, r5n.24xlarge.
Ipv6AddressCount: 0 # [EC2-VPC] The number of IPv6 addresses to associate with the
primary network interface.
Ipv6Addresses: # [EC2-VPC] The IPv6 addresses from the range of the subnet to associate
with the primary network interface.
- Ipv6Address: '' # The IPv6 address.
KernelId: '' # The ID of the kernel.
KeyName: '' # The name of the key pair.
MaxCount: 0 # [REQUIRED] The maximum number of instances to launch.
MinCount: 0 # [REQUIRED] The minimum number of instances to launch.
Monitoring: # Specifies whether detailed monitoring is enabled for the instance.
Enabled: true # [REQUIRED] Indicates whether detailed monitoring is enabled.
Placement: # The placement for the instance.
AvailabilityZone: '' # The Availability Zone of the instance.
Affinity: '' # The affinity setting for the instance on the Dedicated Host.
GroupName: '' # The name of the placement group the instance is in.
PartitionNumber: 0 # The number of the partition the instance is in.
HostId: '' # The ID of the Dedicated Host on which the instance resides.
Tenancy: dedicated # The tenancy of the instance (if the instance is running in a
VPC). Valid values are: default, dedicated, host.
SpreadDomain: '' # Reserved for future use.
RamdiskId: '' # The ID of the RAM disk to select.
SecurityGroupIds: # The IDs of the security groups.
- ''
SecurityGroups: # [EC2-Classic, default VPC] The names of the security groups.
- ''
SubnetId: '' # [EC2-VPC] The ID of the subnet to launch the instance into.
UserData: '' # The user data to make available to the instance.
AdditionalInfo: '' # Reserved.
ClientToken: '' # Unique, case-sensitive identifier you provide to ensure the
idempotency of the request.
DisableApiTermination: true # If you set this parameter to true, you can't terminate
the instance using the Amazon EC2 console, CLI, or API; otherwise, you can.
DryRun: true # Checks whether you have the required permissions for the action, without
actually making the request, and provides an error response.
EbsOptimized: true # Indicates whether the instance is optimized for Amazon EBS I/O.
IamInstanceProfile: # The IAM instance profile.
Arn: '' # The Amazon Resource Name (ARN) of the instance profile.
Name: '' # The name of the instance profile.
InstanceInitiatedShutdownBehavior: stop # Indicates whether an instance stops or
terminates when you initiate shutdown from the instance (using the operating system
command for system shutdown). Valid values are: stop, terminate.
NetworkInterfaces: # The network interfaces to associate with the instance.
- AssociatePublicIpAddress: true # Indicates whether to assign a public IPv4 address
to an instance you launch in a VPC.
DeleteOnTermination: true # If set to true, the interface is deleted when the
instance is terminated.

114
AWS Command Line Interface Guía del usuario
Generar una plantilla de esqueleto de la CLI

Description: '' # The description of the network interface.


DeviceIndex: 0 # The position of the network interface in the attachment order.
Groups: # The IDs of the security groups for the network interface.
- ''
Ipv6AddressCount: 0 # A number of IPv6 addresses to assign to the network interface.
Ipv6Addresses: # One or more IPv6 addresses to assign to the network interface.
- Ipv6Address: '' # The IPv6 address.
NetworkInterfaceId: '' # The ID of the network interface.
PrivateIpAddress: '' # The private IPv4 address of the network interface.
PrivateIpAddresses: # One or more private IPv4 addresses to assign to the network
interface.
- Primary: true # Indicates whether the private IPv4 address is the primary private
IPv4 address.
PrivateIpAddress: '' # The private IPv4 addresses.
SecondaryPrivateIpAddressCount: 0 # The number of secondary private IPv4 addresses.
SubnetId: '' # The ID of the subnet associated with the network interface.
InterfaceType: '' # The type of network interface.
PrivateIpAddress: '' # [EC2-VPC] The primary IPv4 address.
ElasticGpuSpecification: # An elastic GPU to associate with the instance.
- Type: '' # [REQUIRED] The type of Elastic Graphics accelerator.
ElasticInferenceAccelerators: # An elastic inference accelerator to associate with the
instance.
- Type: '' # [REQUIRED] The type of elastic inference accelerator.
TagSpecifications: # The tags to apply to the resources during launch.
- ResourceType: network-interface # The type of resource to tag. Valid values are:
client-vpn-endpoint, customer-gateway, dedicated-host, dhcp-options, elastic-ip,
fleet, fpga-image, host-reservation, image, instance, internet-gateway, launch-
template, natgateway, network-acl, network-interface, reserved-instances, route-table,
security-group, snapshot, spot-instances-request, subnet, traffic-mirror-filter,
traffic-mirror-session, traffic-mirror-target, transit-gateway, transit-gateway-
attachment, transit-gateway-route-table, volume, vpc, vpc-peering-connection, vpn-
connection, vpn-gateway.
Tags: # The tags to apply to the resource.
- Key: '' # The key of the tag.
Value: '' # The value of the tag.
LaunchTemplate: # The launch template to use to launch the instances.
LaunchTemplateId: '' # The ID of the launch template.
LaunchTemplateName: '' # The name of the launch template.
Version: '' # The version number of the launch template.
InstanceMarketOptions: # The market (purchasing) option for the instances.
MarketType: spot # The market type. Valid values are: spot.
SpotOptions: # The options for Spot Instances.
MaxPrice: '' # The maximum hourly price you're willing to pay for the Spot
Instances.
SpotInstanceType: one-time # The Spot Instance request type. Valid values are: one-
time, persistent.
BlockDurationMinutes: 0 # The required duration for the Spot Instances (also known
as Spot blocks), in minutes.
ValidUntil: 1970-01-01 00:00:00 # The end date of the request.
InstanceInterruptionBehavior: terminate # The behavior when a Spot Instance is
interrupted. Valid values are: hibernate, stop, terminate.
CreditSpecification: # The credit option for CPU usage of the T2 or T3 instance.
CpuCredits: '' # [REQUIRED] The credit option for CPU usage of a T2 or T3 instance.
CpuOptions: # The CPU options for the instance.
CoreCount: 0 # The number of CPU cores for the instance.
ThreadsPerCore: 0 # The number of threads per CPU core.
CapacityReservationSpecification: # Information about the Capacity Reservation
targeting option.
CapacityReservationPreference: none # Indicates the instance's Capacity Reservation
preferences. Valid values are: open, none.
CapacityReservationTarget: # Information about the target Capacity Reservation.
CapacityReservationId: '' # The ID of the Capacity Reservation.
HibernationOptions: # Indicates whether an instance is enabled for hibernation.
Configured: true # If you set this parameter to true, your instance is enabled for
hibernation.
LicenseSpecifications: # The license configurations.

115
AWS Command Line Interface Guía del usuario
Generar una plantilla de esqueleto de la CLI

- LicenseConfigurationArn: '' # The Amazon Resource Name (ARN) of the license


configuration.

Para generar y utilizar un archivo de esqueleto de parámetros

1. Ejecute el comando con el parámetro --generate-cli-skeleton para producir la salida en


formato JSON o YAML y dirigirla a un archivo para guardarla.

JSON

$ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json

YAML

$ aws ec2 run-instances --generate-cli-skeleton yaml-input > ec2runinst.yaml

2. Abra el archivo de esqueleto de parámetros en el editor de texto y quite todos los parámetros que no
necesite. Por ejemplo, puede reducir la plantilla hasta dejarla tal y como se muestra a continuación.
Asegúrese de que el código JSON o YAML del archivo sigue siendo válido después de eliminar los
elementos que no necesita.

JSON

{
"DryRun": true,
"ImageId": "",
"KeyName": "",
"SecurityGroups": [
""
],
"InstanceType": "",
"Monitoring": {
"Enabled": true
}
}

YAML

DryRun: true
ImageId: ''
KeyName: ''
SecurityGroups:
- ''
InstanceType:
Monitoring:
Enabled: true

En este ejemplo, dejaremos laDryRunparámetro establecido entruepara utilizar la función de


ejecución en seco de Amazon EC2. Esta característica le permite probar el comando de forma segura
sin crear ni modificar ningún recurso.
3. Rellene los valores restantes con valores adecuados para su escenario. En este ejemplo,
proporcionamos el tipo de instancia, el nombre de la clave, el grupo de seguridad y el identificador
de la imagen de Amazon Machine (AMI) que vamos a utilizar. En este ejemplo, se presupone que
la región apropiada es la región de AWS predeterminada. La AMIami-dfc39aefes una imagen
de Amazon Linux de 64 bits alojada en laus-west-2Región . Si utiliza una región diferente, debe
encontrar el ID apropiado de la AMI que desea utilizar.

116
AWS Command Line Interface Guía del usuario
Generar una plantilla de esqueleto de la CLI

JSON

{
"DryRun": true,
"ImageId": "ami-dfc39aef",
"KeyName": "mykey",
"SecurityGroups": [
"my-sg"
],
"InstanceType": "t2.micro",
"Monitoring": {
"Enabled": true
}
}

YAML

DryRun: true
ImageId: 'ami-dfc39aef'
KeyName: 'mykey'
SecurityGroups:
- 'my-sg'
InstanceType: 't2.micro'
Monitoring:
Enabled: true

4. Ejecute el comando con los parámetros completados pasando el archivo de plantilla relleno al
parámetro --cli-input-json o --cli-input-yaml utilizando el prefijo file://. La AWS CLI
interpreta la ruta como una ruta relativa al directorio de trabajo actual, por lo que el siguiente ejemplo,
en el que solo aparece el nombre de archivo y no la ruta, buscará el archivo directamente en el
directorio de trabajo actual.

JSON

$ aws ec2 run-instances --cli-input-json file://ec2runinst.json

A client error (DryRunOperation) occurred when calling the RunInstances operation:


Request would have succeeded, but DryRun flag is set.

YAML

$ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml

A client error (DryRunOperation) occurred when calling the RunInstances operation:


Request would have succeeded, but DryRun flag is set.

El error del simulacro indica que el código JSON o YAML está formado correctamente y que los
valores de los parámetros son válidos. Si se informa de cualquier otro problema en la salida, corríjalo y
repita el paso anterior hasta que aparezca el mensaje "Request would have succeeded".
5. Ahora puede establecer el parámetro DryRun en false para deshabilitar el simulacro.

JSON

{
"DryRun": false,

117
AWS Command Line Interface Guía del usuario
Sintaxis abreviada

"ImageId": "ami-dfc39aef",
"KeyName": "mykey",
"SecurityGroups": [
"my-sg"
],
"InstanceType": "t2.micro",
"Monitoring": {
"Enabled": true
}
}

YAML

DryRun: false
ImageId: 'ami-dfc39aef'
KeyName: 'mykey'
SecurityGroups:
- 'my-sg'
InstanceType: 't2.micro'
Monitoring:
Enabled: true

6. Ejecute el comando yrun-instancesEn realidad, se lanza una instancia de Amazon EC2 y se


muestran los detalles generados por el lanzamiento correcto. El parámetro --output controla el
formato de salida, independientemente del formato de la plantilla de parámetros de entrada.

JSON

$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json

{
"OwnerId": "123456789012",
"ReservationId": "r-d94a2b1",
"Groups": [],
"Instances": [
...

YAML

$ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml --output yaml

OwnerId: '123456789012'
ReservationId: 'r-d94a2b1',
Groups":
- ''
Instances:
...

Uso de sintaxis abreviada con la AWS CLI


La AWS Command Line Interface (AWS CLI) puede aceptar muchos de sus parámetros de opciones en
formato JSON. Sin embargo, resultaría tedioso escribir largas listas o estructuras de JSON en la línea
de comandos. Para simplificarlo, la AWS CLI también admite una sintaxis abreviada que permite una
representación de los parámetros de opciones más sencilla que si se usara el formato JSON íntegro.

118
AWS Command Line Interface Guía del usuario
Sintaxis abreviada

Parámetros estructurales
La sintaxis abreviada de la AWS CLI facilita a los usuarios la introducción de parámetros planos (con
estructuras no anidadas). El formato consiste en una lista de pares de clave-valor separados por comas.

Linux o macOS

--option key1=value1,key2=value2,key3=value3

PowerShell

--option "key1=value1,key2=value2,key3=value3"

Ambos equivalen al siguiente ejemplo con formato JSON.

--option '{"key1":"value1","key2":"value2","key3":"value3"}'

No debe haber espacios en blanco entre cada uno de los pares de clave-valor separados por comas.
A continuación se muestra un ejemplo de Amazon DynamoDBupdate-tableComando de la--
provisioned-throughputespecificada en taquigrafía.

$ aws dynamodb update-table \


--provisioned-throughput ReadCapacityUnits=15,WriteCapacityUnits=10 \
--table-name MyDDBTable

Esto equivale al siguiente ejemplo con formato JSON.

$ aws dynamodb update-table \


--provisioned-throughput '{"ReadCapacityUnits":15,"WriteCapacityUnits":10}' \
--table-name MyDDBTable

Uso de sintaxis abreviada con la AWS Command Line Interface


Puede especificar los parámetros de entrada en una lista de dos formas: JSON o taquigrafía. La sintaxis
abreviada de la AWS CLI ha sido diseñada para que su inserción en listas con números, cadenas o
estructuras no anidadas resulte más sencilla.

A continuación se muestra el formato básico, en el que los valores de la lista están separados por un único
espacio.

--option value1 value2 value3

Esto equivale al siguiente ejemplo con formato JSON.

--option '[value1,value2,value3]'

Como ya hemos mencionado anteriormente, puede especificar una lista de números, una lista de cadenas
o una lista de estructuras no anidadas en formato abreviado. A continuación se muestra un ejemplo
destop-instancesPara Amazon Elastic Compute Cloud (Amazon EC2), en el que el parámetro de
entrada (lista de cadenas) para el comando--instance-idsse especifica en taquigrafía.

$ aws ec2 stop-instances \


--instance-ids i-1486157a i-1286157c i-ec3a7e87

119
AWS Command Line Interface Guía del usuario
Preguntar automáticamente

Esto equivale al siguiente ejemplo con formato JSON.

$ aws ec2 stop-instances \


--instance-ids '["i-1486157a","i-1286157c","i-ec3a7e87"]'

En el siguiente ejemplo Amazon EC2 lacreate-tags, que toma una lista de estructuras no anidadas para
el comando--tagsopción. La opción --resources especifica el identificador de la instancia que debe
etiquetarse.

$ aws ec2 create-tags \


--resources i-1286157c \
--tags Key=My1stTag,Value=Value1 Key=My2ndTag,Value=Value2 Key=My3rdTag,Value=Value3

Esto equivale al siguiente ejemplo con formato JSON. El parámetro JSON está escrito en varias líneas
para facilitar su lectura.

$ aws ec2 create-tags \


--resources i-1286157c \
--tags '[
{"Key": "My1stTag", "Value": "Value1"},
{"Key": "My2ndTag", "Value": "Value2"},
{"Key": "My3rdTag", "Value": "Value3"}
]'

Con laAWS CLIsolicitarle comandos


Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible si


ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2, consulte
Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Puede utilizarAWS CLIversión 2 le pedirá comandos, parámetros y recursos cuando ejecute


unawscomando de.

Temas
• Cómo funciona (p. 120)
• Funciones de autopetición (p. 121)
• Modos de indicación automática (p. 123)
• Configurar mensaje automático (p. 123)

Cómo funciona
Si está habilitada, el mensaje automático le permite utilizar la funciónESCRIBApara completar un
comando introducido parcialmente. Después de presionar el botónESCRIBA, comandos, parámetros y
recursos se sugieren en función de lo que siga escribiendo. Las sugerencias muestran el nombre del
comando, parámetro o recurso a la izquierda y una descripción del mismo a la derecha. Para seleccionar
y utilizar una sugerencia, utilice las teclas de flechas para resaltar una fila y, a continuación, presione la
teclaESPACIOUna clave de. Cuando haya terminado de ingresar en el comando, presioneESCRIBAPara
utilizar el comando. En el siguiente ejemplo se muestra cómo se ve una lista sugerida de auto-prompt.

$ aws
> aws a

120
AWS Command Line Interface Guía del usuario
Funciones de autopetición

accessanalyzer Access Analyzer


acm AWS Certificate Manager
acm-pca AWS Certificate Manager Private Certificate Authority
alexaforbusiness Alexa For Business
amplify AWS Amplify

Funciones de autopetición
El mensaje automático contiene las siguientes características útiles:

Panel de documentación:

Proporciona la documentación de ayuda del comando actual. Para abrir la documentación, presione la
teclaF3Una clave de.
Finalización de comandos

Sugerenciasawscomandos que se van a utilizar. Para ver una lista, ingrese parcialmente el comando.
En el siguiente ejemplo se busca un servicio que comience con la letraa.

$ aws
> aws a
accessanalyzer Access Analyzer
acm AWS Certificate Manager
acm-pca AWS Certificate Manager Private Certificate
Authority
alexaforbusiness Alexa For Business
amplify AWS Amplify

Finalización de parámetros

Después de escribir un comando, el símbolo automático comienza a sugerir parámetros. Las


descripciones de los parámetros incluyen el tipo de valor y una descripción del parámetro. Los
parámetros necesarios se enumeran primero y se etiquetan como necesarios. En el siguiente ejemplo
se muestra la lista automática de parámetros paraaws dynamodb describe-table.

$ aws dynamodb describe-table


> aws dynamodb describe-table
--table-name (required) [string] The name of the table
to describe.
--cli-input-json [string] Reads arguments from
the JSON string provided. The JSON string follows the format provide...
--cli-input-yaml [string] Reads arguments from
the YAML string provided. The YAML string follows the format provide...
--generate-cli-skeleton [string] Prints a JSON skeleton
to standard output without sending an API request. If provided wit...

Finalización de recursos

El mensaje automático realiza llamadas a la API de AWS utilizando las propiedades de recursos de
AWS disponibles para sugerir valores de recursos. Esto permite que el mensaje automático sugiera
posibles recursos que posee al introducir parámetros. En el siguiente ejemplo, el mensaje automático
muestra los nombres de las tablas al rellenar el--table-nameParámetro para el parámetro deaws
dynamodb describe-tablecomando de.

$ aws dynamodb describe-table


> aws dynamodb describe-table --table-name
Table1
Table2
Table3

121
AWS Command Line Interface Guía del usuario
Funciones de autopetición

Completación abreviada

Para los parámetros que utilizan sintaxis abreviada, el indicador automático sugiere valores a utilizar.
En el ejemplo siguiente, el indicador automático muestra los valores de sintaxis abreviada para el
parámetro--placementParámetro en el parámetro deaws ec2 run-stancescomando de.

$ aws ec2 run-instances


> aws ec2 run-instances --placement
AvailabilityZone= [string] The Availability Zone of the instance. If not
specified, an Availability Zone wil...
Affinity= [string] The affinity setting for the instance on the Dedicated
Host. This parameter is no...
GroupName= [string] The name of the placement group the instance is in.
PartitionNumber= [integer] The number of the partition the instance is in. Valid
only if the placement grou...

Finalización del archivo

Al rellenar parámetros enaws, autocompletar sugiere nombres de archivo locales después de usar el
prefijofile://orfileb://. En el siguiente ejemplo, el mensaje automático sugiere archivos locales
después de ingresar en--item file://para laaws ec2 run-instancescomando de.

$ aws ec2 run-instances


> aws ec2 run-instances --item file://
item1.txt
file1.json
file2.json

Finalización de región

Cuando se utiliza el parámetro global--region, el mensaje automático muestra las regiones posibles
para seleccionar. En el siguiente ejemplo, el indicador automático sugiere regiones en orden alfabético
después de escribir en--regionpara laaws dynamodb list-tablescomando de.

$ aws dynamodb list-tables


> aws dynamodb list-tables --region
af-south-1
ap-east-1
ap-northeast-1
ap-northeast-2

Finalización del perfil

Cuando se utiliza el parámetro global--profile, automáticamente se muestra una lista de


sus perfiles. En el siguiente ejemplo, autoprompt sugiere sus perfiles después de ingresar en--
profilepara laaws dynamodb list-tablescomando de.

$ aws dynamodb list-tables


> aws dynamodb list-tables --profile
profile1
profile2
profile3

Búsqueda aproximada

Completar comandos y valores que contienen un conjunto específico de caracteres. En el siguiente


ejemplo, el indicador automático sugiere regiones que contieneneudespués de entrar--region
eupara laaws dynamodb list-tablescomando de.

122
AWS Command Line Interface Guía del usuario
Modos de indicación automática

$ aws dynamodb list-tables


> aws dynamodb list-tables --region west
eu-west-1
eu-west-2
eu-west-3
us-west-1

Historial

Para ver y ejecutar comandos utilizados anteriormente en el modo de solicitud automática,


presioneCTRL + R. El historial muestra los comandos anteriores que puede seleccionar mediante las
teclas de flecha. En el ejemplo siguiente, se muestra el historial del modo de solicitud automática.

$ aws
> aws
dynamodb list-tables
s3 ls

Modos de indicación automática


Preguntar automáticamente para elAWS CLIversión 2 tiene 2 modos que se pueden configurar:

• Modo completo: Utiliza el mensaje automático cada vez que intenta ejecutar unaws, ya sea que lo llame
manualmente usando el comando--cli-auto-prompto lo habilitó permanentemente. Esto incluye
presionarESCRIBAdespués de un comando completo o un comando incompleto.
• Modo parcial: Utiliza autoprompt si un comando está incompleto o no se puede ejecutar debido a
errores de validación del lado del cliente. Este modo es especialmente útil si tiene scripts preexistentes,
runbooks, o sólo desea que se le pregunte automáticamente para los comandos con los que no está
familiarizado en lugar de solicitarse en cada comando.

Configurar mensaje automático


Para configurar el mensaje automático, puede utilizar los siguientes métodos en orden de prioridad:

• Opciones de línea de comandosHabilitar o deshabilitar la solicitud automática para un único


comando. Usar--cli-auto-prompt (p. 76)para llamar a autoprompt y--no-cli-auto-
prompt (p. 77)Para deshabilitar el mensaje automático.
• Environment variables (Variables de entorno):Usaraws_cli_auto_prompt (p. 73)variable.
• Archivos de configuración compartidosUsarcli_auto_prompt (p. 55)configuración de
configuración.

Control de la salida de comandos desde la AWS


CLI
En esta sección se describen las diferentes formas de controlar la salida desde laAWS Command Line
Interface(AWS CLI).

Temas
• Establecimiento de laAWS CLIFormato de salida (p. 124)
• Uso de las opciones de paginación de la AWS CLI (p. 130)

123
AWS Command Line Interface Guía del usuario
Output Format (Formato de salida)

• FiltradoAWS CLIsalida (p. 134)

Establecimiento de laAWS CLIFormato de salida


En este tema se describen los diferentes formatos de salida para laAWS Command Line Interface(AWS
CLI). LaAWS CLIadmite los siguientes formatos de salida:

• json (p. 125)— La salida está formateada comoJSONCadena.


• yaml (p. 125)— La salida está formateada comoYAMLCadena. (está disponible en.AWS CLIVersión
2).
• yaml-stream (p. 126)— La salida es transmitida y formateada comoYAMLCadena. La transmisión
permite un manejo más rápido de tipos de datos de gran tamaño. (está disponible en.AWS CLIVersión
2).
• text (p. 127)— La salida tiene el formato de varias líneas de valores de cadena separados por
tabuladores. Esto puede ser útil para pasar la salida a un procesador de texto, comogrep,sed, o
bienawk.
• table (p. 129)La salida tiene el formato de una tabla mediante los caracteres +|- para formar los
bordes de celda. Normalmente, la información se presenta en un formato que es más fácil de leer que
los demás formatos, pero que no es útil para programar.

Temas
• Cómo seleccionar el formato de salida (p. 124)
• Formato de salida JSON (p. 125)
• Formato de salida YAML (p. 125)
• Formato de salida YAML (p. 126)
• Formato de salida de texto (p. 127)
• Formato de salida de tabla (p. 129)

Cómo seleccionar el formato de salida


Tal como se explica en el tema de configuración (p. 47), el formato de salida se puede especificar de tres
formas diferentes:

• Mediante laoutputen un perfil con nombre en laconfigfileEl siguiente ejemplo establece el formato de
la salida predeterminada comotext.

[default]
output=text

• Mediante laAWS_DEFAULT_OUTPUTvariable de entorno— El siguiente resultado establece el formato


entablePara obtener los comandos de esta sesión de línea de comandos hasta que se cambie la
variable o finalice la sesión. Con esta variable de entorno, se invalida cualquier valor establecido en el
archivo config.

$ export AWS_DEFAULT_OUTPUT="table"

• Mediante la--outputen la línea de comandosEl siguiente ejemplo establece la salida de solo este
comando comojson. El uso de esta opción en el comando anula cualquier variable de entorno definida
actualmente o el valor en el archivo config.

$ aws swf list-domains --registration-status REGISTERED --output json

124
AWS Command Line Interface Guía del usuario
Output Format (Formato de salida)

Formato de salida JSON


JSON es el formato de salida predeterminado de la AWS CLI. La mayoría de lenguajes de programación
pueden decodificar fácilmente cadenas JSON con funciones integradas o con bibliotecas disponibles
públicamente. Puede combinar la salida JSON con la opción —query (p. 134) de una forma eficaz para
aplicar filtros y formato a la salida JSON de la AWS CLI.

Para aplicar un filtrado más avanzado que el que permite --query, considere la posibilidad de utilizar
jq, un procesador JSON de línea de comandos. Puede descargarlo y consultar el tutorial oficial en http://
stedolan.github.io/jq/.

A continuación, se muestra un ejemplo de una salida JSON:

$ aws iam list-users --output json

{
"Users": [
{
"Path": "/",
"UserName": "Admin",
"UserId": "AIDA1111111111EXAMPLE",
"Arn": "arn:aws:iam::123456789012:user/Admin",
"CreateDate": "2014-10-16T16:03:09+00:00",
"PasswordLastUsed": "2016-06-03T18:37:29+00:00"
},
{
"Path": "/backup/",
"UserName": "backup-user",
"UserId": "AIDA2222222222EXAMPLE",
"Arn": "arn:aws:iam::123456789012:user/backup/backup-user",
"CreateDate": "2019-09-17T19:30:40+00:00"
},
{
"Path": "/",
"UserName": "cli-user",
"UserId": "AIDA3333333333EXAMPLE",
"Arn": "arn:aws:iam::123456789012:user/cli-user",
"CreateDate": "2019-09-17T19:11:39+00:00"
}
]
}

Formato de salida YAML


Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible si


ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2, consulte
Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

YAML es una buena opción para administrar la salida mediante programación con herramientas y servicios
que emiten o consumen cadenas con formato YAML, como AWS CloudFormation, que admite plantillas
con formato YAML.

Para aplicar un filtrado más avanzado que el que permite --query, considere la posibilidad de utilizar
yq, un procesador YAML de línea de comandos. Puede descargarlo y buscar documentación en https://
mikefarah.gitbook.io/yq/.

A continuación, se muestra un ejemplo de una salida YAML.

125
AWS Command Line Interface Guía del usuario
Output Format (Formato de salida)

$ aws iam list-users --output yaml

Users:
- Arn: arn:aws:iam::123456789012:user/Admin
CreateDate: '2014-10-16T16:03:09+00:00'
PasswordLastUsed: '2016-06-03T18:37:29+00:00'
Path: /
UserId: AIDA1111111111EXAMPLE
UserName: Admin
- Arn: arn:aws:iam::123456789012:user/backup/backup-user
CreateDate: '2019-09-17T19:30:40+00:00'
Path: /backup/
UserId: AIDA2222222222EXAMPLE
UserName: arq-45EFD6D1-CE56-459B-B39F-F9C1F78FBE19
- Arn: arn:aws:iam::123456789012:user/cli-user
CreateDate: '2019-09-17T19:30:40+00:00'
Path: /
UserId: AIDA3333333333EXAMPLE
UserName: cli-user

Formato de salida YAML


Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible si


ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2, consulte
Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

Layaml-streamEl formato aprovecha laYAMLal tiempo que proporciona una visualización más receptiva/
más rápida de conjuntos de datos grandes mediante la transmisión de los datos a usted. Puede comenzar
a ver y usar datos YAML antes de que se descargue toda la consulta.

Para aplicar un filtrado más avanzado que el que permite --query, considere la posibilidad de utilizar
yq, un procesador YAML de línea de comandos. Puede descargarlo y buscar documentación en http://
mikefarah.github.io/yq/.

A continuación se muestra un ejemplo de la salida de yaml-stream.

$ aws iam list-users --output yaml-stream

- IsTruncated: false
Users:
- Arn: arn:aws:iam::123456789012:user/Admin
CreateDate: '2014-10-16T16:03:09+00:00'
PasswordLastUsed: '2016-06-03T18:37:29+00:00'
Path: /
UserId: AIDA1111111111EXAMPLE
UserName: Admin
- Arn: arn:aws:iam::123456789012:user/backup/backup-user
CreateDate: '2019-09-17T19:30:40+00:00'
Path: /backup/
UserId: AIDA2222222222EXAMPLE
UserName: arq-45EFD6D1-CE56-459B-B39F-F9C1F78FBE19
- Arn: arn:aws:iam::123456789012:user/cli-user
CreateDate: '2019-09-17T19:30:40+00:00'
Path: /
UserId: AIDA3333333333EXAMPLE
UserName: cli-user

126
AWS Command Line Interface Guía del usuario
Output Format (Formato de salida)

A continuación se muestra un ejemplo deyaml-streamLa salida junto con el uso de la--page-sizepara


paginar el contenido de YAML transmitido.

$ aws iam list-users --output yaml-stream --page-size 2

- IsTruncated: true
Marker: ab1234cdef5ghi67jk8lmo9p/
q012rs3t445uv6789w0x1y2z/345a6b78c9d00/1efgh234ij56klmno78pqrstu90vwxyx
Users:
- Arn: arn:aws:iam::123456789012:user/Admin
CreateDate: '2014-10-16T16:03:09+00:00'
PasswordLastUsed: '2016-06-03T18:37:29+00:00'
Path: /
UserId: AIDA1111111111EXAMPLE
UserName: Admin
- Arn: arn:aws:iam::123456789012:user/backup/backup-user
CreateDate: '2019-09-17T19:30:40+00:00'
Path: /backup/
UserId: AIDA2222222222EXAMPLE
UserName: arq-45EFD6D1-CE56-459B-B39F-F9C1F78FBE19
- IsTruncated: false
Users:
- Arn: arn:aws:iam::123456789012:user/cli-user
CreateDate: '2019-09-17T19:30:40+00:00'
Path: /
UserId: AIDA3333333333EXAMPLE
UserName: cli-user

Formato de salida de texto


El formato text organiza la salida de la AWS CLI en líneas delimitadas por tabulaciones. Este formato
funciona bien con herramientas de texto tradicionales de Unix, como grep, sed y awk, así como con el
procesamiento de texto que realiza PowerShell.

El formato de salida de text sigue la estructura básica que se muestran a continuación. Las columnas se
ordenan alfabéticamente según los nombres de las claves correspondientes del objeto JSON subyacente.

IDENTIFIER sorted-column1 sorted-column2


IDENTIFIER2 sorted-column1 sorted-column2

A continuación se muestra un ejemplo de la salida de text. Cada campo está separado por tabulaciones
de los demás, con una tabulación adicional si hay un campo vacío.

$ aws iam list-users --output text

USERS arn:aws:iam::123456789012:user/Admin 2014-10-16T16:03:09+00:00


2016-06-03T18:37:29+00:00 / AIDA1111111111EXAMPLE Admin
USERS arn:aws:iam::123456789012:user/backup/backup-user 2019-09-17T19:30:40+00:00
/backup/ AIDA2222222222EXAMPLE backup-user
USERS arn:aws:iam::123456789012:user/cli-user 2019-09-17T19:11:39+00:00
/ AIDA3333333333EXAMPLE cli-user

La cuarta columna es el campo PasswordLastUsed y está vacía en las dos últimas entradas, ya que
esos usuarios nunca inician sesión en la AWS Management Console.
Important
Le recomendamos encarecidamente que si especifica una salida text, utilice siempre la opción
--query (p. 134) para garantizar un comportamiento coherente.

127
AWS Command Line Interface Guía del usuario
Output Format (Formato de salida)

Esto se debe a que el formato de texto ordena alfabéticamente las columnas de salida por el
nombre de la clave del objeto JSON subyacente que el servicio de AWS devuelve y podría haber
recursos similares con distintos nombres de clave. Por ejemplo, la representación JSON de una
instancia de Amazon EC2 basada en Linux podría tener elementos que no están presentes en la
representación JSON de una instancia basada en Windows, o viceversa. Además, los recursos
podrían tener elementos de valor de clave añadidos o eliminados en futuras actualizaciones,
alterando el orden de las columnas. Aquí es donde --query incrementa la funcionalidad de la
salida text para proporcionarle un control total sobre el formato de salida.
En el ejemplo siguiente, el comando especifica qué elementos se van a mostrar y define el orden
de las columnas con la notación en lista [key1, key2, ...]. Esto le ofrece la plena confianza
de que los valores de clave correctos se mostrarán siempre en la columna prevista. Por último,
tenga en cuenta que la AWS CLI devuelve el valor None para las claves que no existen.

$ aws iam list-users --output text --query 'Users[*].


[UserName,Arn,CreateDate,PasswordLastUsed,UserId]'

Admin arn:aws:iam::123456789012:user/Admin
2014-10-16T16:03:09+00:00 2016-06-03T18:37:29+00:00 AIDA1111111111EXAMPLE
backup-user arn:aws:iam::123456789012:user/backup-user
2019-09-17T19:30:40+00:00 None AIDA2222222222EXAMPLE
cli-user arn:aws:iam::123456789012:user/cli-backup
2019-09-17T19:11:39+00:00 None AIDA3333333333EXAMPLE

El siguiente ejemplo muestra cómo se puede usar grep y awk con la salida text del comando aws ec2
describe-instances. El primer comando muestra la zona de disponibilidad, el estado actual y el ID de
cada instancia en la salida text. El segundo comando procesa esa salida para mostrar únicamente los ID
de instancia de todas las instancias en ejecución en la zona de disponibilidad us-west-2a.

$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].


[Placement.AvailabilityZone, State.Name, InstanceId]' --output text

us-west-2a running i-4b41a37c


us-west-2a stopped i-a071c394
us-west-2b stopped i-97a217a0
us-west-2a running i-3045b007
us-west-2a running i-6fc67758

$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].


[Placement.AvailabilityZone, State.Name, InstanceId]' --output text | grep us-west-2a |
grep running | awk '{print $3}'

i-4b41a37c
i-3045b007
i-6fc67758

El siguiente ejemplo va un paso más allá y muestra no solo cómo filtrar el resultado, sino cómo utilizar esa
salida para automatizar los tipos de instancias cambiantes para cada instancia detenida.

$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].[State.Name,


InstanceId]' --output text |
> grep stopped |
> awk '{print $2}' |
> while read line;
> do aws ec2 modify-instance-attribute --instance-id $line --instance-type '{"Value":
"m1.medium"}';
> done

128
AWS Command Line Interface Guía del usuario
Output Format (Formato de salida)

La salida text también puede resultar útil en PowerShell. Como las columnas de la salida text están
delimitadas por tabulaciones, puede dividir fácilmente la salida en una matriz utilizando el delimitador `t
de PowerShell. El siguiente comando muestra el valor de la tercera columna (InstanceId) si la primera
columna (AvailabilityZone) coincide con la cadena us-west-2a.

PS C:\>aws ec2 describe-instances --query 'Reservations[*].Instances[*].


[Placement.AvailabilityZone, State.Name, InstanceId]' --output text |
%{if ($_.split("`t")[0] -match "us-west-2a") { $_.split("`t")[2]; } }

-4b41a37c
i-a071c394
i-3045b007
i-6fc67758

Tenga en cuenta que, aunque en el ejemplo anterior se muestra cómo utilizar el parámetro --query
para analizar los objetos JSON subyacentes y extraer la columna deseada, PowerShell dispone de una
funcionalidad propia para gestionar JSON si la compatibilidad entre plataformas no es un problema. En
lugar de tratar la salida como texto, como requieren la mayoría de los shells de comandos, PowerShell le
permite utilizar el cmdlet ConvertFrom-JSON para producir un objeto estructurado jerárquicamente. A
continuación, podrá acceder directamente al miembro que desee desde ese objeto.

(aws ec2 describe-instances --output json | ConvertFrom-


Json).Reservations.Instances.InstanceId

Tip

Si obtiene un texto en la salida y lo filtra con un solo campo utilizando el parámetro --query, la
salida será una sola línea de valores separados por tabuladores. Para obtener cada valor en una
línea independiente, puede colocar el campo de salida entre corchetes, tal y como se muestra en
los siguientes ejemplos.
Salida de una sola línea separada por tabuladores:

$ aws iam list-groups-for-user --user-name susan --output text --query


"Groups[].GroupName"

HRDepartment Developers SpreadsheetUsers LocalAdmins

Cada valor en su propia línea incluyendo [GroupName] entre corchetes:

$ aws iam list-groups-for-user --user-name susan --output text --query


"Groups[].[GroupName]"

HRDepartment
Developers
SpreadsheetUsers
LocalAdmins

Formato de salida de tabla


El formato table produce representaciones legibles para los humanos de la salida de la AWS CLI
compleja en forma de tabla.

$ aws iam list-users --output table

129
AWS Command Line Interface Guía del usuario
Paginación

-------------------------------------------------------------------------------------------------------
| ListUsers
|
+------------------------------------------------------------------------------------------------------
+
|| Users
||
|+----------------------------------------------------+---------------------------
+---------------------------+----------+-----------------------+-------------+|
|| Arn | CreateDate |
PasswordLastUsed | Path | UserId | UserName ||
|+----------------------------------------------------+---------------------------
+---------------------------+----------+-----------------------+-------------+|
|| arn:aws:iam::123456789012:user/Admin | 2014-10-16T16:03:09+00:00 |
2016-06-03T18:37:29+00:00 | / | AIDA1111111111EXAMPLE | Admin ||
|| arn:aws:iam::123456789012:user/backup/backup-user | 2019-09-17T19:30:40+00:00 |
| /backup/ | AIDA2222222222EXAMPLE | backup-user ||
|| arn:aws:iam::123456789012:user/cli-user | 2019-09-17T19:11:39+00:00 |
| / | AIDA3333333333EXAMPLE | cli-user ||
+------------------------------------------------------------------------------------------------------
+

Puede combinar la opción --query con el formato table para mostrar un conjunto de elementos
preseleccionados a partir de la salida en bruto. Observe las diferencias de la salida entre las notaciones de
diccionario y lista: en el primer ejemplo los nombres de columna están ordenados alfabéticamente, y en el
segundo ejemplo las columnas sin nombre se ordenan según lo definido por el usuario. Para obtener más
información acerca de la opción --query, consulte FiltradoAWS CLIsalida (p. 134).

$ aws ec2 describe-volumes --query 'Volumes[*].


{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output
table

------------------------------------------------------
| DescribeVolumes |
+------------+----------------+--------------+-------+
| AZ | ID | InstanceId | Size |
+------------+----------------+--------------+-------+
| us-west-2a| vol-e11a5288 | i-a071c394 | 30 |
| us-west-2a| vol-2e410a47 | i-4b41a37c | 8 |
+------------+----------------+--------------+-------+

$ aws ec2 describe-volumes --query 'Volumes[*].


[VolumeId,Attachments[0].InstanceId,AvailabilityZone,Size]' --output table

----------------------------------------------------
| DescribeVolumes |
+--------------+--------------+--------------+-----+
| vol-e11a5288| i-a071c394 | us-west-2a | 30 |
| vol-2e410a47| i-4b41a37c | us-west-2a | 8 |
+--------------+--------------+--------------+-----+

Uso de las opciones de paginación de la AWS CLI


En este tema se describen las diferentes formas de paginar la salida de laAWS Command Line
Interface(AWS CLI). Hay principalmente dos formas de controlar la paginación desde elAWS CLI.

• Uso de parámetros de paginación del lado del servidor. (p. 131)


• Uso del programa de paginación del lado del cliente de salida predeterminado (p. 132).

130
AWS Command Line Interface Guía del usuario
Paginación

Los parámetros de paginación del lado del servidor procesan primero y cualquier salida se envía a la
paginación del lado del cliente.

Paginación del lado del servidor


En el caso de los comandos que pueden devolver una gran lista de elementos, elAWS Command Line
Interface(AWS CLI) tiene varias opciones para controlar el número de elementos incluidos en la salida
cuando laAWS CLIllama a la API de un servicio para rellenar la lista.

• --no-paginate
• --page-size
• --max-items
• --starting-token

De forma predeterminada, la AWS CLI utiliza un tamaño de página de 1000 y recupera todos los
elementos disponibles. Por ejemplo, si ejecutaaws s3api list-objectsEn un bucket de Amazon
S3 que contiene 3500 objetos, laAWS CLILa hace automáticamente cuatro llamadas a Amazon S3,
gestionando por usted la lógica de paginación específica del servicio en segundo plano y devolviendo los
3500 objetos en la salida final.

Cómo usar el parámetro —no-paginate


Para deshabilitar la paginación y devolver sólo la primera página de resultados, utilice la herramienta--
no-paginateOpción. Cuando se utiliza un comando, de forma predeterminada, la opciónAWS CLIrealiza
automáticamente varias llamadas para devolver todos los resultados posibles para crear paginación. Una
llamada por cada página. La desactivación de la paginación tieneAWS CLIsolo llame una vez para la
primera página de resultados de comandos.

Por ejemplo, si ejecutaaws s3api list-objectsEn un bucket de Amazon S3 que contiene 3500
objetos, laAWS CLIsolo realiza la primera llamada a Amazon S3, devolviendo solo los primeros 1.000
objetos de la salida final.

$ aws s3api list-objects \


--bucket my-bucket \
--no-paginate
{
"Contents": [
...

Cómo usar el parámetro —page-size


Si observa algún problema al ejecutar los comandos de la lista en un gran número de recursos, el tamaño
de página predeterminado de 1000 puede ser demasiado grande. Esto puede provocar las llamadas a
los servicios de AWS para superar el tiempo máximo permitido y generar un error de "tiempo de espera
agotado". Puede utilizar la opción --page-size para especificar que la AWS CLI solicite un número
menor de elementos de cada llamada al servicio de AWS. LaAWS CLIrecupera aun así la lista completa,
pero realiza un mayor número de llamadas a la API en segundo plano y recupera un menor número de
elementos con cada llamada. Esto ofrece a las llamadas individuales una mayor posibilidad de que tengan
éxito sin que se agote el tiempo de espera. El cambio del tamaño de página no afecta a la salida; solo
afecta a la cantidad de llamadas a la API que hay que realizar para generar la salida.

$ aws s3api list-objects \


--bucket my-bucket \
--page-size 100
{
"Contents": [

131
AWS Command Line Interface Guía del usuario
Paginación

...

Cómo usar el parámetro —max-items


Para incluir menos elementos a la vez en la salida de la AWS CLI, utilice la opción --max-items. La AWS
CLI sigue administrando la paginación con el servicio tal y como se indicó anteriormente, pero solamente
muestra a la vez el número de elementos especificado.

$ aws s3api list-objects \


--bucket my-bucket \
--max-items 100
{
"NextToken": "eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==",
"Contents": [
...

Cómo usar el parámetro —starting-token


Si el número de elementos de salida (--max-items) es inferior al número total de elementos devueltos
por las llamadas básicas a la API, la salida incluirá un NextToken que podrá pasar a un comando
posterior para recuperar el siguiente conjunto de elementos. En el siguiente ejemplo se muestra cómo usar
el valor NextToken devuelto por el ejemplo anterior y le permite recuperar los segundos 100 elementos.
Note

El parámetro --starting-token no puede ser nulo ni está vacío. Si el comando anterior no


devuelve un valor NextToken, no hay más elementos para devolver y no es necesario llamar al
comando de nuevo.

$ aws s3api list-objects \


--bucket my-bucket \
--max-items 100 \
--starting-token eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==
{
"Contents": [
...

Puede que el servicio de AWS especificado no devuelva los elementos en el mismo orden cada vez
que lo llame. Si especifica diferentes valores para --page-size y --max-items, puede obtener
resultados inesperados en el que faltan elementos o están duplicados. Para evitar esto, utilice el mismo
número con --page-size y --max-items para sincronizar la paginación de la AWS CLI con la del
servicio subyacente. También puede recuperar la lista completa y realizar las operaciones de paginación
necesarias de forma local.

Buscapersonas del lado del cliente


Esta característica solo está disponible conAWS CLIVersión 2.

La característica siguiente está disponible solo si usaAWS CLIVersión 2. No está disponible si


ejecutaAWS CLIVersión 1. Para obtener información sobre cómo instalar la versión 2, consulte
Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

AWS CLILa versión 2 proporciona el uso de un programa de paginación del lado del cliente para la salida.
De forma predeterminada, esta función devuelve todas las salidas a través del programa de paginación
predeterminado del sistema operativo.

En orden de prioridad, puede especificar el paginador de salida de las siguientes maneras:

• Mediante lacli_pageren el cuadro deconfigen un perfil con nombre de la.

132
AWS Command Line Interface Guía del usuario
Paginación

• Usando de la variable de entorno AWS_PAGER.


• Mediante lacli_pageren el cuadro deconfigfile endefaultPerfil.
• Usando de la variable de entorno PAGER.

Por orden de prioridad, puede deshabilitar todo el uso de un programa de paginación externo de las
siguientes maneras:

• Usar--no-cli-pageropción de línea de comandos para desactivar el buscapersonas para un solo uso


de comando.
• Establecimiento de la propiedad decli_pagerconfiguración oAWS_PAGERa una cadena vacía.

Cómo utilizar la configuración cli_pager


Puede guardar las opciones de configuración y las credenciales que utiliza con frecuencia en archivos
que son mantenidos por la AWS CLI. La configuración de un perfil de nombre tiene prioridad sobre la
configuración de ladefaultPerfil. Para obtener más información acerca de los valores de configuración,
consulteOpciones de los archivos de configuración y credenciales (p. 51).

El siguiente ejemplo establece el paginador de salida predeterminado en lalessPrograma de.

[default]
cli_pager=less

En el ejemplo siguiente se establece el valor predeterminado para deshabilitar el uso de un paginador.

[default]
cli_pager=

Cómo usar la variable de entorno AWS_PAGER


El siguiente ejemplo establece el paginador de salida predeterminado en lalessPrograma de. Para
obtener más información acerca de las variables de entorno, consulteVariables de entorno para configurar
la AWS CLI (p. 71).

Linux and macOS

$ export AWS_PAGER="less"

Windows

C:\> setx AWS_PAGER "less"

En el ejemplo siguiente se deshabilita el uso de un paginador.

Linux and macOS

$ export AWS_PAGER=""

Windows

C:\> setx AWS_PAGER ""

133
AWS Command Line Interface Guía del usuario
Filtrado

Cómo usar la opción —no-cli-pager


Para deshabilitar el uso de un paginador en un único comando, utilice la--no-cli-pagerOpción. Para
obtener más información acerca de las opciones de línea de comandos, consulteOpciones de línea de
comandos (p. 75).

$ aws s3api list-objects \


--bucket my-bucket \
--no-cli-pager
{
"Contents": [
...

Cómo usar banderas de buscapersonas


Puede especificar indicadores que se usarán automáticamente con el programa de paginación. Los
indicadores dependen del programa de paginación que utilice. Los siguientes ejemplos son para los
valores predeterminados típicos delessymore.

Linux and macOS

Si no especifica lo contrario, el paginadorAWS CLIla versión 2 usa por defecto esless. Si no dispone
deLESSconjunto de variables de entorno, elAWS CLILa versión 2 utiliza laFRXMarcadores. Puede
combinar banderas especificándolas al establecer la propiedadAWS CLIbuscapersonas.

El siguiente ejemplo utiliza laSIndicador de. A continuación, este indicador se combina con el valor
predeterminadoFRXbanderas para crear unFRXSIndicador de.

$ export AWS_PAGER="less -S"

Si no quiere que ninguno de losFRX, puede negarlas. El siguiente ejemplo niega laFpara crear
unRXIndicador de.

$ export AWS_PAGER="less -+F"

Para obtener más información sobre laslessMarcadores consultemenosenmanpages.org.


Windows

Si no especifica lo contrario, el paginadorAWS CLIla versión 2 usa por defecto esmoresin banderas
adicionales.

El siguiente ejemplo utiliza la/cParámetro metro metro

C:\> setx AWS_PAGER "more /c"

Para obtener más información sobre lasmoreMarcadores consultemásenDocumentos de Microsoft.

FiltradoAWS CLIsalida
LaAWS Command Line Interface(AWS CLI) tiene filtrado tanto del lado del servidor como del cliente
que puede usar individualmente o juntos para filtrar suAWS CLISalida. El filtrado del lado del servidor se
procesa primero y devuelve su salida para el filtrado del lado del cliente.

• El filtrado del lado del servidor es compatible con la API, y generalmente lo implementa con un--
filterParámetro metro metro El servicio solo devuelve resultados coincidentes que pueden acelerar
los tiempos de respuesta HTTP para conjuntos de datos grandes.

134
AWS Command Line Interface Guía del usuario
Filtrado

• El filtrado del lado del cliente es compatible con elAWS CLIUso del cliente de--queryParámetro metro
metro Este parámetro tiene capacidades que el filtrado del lado del servidor puede no tener.

Temas
• Filtrado del lado del servidor (p. 135)
• Filtrado del lado del cliente (p. 135)
• Combinación de filtrado del lado del cliente y del servidor. (p. 150)
• Recursos adicionales (p. 150)

Filtrado del lado del servidor


Filtrado del lado del servidor en laAWS CLIestá provista por laAWSAPI de servicio. LaAWSsolo devuelve
los registros de la respuesta HTTP que coinciden con el filtro, lo que puede acelerar los tiempos de
respuesta HTTP para conjuntos de datos grandes. Dado que el filtrado del lado del servidor está definido
por la API del servicio, los nombres de los parámetros y las funciones varían entre los servicios. Algunos
nombres de parámetros comunes utilizados para filtrar son:

• --filtertales comosesyCE.
• --filterstales comoec2,Autoescalado, yrds.
• Nombres que empiezan por la palabrafilter, por ejemplo--filter-expressionpara laaws
dynamodb scancomando de.

Para obtener información acerca de si un comando específico tiene filtrado en el lado del servidor y las
reglas de filtrado, consulte laAWS CLIReferencia de los comandos de la.

Filtrado del lado del cliente


LaAWS CLIofrece capacidades de filtrado del lado del cliente basadas en JSON integradas con la--
queryParámetro metro metro La--queryEste parámetro es una potente herramienta que se puede
utilizar para personalizar el contenido y el estilo de la salida. La--querytoma la respuesta HTTP que
regresa del servidor y filtra los resultados antes de mostrarlos. Dado que toda la respuesta HTTP se envía
al cliente antes del filtrado, el filtrado del lado del cliente puede ser más lento que el filtrado del lado del
servidor para grandes conjuntos de datos.

Consultar usosSintaxis JMESPathpara crear expresiones para filtrar la salida. Para aprender la sintaxis de
JMESPath, consulteTutorial sobreen elSitio web JMESPath.
Important

El tipo de salida que especifique cambia la forma en que el--queryla opción opera:

• Si especifica --output text, la salida se pagina antes de que se aplique el filtro --query
y de que la AWS CLI ejecute la consulta una vez en cada página de la salida. Debido a esto,
la consulta incluye el primer elemento que coincide en cada página y puede dar lugar a una
salida adicional inesperada. Para solucionar este resultado adicional, especifique--no-
paginatePara aplicar el filtro solo al conjunto completo de resultados, pero puede dar lugar
a una salida larga. Para filtrar más la salida, puede utilizar otras herramientas de la línea de
comandos comoheadortail.
• Si especifica--output json,--output yaml, o bien--output yaml-streamLa salida se
procesará por completo como una única estructura nativa antes de la--queryse aplica el filtro.
LaAWS CLIejecuta la consulta solo una vez en toda la estructura, produciendo un resultado
filtrado que se obtiene como salida.

135
AWS Command Line Interface Guía del usuario
Filtrado

Filtrado del lado del cliente


• Antes de comenzar (p. 136)
• Identifiers (p. 137)
• Seleccionar de una lista (p. 138)
• Filtrado de datos anidados (p. 142)
• Aplanamiento de los resultados (p. 143)
• Filtrado para valores específicos (p. 143)
• Expresiones de canalizaciones (p. 144)
• Filtrado para varios valores de identificador (p. 145)
• Adición de etiquetas a valores de identificador (p. 146)
• Functions (p. 147)
• Advanced (Avanzado)--queryEjemplos de (p. 148)

Antes de comenzar
Cuando utilice expresiones de filtro utilizadas en estos ejemplos, asegúrese de utilizar las reglas de
comillas correctas para el shell de terminal. Para obtener más información, consulte the section called
“Comillas con cadenas” (p. 106).

La siguiente salida JSON muestra un ejemplo de lo que la--queryparámetro puede producir. El resultado
describe tres volúmenes de Amazon EBS conectados a instancias independientes de Amazon EC2.

Ejemplo de salida

$ aws ec2 describe-volumes


{
"Volumes": [
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-18T20:26:16.000Z",
"InstanceId": "i-4b41a37c",
"VolumeId": "vol-2e410a47",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}

136
AWS Command Line Interface Guía del usuario
Filtrado

],
"VolumeType": "standard",
"VolumeId": "vol-2e410a47",
"State": "in-use",
"SnapshotId": "snap-708e8348",
"CreateTime": "2013-09-18T20:26:15.000Z",
"Size": 8
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2020-11-20T19:54:06.000Z",
"InstanceId": "i-1jd73kv8",
"VolumeId": "vol-a1b3c7nd",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-a1b3c7nd",
"State": "in-use",
"SnapshotId": "snap-234087fb",
"CreateTime": "2020-11-20T19:54:05.000Z",
"Size": 15
}
]
}

Identifiers
Identificador son las etiquetas de los valores de salida. Al crear filtros, se utilizan identificadores para
reducir los resultados de la consulta. En el siguiente ejemplo de salida, todos los identificadores
comoVolumes,AvailabilityZone, yAttachTimeestán resaltados.

$ aws ec2 describe-volumes


{
"Volumes": [
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-18T20:26:16.000Z",
"InstanceId": "i-4b41a37c",

137
AWS Command Line Interface Guía del usuario
Filtrado

"VolumeId": "vol-2e410a47",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-2e410a47",
"State": "in-use",
"SnapshotId": "snap-708e8348",
"CreateTime": "2013-09-18T20:26:15.000Z",
"Size": 8
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2020-11-20T19:54:06.000Z",
"InstanceId": "i-1jd73kv8",
"VolumeId": "vol-a1b3c7nd",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-a1b3c7nd",
"State": "in-use",
"SnapshotId": "snap-234087fb",
"CreateTime": "2020-11-20T19:54:05.000Z",
"Size": 15
}
]
}

Para obtener más información, consulteIdentificadores deen elSitio web JMESPath.

Seleccionar de una lista


Una lista o matriz es un identificador que va seguido de un corchete»[«tales
comoVolumesyAttachmentsen lathe section called “Antes de comenzar” (p. 136).

Sintaxis

<listName>[ ]

Para filtrar todos los resultados de una matriz, puede usar la notación comodín. Comodínson expresiones
utilizadas para devolver elementos utilizando el método*Notación.

El siguiente ejemplo consulta todos losVolumesContenido.

$ aws ec2 describe-volumes \


--query 'Volumes[*]'
[
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",

138
AWS Command Line Interface Guía del usuario
Filtrado

"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2020-11-20T19:54:06.000Z",
"InstanceId": "i-1jd73kv8",
"VolumeId": "vol-a1b3c7nd",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-a1b3c7nd",
"State": "in-use",
"SnapshotId": "snap-234087fb",
"CreateTime": "2020-11-20T19:54:05.000Z",
"Size": 15
}
]

Para ver un volumen específico en la matriz por índice, se llama al índice de matriz. Por ejemplo, el primer
elemento de laVolumestiene un índice de 0, lo que resulta en elVolumes[0]Consultar. Para obtener más
información acerca de los índices de matriz, consulteExpresiones de índiceen elSitio web JMESPath.

$ aws ec2 describe-volumes \


--query 'Volumes[0]'
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
}

Para ver un rango específico de volúmenes por índice, utiliceslicecon la siguiente sintaxis, dondestartes
el índice de matriz inicial,stopes el índice donde el filtro deja de procesarse, ypasoes el intervalo de
omisión.

Sintaxis

139
AWS Command Line Interface Guía del usuario
Filtrado

<arrayName>[<start>:<stop>:<step>]

Si se omite cualquiera de estos elementos de la expresión de sector, utilizarán los siguientes valores
predeterminados:

• Inicio: el primer índice de la lista, 0.


• Detener: el último índice de la lista.
• Paso: sin saltar paso, donde el valor es 1.

Para devolver sólo los dos primeros volúmenes, utilice un valor inicial de 0, un valor de parada de 2 y un
valor de paso de 1, como se muestra en el siguiente ejemplo.

$ aws ec2 describe-volumes \


--query 'Volumes[0:2:1]'
[
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-18T20:26:16.000Z",
"InstanceId": "i-4b41a37c",
"VolumeId": "vol-2e410a47",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-2e410a47",
"State": "in-use",
"SnapshotId": "snap-708e8348",
"CreateTime": "2013-09-18T20:26:15.000Z",
"Size": 8
}
]

Dado que este ejemplo contiene valores predeterminados, puede acortar el segmento
deVolumes[0:2:1]De aVolumes[:2].

En el ejemplo siguiente se omiten los valores predeterminados y se devuelve cada dos volúmenes de toda
la matriz.

140
AWS Command Line Interface Guía del usuario
Filtrado

$ aws ec2 describe-volumes \


--query 'Volumes[::2]'
[
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2020-11-20T19:54:06.000Z",
"InstanceId": "i-1jd73kv8",
"VolumeId": "vol-a1b3c7nd",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-a1b3c7nd",
"State": "in-use",
"SnapshotId": "snap-234087fb",
"CreateTime": "2020-11-20T19:54:05.000Z",
"Size": 15
}
]

Los pasos también pueden utilizar números negativos para filtrar en el orden inverso de una matriz como
se muestra en el ejemplo siguiente.

$ aws ec2 describe-volumes \


--query 'Volumes[::-2]'
[
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2020-11-20T19:54:06.000Z",
"InstanceId": "i-1jd73kv8",
"VolumeId": "vol-a1b3c7nd",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-a1b3c7nd",
"State": "in-use",

141
AWS Command Line Interface Guía del usuario
Filtrado

"SnapshotId": "snap-234087fb",
"CreateTime": "2020-11-20T19:54:05.000Z",
"Size": 15
},
{
"AvailabilityZone": "us-west-2a",
"Attachments": [
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
"VolumeType": "standard",
"VolumeId": "vol-e11a5288",
"State": "in-use",
"SnapshotId": "snap-f23ec1c8",
"CreateTime": "2013-09-17T00:55:03.000Z",
"Size": 30
}
]

Para obtener más información, consulteSectoresen elSitio web JMESPath.

Filtrado de datos anidados


Para restringir el filtrado de laVolumes[*]para los valores anidados, se utilizan subexpresiones
añadiendo un punto y los criterios de filtro.

Sintaxis

<expression>.<expression>

El siguiente ejemplo muestra todos losAttachmentsinformación para todos los volúmenes.

$ aws ec2 describe-volumes \


--query 'Volumes[*].Attachments'
[
[
{
"AttachTime": "2013-09-17T00:55:03.000Z",
"InstanceId": "i-a071c394",
"VolumeId": "vol-e11a5288",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
[
{
"AttachTime": "2013-09-18T20:26:16.000Z",
"InstanceId": "i-4b41a37c",
"VolumeId": "vol-2e410a47",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
],
[
{

142
AWS Command Line Interface Guía del usuario
Filtrado

"AttachTime": "2020-11-20T19:54:06.000Z",
"InstanceId": "i-1jd73kv8",
"VolumeId": "vol-a1b3c7nd",
"State": "attached",
"DeleteOnTermination": true,
"Device": "/dev/sda1"
}
]
]

Para filtrar más en los valores anidados, añada la expresión para cada indentificador anidado. En el
ejemplo siguiente se muestra laStatePara todos los casosVolumes.

$ aws ec2 describe-volumes \


--query 'Volumes[*].Attachments[*].State'
[
[
"attached"
],
[
"attached"
],
[
"attached"
]
]

Aplanamiento de los resultados


Para obtener más información, consulteSubExpresionesen elSitio web JMESPath.

Puede aplanar los resultados deVolumes[*].Attachments[*].Stateeliminando la notación comodín


que resulta en laVolumes[*].Attachments[].StateConsultar. El aplanamiento a menudo es útil para
mejorar la legibilidad de los resultados.

$ aws ec2 describe-volumes \


--query 'Volumes[*].Attachments[].State'
[
"attached",
"attached",
"attached"
]

Para obtener más información, consulteFlattenen elSitio web JMESPath.

Filtrado para valores específicos


Para filtrar valores específicos de una lista, utilice una expresión de filtro como se muestra en la siguiente
sintaxis.

Sintaxis

? <expression> <comparator> <expression>]

Los comparadores de expresiones incluyen==,!=,<,<=,>, y>=. En el ejemplo siguiente se filtra para


elVolumeIdsPara todos los casosVolumesen unAttachedState.

$ aws ec2 describe-volumes \

143
AWS Command Line Interface Guía del usuario
Filtrado

--query 'Volumes[*].Attachments[?State=='attached'].VolumeId'
[
[
"vol-e11a5288"
],
[
"vol-2e410a47"
],
[
"vol-a1b3c7nd"
]
]

Esto se puede aplanar, lo que resulta en el siguiente ejemplo.

$ aws ec2 describe-volumes \


--query 'Volumes[*].Attachments[?State=='attached'].VolumeId[]'
[
"vol-e11a5288",
"vol-2e410a47",
"vol-a1b3c7nd"
]

En el ejemplo siguiente se filtra para elVolumeIdsde todos los casosVolumesque tienen un tamaño
inferior a 20.

$ aws ec2 describe-volumes \


--query 'Volumes[?Size < 20].VolumeId'
[
"vol-2e410a47",
"vol-a1b3c7nd"
]

Para obtener más información, consulteExpresiones de filtroen elSitio web JMESPath.

Expresiones de canalizaciones
Puede canalizar los resultados de un filtro a una nueva lista y, a continuación, filtrar el resultado con otra
expresión utilizando la siguiente sintaxis:

Sintaxis

<expression> | <expression>]

En el ejemplo siguiente se toman los resultados del filtro


deVolumes[*].Attachments[].InstanceIdy genera el primer resultado en la matriz.

$ aws ec2 describe-volumes \


--query 'Volumes[*].Attachments[].InstanceId | [0]'
"i-a071c394"

En este ejemplo, se crea primero la matriz a partir de la siguiente expresión.

$ aws ec2 describe-volumes \


--query 'Volumes[*].Attachments[].InstanceId'
"i-a071c394",
"i-4b41a37c",

144
AWS Command Line Interface Guía del usuario
Filtrado

"i-1jd73kv8"

Y luego devuelve el primer elemento de esa matriz.

"i-a071c394"

Para obtener más información, consulteExpresiones de tuberíaen elSitio web JMESPath.

Filtrado para varios valores de identificador


Para filtrar por varios identificadores, utilice una lista de selección múltiple mediante la siguiente sintaxis:

Sintaxis

<listName>[].[<expression>, <expression>]

En el ejemplo siguiente,VolumeIdyVolumeTypese filtran en elVolumeslo que resulta en la siguiente


expresión.

$ aws ec2 describe-volumes \


--query 'Volumes[].[VolumeId, VolumeType]'
[
[
"vol-e11a5288",
"standard"
],
[
"vol-2e410a47",
"standard"
],
[
"vol-a1b3c7nd",
"standard"
]
]

Para agregar datos anidados a la lista, agregue otra lista de selección múltiple. El ejemplo
siguiente se amplía en el ejemplo anterior mediante el filtrado deInstanceIdyStateen el archivo
anidadoAttachmentslista de. Se obtiene el siguiente resultado:

$ aws ec2 describe-volumes \


--query 'Volumes[].[VolumeId, VolumeType, Attachments[].[InstanceId, State]]'
[
[
"vol-e11a5288",
"standard",
[
[
"i-a071c394",
"attached"
]
]
],
[
"vol-2e410a47",
"standard",
[
[

145
AWS Command Line Interface Guía del usuario
Filtrado

"i-4b41a37c",
"attached"
]
]
],
[
"vol-a1b3c7nd",
"standard",
[
[
"i-1jd73kv8",
"attached"
]
]
]
]

Para que sea más legible, aplane la expresión como se muestra en el ejemplo siguiente.

$ aws ec2 describe-volumes \


--query 'Volumes[].[VolumeId, VolumeType, Attachments[].[InstanceId, VolumeId][]][]'
[
"vol-e11a5288",
"standard",
[
"i-a071c394",
"attached"
],
"vol-2e410a47",
"standard",
[
"i-4b41a37c",
"attached"
],
"vol-a1b3c7nd",
"standard",
[
"i-1jd73kv8",
"attached"
]
]

Para obtener más información, consulteLista de selección múltipleen elSitio web JMESPath.

Adición de etiquetas a valores de identificador


Para facilitar la lectura de este resultado, utilice un hash de selección múltiple con la siguiente sintaxis.

Sintaxis

<listName>[].{<label>: <expression>, <label>: <expression>}

La etiqueta de identificación no necesita ser la misma que el nombre del identificador. El ejemplo siguiente
utiliza la etiquetaTypepara laVolumeTypeValores.

$ aws ec2 describe-volumes \


--query 'Volumes[].{VolumeType: VolumeType}'
[
{
"Type": "standard",

146
AWS Command Line Interface Guía del usuario
Filtrado

},
{
"Type": "standard",
},
{
"Type": "standard",
}
]

Para simplificar, en el siguiente ejemplo se conservan los nombres de los identificadores de cada etiqueta
y se muestra elVolumeId,VolumeType,InstanceId, yStatepara todos los volúmenes:

$ aws ec2 describe-volumes \


--query 'Volumes[].{VolumeId: VolumeId, VolumeType: VolumeType, InstanceId:
Attachments[0].InstanceId, State: Attachments[0].State}'
[
{
"VolumeId": "vol-e11a5288",
"VolumeType": "standard",
"InstanceId": "i-a071c394",
"State": "attached"
},
{
"VolumeId": "vol-2e410a47",
"VolumeType": "standard",
"InstanceId": "i-4b41a37c",
"State": "attached"
},
{
"VolumeId": "vol-a1b3c7nd",
"VolumeType": "standard",
"InstanceId": "i-1jd73kv8",
"State": "attached"
}
]

Para obtener más información, consulteHash de selección múltipleen elSitio web JMESPath.

Functions
La sintaxis JMesPath contiene muchas funciones que puede utilizar para sus consultas. Para obtener
información sobre las funciones de JMesPath, consulteFunciones integradasen elSitio web JMESPath.

Para demostrar cómo puede incorporar una función a sus consultas, en el siguiente ejemplo se utiliza
el métodosort_byfunción. Lasort_byordena una matriz utilizando una expresión como clave de
ordenación utilizando la siguiente sintaxis:

Sintaxis

sort_by(<listName>, <sort expression>)[].<expression>

En el ejemplo siguiente se utiliza elEjemplo hash multiselect (p. 146)y ordena la salida porVolumeId.

$ aws ec2 describe-volumes \


--query 'sort_by(Volumes, &VolumeId)[].{VolumeId: VolumeId, VolumeType: VolumeType,
InstanceId: Attachments[0].InstanceId, State: Attachments[0].State}'
[
{
"VolumeId": "vol-2e410a47",
"VolumeType": "standard",

147
AWS Command Line Interface Guía del usuario
Filtrado

"InstanceId": "i-4b41a37c",
"State": "attached"
},
{
"VolumeId": "vol-a1b3c7nd",
"VolumeType": "standard",
"InstanceId": "i-1jd73kv8",
"State": "attached"
},
{
"VolumeId": "vol-e11a5288",
"VolumeType": "standard",
"InstanceId": "i-a071c394",
"State": "attached"
}
]

Para obtener más información, consultesort_byen elSitio web JMESPath.

Advanced (Avanzado)--queryEjemplos de
Para extraer información de un elemento específico

En el siguiente ejemplo, se usa el parámetro --query para encontrar un elemento específico en una
lista y, a continuación, extrae la información de ese elemento. El ejemplo muestra una lista de todos
losAvailabilityZonesAsociado con el punto de enlace de servicio especificado. Extrae el elemento
de la lista ServiceDetails que tiene el ServiceName especificado; a continuación, genera el campo
AvailabilityZones a partir de ese elemento seleccionado.

$ aws --region us-east-1 ec2 describe-vpc-endpoint-services \


--query 'ServiceDetails[?ServiceName==`com.amazonaws.us-east-1.ecs`].AvailabilityZones'
[
[
"us-east-1a",
"us-east-1b",
"us-east-1c",
"us-east-1d",
"us-east-1e",
"us-east-1f"
]
]

Para mostrar instantáneas después de la fecha de creación especificada

En el siguiente ejemplo se muestra cómo enumerar todas las instantáneas que se han creado después de
una fecha especificada, incluidos solo algunos de los campos disponibles en la salida.

$ aws ec2 describe-snapshots --owner self \


--output json \
--query 'Snapshots[?StartTime>=`2018-02-07`].
{Id:SnapshotId,VId:VolumeId,Size:VolumeSize}'
[
{
"id": "snap-0effb42b7a1b2c3d4",
"vid": "vol-0be9bb0bf12345678",
"Size": 8
}
]

Para mostrar las AMI más recientes

148
AWS Command Line Interface Guía del usuario
Filtrado

En el siguiente ejemplo, se muestran las cinco imágenes de Amazon Machine (AMI) más reciente que ha
creado, ordenadas de la más reciente y a la más antigua.

$ aws ec2 describe-images \


--owners self \
--query 'reverse(sort_by(Images,&CreationDate))[:5].{id:ImageId,date:CreationDate}'
[
{
"id": "ami-0a1b2c3d4e5f60001",
"date": "2018-11-28T17:16:38.000Z"
},
{
"id": "ami-0a1b2c3d4e5f60002",
"date": "2018-09-15T13:51:22.000Z"
},
{
"id": "ami-0a1b2c3d4e5f60003",
"date": "2018-08-19T10:22:45.000Z"
},
{
"id": "ami-0a1b2c3d4e5f60004",
"date": "2018-05-03T12:04:02.000Z"
},
{
"id": "ami-0a1b2c3d4e5f60005",
"date": "2017-12-13T17:16:38.000Z"
}
]

Para mostrar instancias de Auto Scaling no saludables

El ejemplo siguiente muestra solo laInstanceIdPara obtener las instancias que no están en buen estado
del grupo de Auto Scaling especificado.

$ aws autoscaling describe-auto-scaling-groups \


--auto-scaling-group-name My-AutoScaling-Group-Name \
--output text \
--query 'AutoScalingGroups[*].Instances[?HealthStatus==`Unhealthy`].InstanceId'

Para excluir volúmenes con la etiqueta especificada

En el ejemplo siguiente se obtienen todas las instancias sin un errortestEtiqueta. Usando un método
sencillo?Value != `test`no funciona para excluir un volumen ya que los volúmenes pueden tener
varias etiquetas. Siempre y cuando haya otra etiqueta al ladotestadjunta al volumen, el volumen todavía
se devuelve en los resultados.

Para excluir todos los volúmenes contest, comience con la siguiente expresión para devolver todas
las etiquetas con la etiquetatesten una matriz. Cualquier etiqueta de que no seatestcontiene una
etiquetanullValor .

$ aws ec2 describe-volumes \


--query 'Volumes.Tags[?Value == `test`]'

A continuación, filtrar todos lostestUso de los resultados denot_nullfunción.

$ aws ec2 describe-volumes \


--query 'Volumes[?not_null(Tags[?Value == `test`].Value)]'

Realice los resultados para aplanar los resultados que resultan en la siguiente consulta.

149
AWS Command Line Interface Guía del usuario
Filtrado

$ aws ec2 describe-volumes \


--query 'Volumes[?not_null(Tags[?Value == `test`].Value)] | []'

Combinación de filtrado del lado del cliente y del servidor.


Puede utilizar el filtrado del lado del cliente y del servidor. El filtrado del lado del servidor se completa
primero, lo que envía los datos al cliente que--queryy luego filtra. Si está utilizando conjuntos de datos
grandes, usar primero el filtrado del lado del servidor puede reducir la cantidad de datos enviados al cliente
para cadaAWS CLI, sin dejar de mantener la potente personalización que proporciona el filtrado del lado
del cliente.

En el ejemplo siguiente se muestran los volúmenes de Amazon EC2 mediante el filtrado del lado del cliente
y del servidor. El servicio filtra una lista de todos los volúmenes asociados en laus-west-2aAvailability
Zone. El parámetro --query limita aún más la salida a solo los volúmenes con un valor de Size mayor
que 50 y muestra solo los campos especificados con nombres definidos por el usuario.

$ aws ec2 describe-volumes \


--filters "Name=availability-zone,Values=us-west-2a" "Name=status,Values=attached" \
--query 'Volumes[?Size > `50`].{Id:VolumeId,Size:Size,Type:VolumeType}'
[
{
"Id": "vol-0be9bb0bf12345678",
"Size": 80,
"Type": "gp2"
}
]

El siguiente ejemplo recupera una lista de imágenes que cumplen varios criterios. A continuación, utiliza
el parámetro --query para ordenar la salida por CreationDate, que selecciona solo las más recientes.
Finalmente, muestra el valor de ImageId de esa imagen.

$ aws ec2 describe-images \


--owners amazon \
--filters "Name=name,Values=amzn*gp2" "Name=virtualization-type,Values=hvm" "Name=root-
device-type,Values=ebs" \
--query "sort_by(Images, &CreationDate)[-1].ImageId" \
--output text
ami-00ced3122871a4921

En el ejemplo siguiente, se muestra el número de volúmenes disponibles que son más de 1000 IOPS
utilizando length para contar cuántos hay en una lista.

$ aws ec2 describe-volumes \


--filters "Name=status,Values=available" \
--query 'length(Volumes[?Iops > `1000`])'
3

Recursos adicionales
AWS CLIautoprompt

Cuando comience a usar expresiones de filtro, puede usar la función de solicitud automática en el
cuadro de diálogoAWS CLIVersión 2. La función de solicitud automática proporciona una vista previa
al presionar el botónF5Tecla. Para obtener más información, consulte the section called “Preguntar
automáticamente” (p. 120).

150
AWS Command Line Interface Guía del usuario
Códigos de devolución

Terminal JMESPath

JMesPath Terminal es un comando de terminal interactivo para experimentar con expresiones


JMesPath que se utilizan para el filtrado del lado del cliente. Mediante lajpterm, el terminal
muestra los resultados inmediatos de la consulta a medida que está escribiendo. Puede canalizar
directamenteAWS CLIa la terminal, lo que permite la experimentación avanzada de consultas.

Las siguientes tuberías de ejemploaws ec2 describe-volumesdirectamente a JMesPath Terminal.

$ aws ec2 describe-volumes | jpterm

Para obtener más información acerca de JMesPath Terminal e instrucciones de instalación,


consulteTerminal JMESPathenGitHub.
Utilidad jq

Lajqle proporciona una forma de transformar su salida en el lado del cliente a un formato de salida
que desee. Para obtener más información sobre lasjqPara obtener las instrucciones de instalación,
consultejqenGitHub.

Descripción de los códigos de devolución de la


AWS CLI
El código de retorno suele ser un código oculto enviado después de ejecutar unAWS Command Line
Interface(AWS CLI) que describe el estado del comando. Puede utilizarechopara mostrar el código
enviado desde el últimoAWS CLIy utilice estos códigos para determinar si un comando tuvo éxito o si falló,
y por qué un comando puede tener un error. Además de los códigos de retorno, puede ver más detalles
sobre un error ejecutando sus comandos con el comando--debugCambio. Este conmutador produce un
informe detallado de los pasos que se realizan enAWS CLIusa la para procesar el comando e indica cuál
fue el resultado de cada paso.

Para determinar el código de devolución de un comando de la AWS CLI, ejecute uno de los siguientes
comandos inmediatamente después de ejecutar el comando de la CLI.

Linux and macOS

$ echo $?
0

Windows PowerShell

PS> echo $lastexitcode


0

Windows Command Prompt

C:\> echo %errorlevel%


0

A continuación se indican los valores código de devolución que se pueden devolver al finalizar la ejecución
de un comando de la AWS Command Line Interface (AWS CLI).

151
AWS Command Line Interface Guía del usuario
Asistentes

Código Significado

0 El comando se ha completado correctamente. No hubo errores generados por elAWS


CLIyAWSEl servicio al que se envió la solicitud.

1 Error en una o varias operaciones de transferencia de Amazon S3. Limitado a comandos de S3.

2 El significado de este código de devolución depende del comando:

• Aplicable a todosAWS CLIcommandsNo se pudo analizar el comando introducido. Errores


de análisis que pueden deberse, entre otras cosas, a falta de subcomandos o argumentos
necesarios o al uso de comandos o argumentos desconocidos.
• Limitado a comandos de S3Se han omitido uno o más archivos marcados para transferencia
durante el proceso de transferencia. Sin embargo, el resto de los archivos marcados para
transferencia se han transferido correctamente. Los archivos que se omiten durante el proceso
de transferencia pueden ser: archivos que no existen; archivos de dispositivos orientados a
caracteres, dispositivos orientados a bloques, colas FIFO o sockets, y archivos para los que el
usuario no tiene permiso de lectura.

130 El comando ha sido interrumpido por una SIGINT. Esta es la señal enviada por usted para
cancelar un comando conCtrl+C.

252 La sintaxis del comando no era válida, se proporcionó un parámetro desconocido o un valor de
parámetro era incorrecto e impidió que el comando se ejecutara.

253 El entorno o la configuración del sistema no eran válidos. Aunque el comando proporcionado
puede ser sintácticamente válido, la falta de configuración o credenciales impidió que el comando
se ejecutara.

254 El comando se analizó correctamente y se realizó una solicitud al servicio especificado, pero
el servicio devolvió un error. Esto generalmente indicará el uso incorrecto de la API u otros
problemas específicos del servicio.

255 Error del comando. La AWS CLI o el servicio de AWS al que se había enviado la solicitud
produjeron errores.

Mediante laAWS CLIasistentes


Esta característica solo está disponible conAWS CLILa versión 2.

La característica siguiente está disponible solo si usaAWS CLILa versión 2. No está disponible si
ejecutaAWS CLILa versión 1. Para obtener información sobre cómo instalar la versión 2, consulte
Instalar, actualizar y desinstalar elAWS CLIVersión 2 (p. 6).

LaAWS Command Line Interface(AWS CLI) proporciona la posibilidad de utilizar un asistente para
algunos comandos. Para contribuir o ver la lista completa deAWS CLI, consulte laAWS CLIasistente de la
carpetaen GitHub.

Cómo funciona
Similar a laAWS, la consolaAWS CLItiene un asistente de interfaz de usuario que le guía a través de la
administración deAWSde AWS. Para utilizar el asistente, llame al métodowizardy el nombre del asistente
después del nombre del servicio en un comando. La estructura de los comandos es la siguiente:

Sintaxis:

152
AWS Command Line Interface Guía del usuario
Alias

$ aws <command> wizard <wizardName>

En el siguiente ejemplo, se llama al asistente para crear una nuevadynamodbTabla INTO

$ aws dynamodb wizard new-table

aws configurees el único asistente que no tiene un nombre de asistente. Cuando ejecute el asistente,
ejecute el comandoaws configure wizardComo se muestra en el siguiente ejemplo:

$ aws configure wizard

Después de llamar a un asistente, se muestra un formulario en el shell. Para cada parámetro, se le


proporciona una lista de opciones para seleccionar o se le pide que introduzca una cadena. Para
seleccionar de una lista, utilice las teclas de flecha arriba y abajo y presioneESCRIBA. Para ver los detalles
de una opción, presione la tecla de flecha derecha. Cuando haya terminado de rellenar un parámetro,
pulseESCRIBA.

$ aws configure wizard


What would you like to configure
> Static Credentials
Assume Role
Process Provider
Additional CLI configuration
Enter the name of the profile:
Enter your Access Key Id:
Enter your Secret Access Key:

Para editar solicitudes anteriores, utiliceMAYÚS+TAB. Para algunos asistentes, después de rellenar todas
las solicitudes, puede obtener una vista previa de unAWS CloudFormationo la plantillaAWS CLIlleno de
su información. Este modo de vista previa es útil para aprender elAWS CLI, API de servicio y creación de
plantillas para scripts.

PrensaESCRIBAdespués de la vista previa o el último mensaje para ejecutar el comando final.

$ aws configure wizard


What would you like to configure
Enter the name of the profile: testWizard
Enter your Access Key Id: AB1C2D3EF4GH5I678J90K
Enter your Secret Access Key: ab1c2def34gh5i67j8k90l1mnop2qr3s45tu678v90
<ENTER>

Creación y uso deAWS CLIAlias de


Los alias son accesos directos que se pueden crear en elAWS Command Line Interface(AWS CLI)
para acortar los comandos o secuencias de comandos que utiliza con frecuencia. Puede crear alias en
elaliasque se encuentra en la carpeta de configuración.

Temas
• Prerequisites (p. 154)
• Paso 1: Creación del archivo de alias (p. 154)
• Paso 2: Crear un alias (p. 155)

153
AWS Command Line Interface Guía del usuario
Prerequisites

• Paso 3: Llamar a un alias (p. 156)


• Ejemplos de repositorio de alias (p. 157)
• Resources (p. 158)

Prerequisites
Para utilizar comandos de alias, debe realizar lo siguiente:

• Instalación y configuración de la AWS CLI. Para obtener más información, consulte Instalar, actualizar y
desinstalar elAWS CLI (p. 6) y Fundamentos de configuración (p. 47).
• Utiliza un mínimoAWS CLIVersión de 1.11.24 o 2.0.0.
• (Opcional) Para usarAWS CLIalias bash, debe utilizar un terminal compatible con bash.

Paso 1: Creación del archivo de alias


Para crear elalias, puede utilizar la navegación de archivos y un editor de texto, o utilizar su terminal
preferido mediante el procedimiento paso a paso. Para crear rápidamente el archivo de alias, utilice el
siguiente bloque de comandos.

Linux and macOS

$ mkdir -p ~/.aws/cli
$ echo '[toplevel]' > ~/.aws/cli/alias

Windows

C:\> md %USERPROFILE%\.aws\cli
C:\> echo [toplevel] > %USERPROFILE%/.aws/cli/alias

Para crear el archivo de alias

1. Creación de una carpeta con el nombrecliEn elAWS CLILa carpeta de configuración. De forma
predeterminada, la carpeta de configuración es~/.aws/en Linux o macOS%USERPROFILE%\.aws
\en Windows. Puede crear esto a través de la navegación de archivos o mediante el siguiente
comando.

Linux and macOS

$ mkdir -p ~/.aws/cli

Windows

C:\> md %USERPROFILE%\.aws\cli

ResultadocliLa ruta predeterminada de~/.aws/cli/en Linux o macOS%USERPROFILE%\.aws


\clien Windows.
2. En el navegadorcli, crea un archivo de texto con el nombrealiassin extensión y
agregue[toplevel]a la primera línea. Puede crear este archivo a través de su editor de texto
preferido o utilizar el siguiente comando.

154
AWS Command Line Interface Guía del usuario
Paso 2: Crear un alias

Linux and macOS

$ echo '[toplevel]' > ~/.aws/cli/alias

Windows

$ echo [toplevel] > %USERPROFILE%/.aws/cli/alias

Paso 2: Crear un alias


Puede crear un alias mediante comandos básicos o secuencias de comandos bash.

Creación de un alias de comando básico


Puede crear su alias agregando un comando utilizando la siguiente sintaxis en el cuadroaliasEl archivo
que creó en el paso anterior.

Sintaxis

aliasname = command [--options]

LaAliasNamees lo que usted llama su alias. LaComando de laes el comando al que desea llamar, que
puede incluir otros alias. Puede incluir opciones o parámetros en su alias, o agregarlos al llamar a su alias.

En el siguiente ejemplo, se crea un alias denominadoaws whoamimediante laaws sts get-caller-


identitycommand. Dado que este alias llama a unAWS CLI, puede escribir el comando sin el
comandoawsprefijo.

whoami = sts get-caller-identity

En el siguiente ejemplo se toma el anteriorwhoamiy agrega elAccountfiltro y textooutputOpciones.

whoami2 = sts get-caller-identity --query AccountName --output text

Creación de un alias de scripting bash


Warning

Para utilizarAWS CLIalias bash, debe usar un terminal compatible con bash

Puede crear un alias utilizando scripts bash para procesos más avanzados utilizando la siguiente sintaxis.

Sintaxis

aliasname =
!f() {
script content
}; f

LaAliasNamees lo que usted llama su alias ycontenido de scriptes el script que desea ejecutar al
llamar al alias.

155
AWS Command Line Interface Guía del usuario
Paso 3: Llamar a un alias

El siguiente ejemplo utilizaopendnsPara generar la dirección IP actual. Dado que puede usar alias en
otros alias, el siguientemyipalias es útil para permitir o revocar el acceso a su dirección IP desde otros
alias.

myip =
!f() {
dig +short myip.opendns.com @resolver1.opendns.com
}; f

En el siguiente ejemplo de script, se llama a laaws myipPara autorizar la dirección IP para la entrada en
un grupo de seguridad de Amazon EC2.

authorize-my-ip =
!f() {
ip=$(aws myip)
aws ec2 authorize-security-group-ingress --group-id ${1} --cidr $ip/32 --protocol tcp
--port 22
}; f

Cuando llama a alias que usan secuencias de comandos bash, las variables siempre se pasan en el orden
en que las especificó. En las secuencias de comandos bash, los nombres de las variables no se tienen
en cuenta, solo el orden en que aparecen. En el siguientetextalert, la variable para el--messagees
primero y--phone-numberes la segunda opción.

textalert =
!f() {
aws sns publish --message "${1}" --phone-number ${2}
}; f

Paso 3: Llamar a un alias


Para ejecutar el alias que creó en sualiasEl archivo utiliza la siguiente sintaxis. Puede agregar opciones
adicionales al llamar a su alias.

Sintaxis

$ aws aliasname

En el siguiente ejemplo, se utiliza laaws whoamiAlias.

$ aws
whoami
{
"UserId": "A12BCD34E5FGHI6JKLM",
"Account": "1234567890987",
"Arn": "arn:aws:iam::1234567890987:user/userName"
}

En el siguiente ejemplo, se utiliza laaws whoamicon opciones adicionales para devolver solo
elAccountNumero entextSalida.

$ aws whoami --query Account --output


text
1234567890987

156
AWS Command Line Interface Guía del usuario
Ejemplos de repositorio de alias

Llamar a un alias usando variables de scripting bash


Cuando se llama a alias que usan scripting bash, las variables se pasan en el orden en que se introducen.
En bash scripting, el nombre de las variables no se tiene en cuenta, solo el orden en que aparecen. Por
ejemplo, en la siguiente frasetextalertalias, la variable de la opción--messagees primero y--phone-
numberes segundo.

textalert =
!f() {
aws sns publish --message "${1}" --phone-number ${2}
}; f

Cuando se llama al métodotextalert, debe pasar variables en el mismo orden en que se ejecutan
en el alias. En el siguiente ejemplo utilizamos las variables$messagey$phone. La$messagese pasa
como${1}para la--messageLa opción y la$phonese pasa como${2}para la--phone-numberOpción.
Esto da como resultado llamar correctamente al métodotextalertAlias para enviar un mensaje.

$ aws textalert $message


$phone
{
"MessageId": "1ab2cd3e4-fg56-7h89-i01j-2klmn34567"
}

En el siguiente ejemplo, el orden se cambia al llamar al alias a$phoney$message. La$phonese


pasa como${1}para la--messageLa opción y la$messagese pasa como${2}para la--phone-
numberOpción. Dado que las variables están fuera de servicio, el alias pasa las variables incorrectamente.
Esto provoca un error porque el contenido de$messageno coinciden con los requisitos de formato de
número de teléfono para el--phone-numberOpción.

$ aws textalert $phone


$message
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

aws help
aws <command> help
aws <command> <subcommand> help

Unknown options: text

Ejemplos de repositorio de alias


LaAWS CLIrepositorio de aliasenGitHubcontieneAWS CLIejemplos de alias creados por elAWS CLIequipo
de desarrolladores y comunidad. Puede usar toda laaliaso tomar alias individuales para su propio uso.
Warning

Al ejecutar los comandos de esta sección, se eliminan losaliasfile. Para evitar sobrescribir el
archivo de alias existente, cambie la ubicación de descarga.

Para utilizar alias del repositorio

1. Instale Git. Para obtener instrucciones de instalación, consulteIntroducción - Instalación de Giten


laDocumentación de Git.
2. Instalación deljpcommand. Lajpse utiliza en el comandotostringAlias. Para obtener instrucciones
de instalación, consulteLéame JMesPath (jp) .mdenGitHub.

157
AWS Command Line Interface Guía del usuario
Resources

3. Instalación deljqcommand. Lajqse utiliza en el comandotostring-with-jqAlias. Para obtener


instrucciones de instalación, consulteProcesador JSON (jq)enGitHub.
4. Descarga dealiasrealizando una de estas acciones:

• Ejecute los siguientes comandos que se descargan desde el repositorio y copia elaliasa la carpeta
de configuración.
Linux and macOS

$ git clone https://github.com/awslabs/awscli-aliases.git


$ mkdir -p ~/.aws/cli
$ cp awscli-aliases/alias ~/.aws/cli/alias

Windows

C:\> git clone https://github.com/awslabs/awscli-aliases.git


C:\> md %USERPROFILE%\.aws\cli
C:\> copy awscli-aliases\alias %USERPROFILE%\.aws\cli

• Descargue directamente desde el repositorio y guárdelo en elclien su carpetaAWS CLILa carpeta


de configuración. De forma predeterminada, la carpeta de configuración es~/.aws/en Linux o
macOS%USERPROFILE%\.aws\en Windows.
5. Para comprobar que los alias funcionan, ejecute el siguiente alias.

$ aws whoami

Esto muestra la misma respuesta que elaws sts get-caller-identityComando de la :

{
"Account": "012345678901",
"UserId": "AIUAINBADX2VEG2TC6HD6",
"Arn": "arn:aws:iam::012345678901:user/myuser"
}

Resources
• LaAWS CLIrepositorio de aliasenGitHubcontieneAWS CLIejemplos de alias creados por elAWS CLIy la
contribución de laAWS CLIComunidad.
• El anuncio de la característica de alias deAWSRe:Invent 2016: El EficazAWS CLIUsuarioenYouTube.
• aws sts get-caller-identity
• aws ec2 describe-instances
• aws sns publish

158
AWS Command Line Interface Guía del usuario
DynamoDB

Uso de la AWS CLI para que


funcione con AWS Services
En esta sección se proporcionan ejemplos que muestran cómo utilizar la AWS Command Line Interface
(AWS CLI) para obtener acceso a los diversos servicios de AWS.

For a complete reference of all the available commands for each service, see the AWS CLI Command
Reference, or use the built-in command line help. Para obtener más información, consulte Obtener ayuda
con la AWS CLI (p. 97).

Servicios
• Uso de Amazon DynamoDB con laAWS CLI (p. 159)
• Uso de Amazon EC2 con laAWS CLI (p. 162)
• Con Amazon S3 GlacierAWS CLI (p. 176)
• Uso de AWS Identity and Access Management desde AWS CLI (p. 180)
• Uso de Amazon S3 con laAWS CLI (p. 184)
• Utiliza Amazon SNS con laAWS CLI (p. 196)
• Uso de Amazon Simple Workflow Service con laAWS CLI (p. 198)

Uso de Amazon DynamoDB con laAWS CLI


¿Qué es Amazon DynamoDB?

LaAWS Command Line Interface(AWS CLI) ofrece compatibilidad con todos losAWS, incluido Amazon
DynamoDB. Puede utilizar laAWS CLIpara operaciones improvisadas, como crear una tabla. También
puede usarla para incluir operaciones de DynamoDB en scripts de utilidades.

Para obtener más información acerca del uso de laAWS CLIcon DynamoDB, consulteDynamoDBen laAWS
CLIReferencia de los comandos de la.

Para incluir la lista deAWS CLIpara DynamoDB, utilice el comando siguiente.

$ aws dynamodb help

Temas
• Prerequisites (p. 159)
• Creación y uso de tablas de DynamoDB (p. 160)
• Uso de DynamoDB Local (p. 161)
• Resources (p. 161)

Prerequisites
Para ejecutar ladynamodb, es necesario:

• AWS CLIinstalado, consulteInstalar, actualizar y desinstalar elAWS CLI (p. 6)Para obtener más
información, consulte.

159
AWS Command Line Interface Guía del usuario
Creación y uso de tablas de DynamoDB

• AWS CLIconfigurado, consulteFundamentos de configuración (p. 47)Para obtener más información,


consulte. El perfil que utilice debe tener permisos que permitan elAWSoperaciones realizadas por los
ejemplos.

Creación y uso de tablas de DynamoDB


El formato de la línea de comandos se compone de un nombre de comando de DynamoDB de seguido de
los parámetros de dicho comando. La AWS CLI permite utilizar la sintaxis abreviada (p. 118) de la CLI en
los valores de los parámetros, además de todo el código JSON.

FEn el siguiente ejemplo, se crea una tabla llamadaMusicCollection.

$ aws dynamodb create-table \


--table-name MusicCollection \
--attribute-definitions AttributeName=Artist,AttributeType=S
AttributeName=SongTitle,AttributeType=S \
--key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

A continuación, puede añadir nuevas líneas a la tabla con comandos similares a los que se muestran en el
siguiente ejemplo. En estos ejemplos se usa una combinación de sintaxis abreviada y JSON.

$ aws dynamodb put-item \


--table-name MusicCollection \
--item '{
"Artist": {"S": "No One You Know"},
"SongTitle": {"S": "Call Me Today"} ,
"AlbumTitle": {"S": "Somewhat Famous"}
}' \
--return-consumed-capacity TOTAL
{
"ConsumedCapacity": {
"CapacityUnits": 1.0,
"TableName": "MusicCollection"
}
}

$ aws dynamodb put-item \


--table-name MusicCollection \
--item '{
"Artist": {"S": "Acme Band"},
"SongTitle": {"S": "Happy Day"} ,
"AlbumTitle": {"S": "Songs About Life"}
}' \
--return-consumed-capacity TOTAL

{
"ConsumedCapacity": {
"CapacityUnits": 1.0,
"TableName": "MusicCollection"
}
}

Puede resultar difícil crear código JSON válido en una única línea de comandos. Para facilitar la operación,
la AWS CLI puede leer archivos JSON. Por ejemplo, fíjese en el fragmento de código JSON siguiente, que
se almacena en un archivo denominado expression-attributes.json.

{
":v1": {"S": "No One You Know"},

160
AWS Command Line Interface Guía del usuario
Uso de DynamoDB Local

":v2": {"S": "Call Me Today"}


}

Puede utilizar ese archivo para emitir una solicitud de query mediante la AWS CLI. En el siguiente
ejemplo, se usa el contenido del archivo expression-attributes.json como valor del parámetro --
expression-attribute-values.

$ aws dynamodb query --table-name MusicCollection \


--key-condition-expression "Artist = :v1 AND SongTitle = :v2" \
--expression-attribute-values file://expression-attributes.json
{
"Count": 1,
"Items": [
{
"AlbumTitle": {
"S": "Somewhat Famous"
},
"SongTitle": {
"S": "Call Me Today"
},
"Artist": {
"S": "No One You Know"
}
}
],
"ScannedCount": 1,
"ConsumedCapacity": null
}

Uso de DynamoDB Local


Además de con DynamoDB, también puede usar laAWS CLIcon DynamoDB Local. DynamoDB Local es
un pequeño servidor y base de datos del lado del cliente que imita el servicio de DynamoDB. DynamoDB
Local le permite escribir aplicaciones que usan la API de DynamoDB sin manipular las tablas o los datos
del servicio web de DynamoDB. En lugar de eso, todas las acciones de la API se redirigen a una base de
datos local. lo que le permite ahorrar en rendimiento aprovisionado, almacenamiento de datos y tarifas de
transferencia de datos.

Para obtener más información acerca de DynamoDB Local y cómo usarlo con laAWS CLIPara obtener,
consulte las siguientes secciones de laGuía para desarrolladores de Amazon DynamoDB:

• DynamoDB Local
• Mediante laAWS CLIcon DynamoDB Local

Resources
AWS CLI Referencia:

• aws dynamodb
• aws dynamodb create-table
• aws dynamodb put-item
• aws dynamodb query

Referencia del servicio:

• DynamoDB Localen la Guía para desarrolladores de Amazon DynamoDB

161
AWS Command Line Interface Guía del usuario
Amazon EC2

• Mediante laAWS CLIcon DynamoDB Localen la Guía para desarrolladores de Amazon DynamoDB

Uso de Amazon EC2 con laAWS CLI


Introducción a Amazon EC2 - Elastic Cloud Server y alojamiento con AWS

Puede acceder a las funciones de Amazon Elastic Compute Cloud (Amazon EC2) utilizando laAWS
Command Line Interface(AWS CLI). Para mostrar laAWS CLIPara Amazon EC2, utilice el siguiente
comando.

aws ec2 help

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

En este tema se muestran ejemplos de forma corta deAWS CLIcomandos que realizan tareas comunes
para Amazon EC2.

Para obtener ejemplos de formato largo deAWS CLIconsulteAWS CLIEjemplos de código de


repositorioenGitHub.

Temas
• Creación, visualización y eliminación de pares de claves de Amazon EC2 (p. 162)
• Creación, configuración y eliminación de grupos de seguridad para Amazon EC2 (p. 164)
• Lanzamiento, enumeración y terminación de instancias Amazon EC2 (p. 168)
• Cambie un tipo de instancia Amazon EC2 utilizando un script bash (p. 174)

Creación, visualización y eliminación de pares de


claves de Amazon EC2
Puede utilizar elAWS Command Line Interface(AWS CLIPara crear, mostrar y eliminar los pares de claves
para Amazon Elastic Compute Cloud (Amazon EC2). Los pares de claves se utilizan durante la conexión a
una instancia Amazon EC2.

Debe proporcionar el key pair a Amazon EC2 al crear la instancia y después usar ese key pair para
autenticarse cuando se conecte a la instancia.

Temas
• Prerequisites (p. 162)
• Crear un par de claves (p. 163)
• Mostrar un par de claves (p. 163)
• Eliminar un par de claves (p. 164)

Prerequisites
Para ejecutar laec2, es necesario:

• Instalación y configuración de la AWS CLI. Para obtener más información, consulte Instalar, actualizar y
desinstalar elAWS CLI (p. 6) y Fundamentos de configuración (p. 47).

162
AWS Command Line Interface Guía del usuario
Pares de claves de Amazon EC2

• Establezca sus permisos de IAM para permitir el acceso a Amazon EC2. Para obtener más información
sobre los permisos de IAM para Amazon EC2, consultePolíticas de IAM para Amazon EC2en laGuía del
usuario de Amazon EC2 para instancias de Linux.

Crear un par de claves


Para crear un par de claves, utilice el comando create-key-pair con la opción --query y la opción --
output text para transferir su clave privada directamente a un archivo.

$ aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text


> MyKeyPair.pem

Para PowerShell, el redireccionamiento de > file adopta la codificación UTF-8 de forma predeterminada,
que no se puede utilizar en algunos clientes SSH. Por lo tanto, debe convertir la salida transfiriéndola al
comando out-file y establecer de forma explícita la codificación en ascii.

PS C:\>aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text |


out-file -encoding ascii -filepath MyKeyPair.pem

El archivo MyKeyPair.pem resultante tiene este aspecto.

-----BEGIN RSA PRIVATE KEY-----
EXAMPLEKEYKCAQEAy7WZhaDsrA1W3mRlQtvhwyORRX8gnxgDAfRt/gx42kWXsT4rXE/b5CpSgie/
vBoU7jLxx92pNHoFnByP+Dc21eyyz6CvjTmWA0JwfWiW5/akH7iO5dSrvC7dQkW2duV5QuUdE0QW
Z/aNxMniGQE6XAgfwlnXVBwrerrQo+ZWQeqiUwwMkuEbLeJFLhMCvYURpUMSC1oehm449ilx9X1F
G50TCFeOzfl8dqqCP6GzbPaIjiU19xX/azOR9V+tpUOzEL+wmXnZt3/nHPQ5xvD2OJH67km6SuPW
oPzev/D8V+x4+bHthfSjR9Y7DvQFjfBVwHXigBdtZcU2/wei8D/HYwIDAQABAoIBAGZ1kaEvnrqu
/uler7vgIn5m7lN5LKw4hJLAIW6tUT/fzvtcHK0SkbQCQXuriHmQ2MQyJX/0kn2NfjLV/ufGxbL1
mb5qwMGUnEpJaZD6QSSs3kICLwWUYUiGfc0uiSbmJoap/GTLU0W5Mfcv36PaBUNy5p53V6G7hXb2
bahyWyJNfjLe4M86yd2YK3V2CmK+X/BOsShnJ36+hjrXPPWmV3N9zEmCdJjA+K15DYmhm/tJWSD9
81oGk9TopEp7CkIfatEATyyZiVqoRq6k64iuM9JkA3OzdXzMQexXVJ1TLZVEH0E7bhlY9d8O1ozR
oQs/FiZNAx2iijCWyv0lpjE73+kCgYEA9mZtyhkHkFDpwrSM1APaL8oNAbbjwEy7Z5Mqfql+lIp1
YkriL0DbLXlvRAH+yHPRit2hHOjtUNZh4Axv+cpg09qbUI3+43eEy24B7G/Uh+GTfbjsXsOxQx/x
p9otyVwc7hsQ5TA5PZb+mvkJ5OBEKzet9XcKwONBYELGhnEPe7cCgYEA06Vgov6YHleHui9kHuws
ayav0elc5zkxjF9nfHFJRry21R1trw2Vdpn+9g481URrpzWVOEihvm+xTtmaZlSp//lkq75XDwnU
WA8gkn6O3QE3fq2yN98BURsAKdJfJ5RL1HvGQvTe10HLYYXpJnEkHv+Unl2ajLivWUt5pbBrKbUC
gYBjbO+OZk0sCcpZ29sbzjYjpIddErySIyRX5gV2uNQwAjLdp9PfN295yQ+BxMBXiIycWVQiw0bH
oMo7yykABY7Ozd5wQewBQ4AdSlWSX4nGDtsiFxWiI5sKuAAeOCbTosy1s8w8fxoJ5Tz1sdoxNeGs
Arq6Wv/G16zQuAE9zK9vvwKBgF+09VI/1wJBirsDGz9whVWfFPrTkJNvJZzYt69qezxlsjgFKshy
WBhd4xHZtmCqpBPlAymEjr/TOlbxyARmXMnIOWIAnNXMGB4KGSyl1mzSVAoQ+fqR+cJ3d0dyPl1j
jjb0Ed/NY8frlNDxAVHE8BSkdsx2f6ELEyBKJSRr9snRAoGAMrTwYneXzvTskF/S5Fyu0iOegLDa
NWUH38v/nDCgEpIXD5Hn3qAEcju1IjmbwlvtW+nY2jVhv7UGd8MjwUTNGItdb6nsYqM2asrnF3qS
VRkAKKKYeGjkpUfVTrW0YFjXkfcrR/V+QFL5OndHAKJXjW7a4ejJLncTzmZSpYzwApc=
-----END RSA PRIVATE KEY-----

Su clave privada no se almacena en AWS y solo se puede recuperar en el momento de crearla. No puede
recuperarla más adelante. En vez de ello, si pierde la clave privada, debe crear un par de claves nuevo.

Si se está conectando a su instancia desde un equipo Linux, le recomendamos que utilice el siguiente
comando para establecer los permisos de su archivo de clave privada de modo que solo usted pueda
leerlo.

$ chmod 400 MyKeyPair.pem

Mostrar un par de claves


Se genera una «huella digital» a partir del key pair, que puede utilizar para verificar que la clave privada
que tiene en su equipo local coincide con la clave pública almacenada enAWS.

163
AWS Command Line Interface Guía del usuario
Grupos de seguridad de Amazon EC2

La huella digital es un valor hash SHA1 tomado a partir de una copia de la clave privada con codificación
DER. Este valor se captura cuando se crea el par de claves y se almacena en AWS junto con la clave
pública. Puede ver la huella digital en la consola de Amazon EC2 o ejecutando laAWS CLIComando de
laaws ec2 describe-key-pairs.

En el siguiente ejemplo se muestra la huella digital de MyKeyPair.

$ aws ec2 describe-key-pairs --key-name MyKeyPair


{
"KeyPairs": [
{
"KeyName": "MyKeyPair",
"KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f"
}
]
}

Para obtener más información sobre las claves y las huellas, consultePares de claves de Amazon EC2en
laGuía del usuario de Amazon EC2 para instancias de Linux.

Eliminar un par de claves


Para eliminar un par de claves, ejecute el siguiente comando, sustituyendo MyKeyPair por el nombre del
par de claves que desea eliminar.

$ aws ec2 delete-key-pair --key-name MyKeyPair

Creación, configuración y eliminación de grupos de


seguridad para Amazon EC2
Puede crear un grupo de seguridad para las instancias de Amazon Elastic Compute Cloud (Amazon EC2)
que básicamente funciona como un firewall, con reglas que determinan el tráfico de red que puede entrar y
salir.

Puede crear grupos de seguridad para su uso en nube virtual privada (VPC) o en la red plana compartida
EC2-Classic. Para obtener más información acerca de las diferencias entre EC2-Classic y EC2-VPC,
consultePlataformas admitidasen laGuía del usuario de Amazon EC2 para instancias de Linux.

Utilice AWS Command Line Interface (AWS CLI) para crear un nuevo grupo de seguridad, añadir reglas a
grupos de seguridad existentes y eliminar grupos de seguridad.

Temas
• Prerequisites (p. 164)
• Crear un grupo de seguridad (p. 165)
• Agregar reglas al grupo de seguridad (p. 166)
• Eliminación de un grupo de seguridad (p. 168)

Prerequisites
Para ejecutar laec2, es necesario:

• Instalación y configuración de la AWS CLI. Para obtener más información, consulte Instalar, actualizar y
desinstalar elAWS CLI (p. 6) y Fundamentos de configuración (p. 47).

164
AWS Command Line Interface Guía del usuario
Grupos de seguridad de Amazon EC2

• Establezca sus permisos de IAM para permitir el acceso a Amazon EC2. Para obtener más información
sobre los permisos de IAM para Amazon EC2, consultePolíticas de IAM para Amazon EC2en laGuía del
usuario de Amazon EC2 para instancias de Linux.

Crear un grupo de seguridad


Puede crear grupos de seguridad asociados a VPC o para EC2-Classic.

EC2-VPC
En el siguiente ejemplo se muestra cómo crear un grupo de seguridad para una VPC especificada.

$ aws ec2 create-security-group --group-name my-sg --description "My security group" --vpc-
id vpc-1a2b3c4d
{
"GroupId": "sg-903004f8"
}

Para ver la información inicial de un grupo de seguridad, ejecute el comando describe-security-groups.


Solo puede hacer referencia a un grupo de seguridad de EC2-VPC por su vpc-id, no por su nombre.

$ aws ec2 describe-security-groups --group-ids sg-903004f8


{
"SecurityGroups": [
{
"IpPermissionsEgress": [
{
"IpProtocol": "-1",
"IpRanges": [
{
"CidrIp": "0.0.0.0/0"
}
],
"UserIdGroupPairs": []
}
],
"Description": "My security group"
"IpPermissions": [],
"GroupName": "my-sg",
"VpcId": "vpc-1a2b3c4d",
"OwnerId": "123456789012",
"GroupId": "sg-903004f8"
}
]
}

EC2-Classic
En el siguiente ejemplo se muestra cómo crear un grupo de seguridad para EC2-Classic.

$ aws ec2 create-security-group --group-name my-sg --description "My security group"


{
"GroupId": "sg-903004f8"
}

Para ver la información inicial de my-sg, ejecute el comando describe-security-groups. Para un grupo de
seguridad EC2-Classic, puede hacer referencia a él por su nombre.

$ aws ec2 describe-security-groups --group-names my-sg

165
AWS Command Line Interface Guía del usuario
Grupos de seguridad de Amazon EC2

{
"SecurityGroups": [
{
"IpPermissionsEgress": [],
"Description": "My security group"
"IpPermissions": [],
"GroupName": "my-sg",
"OwnerId": "123456789012",
"GroupId": "sg-903004f8"
}
]
}

Agregar reglas al grupo de seguridad


Cuando se ejecuta una instancia de Amazon EC2, debe habilitar reglas en el grupo de seguridad para
permitir el tráfico de red entrante en el medio que utilice para conectarse a la imagen.

Por ejemplo, si lanza una instancia de Windows, normalmente debe añadir una regla para permitir el tráfico
entrante en el puerto TCP 3389 (RDP) para dar soporte al protocolo de escritorio remoto (RDP). Si lanza
una instancia de Linux, normalmente debe añadir una regla para permitir el tráfico entrante en el puerto
TCP 22 (SSH) para dar soporte a las conexiones de SSH.

Use el comando authorize-security-group-ingress para añadir una regla a un grupo de


seguridad. Uno de los parámetros obligatorios de este comando es la dirección IP pública de su equipo, o
la red (en forma de un intervalo de direcciones) al que su equipo está asociada, en notación CIDR.
Note

Proporcionamos el siguiente servicio,https://checkip.amazonaws.com/Para determinar su


dirección IP pública. Para encontrar otros servicios que puedan ayudarle a identificar su dirección
IP, utilice el navegador para buscar"cuál es mi dirección IP". Si se conecta a través de un ISP o
protegido por su firewall mediante una dirección IP dinámica (a través de una gateway NAT desde
una red privada), su dirección puede cambiar de forma periódica. En ese caso, debe averiguar el
rango de direcciones IP que utilizan los equipos cliente.

EC2-VPC
En el siguiente ejemplo se muestra cómo agregar una regla para RDP (puerto TCP 3389) a un grupo de
seguridad EC2-VPC con el IDsg-903004f8utilizando su dirección IP.

Para empezar, busca tu dirección IP.

$ curl https://checkip.amazonaws.com
x.x.x.x

Para añadir la dirección IP a su grupo de seguridad, ejecute laauthorize-security-group-


ingresscomando.

$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port


3389 --cidr x.x.x.x

El siguiente comando añade otra regla para habilitar SSH en instancias en el mismo grupo de seguridad.

$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 22


--cidr x.x.x.x

166
AWS Command Line Interface Guía del usuario
Grupos de seguridad de Amazon EC2

Para ver los cambios realizados en el grupo de seguridad, ejecute el comando describe-security-groups.

$ aws ec2 describe-security-groups --group-ids sg-903004f8


{
"SecurityGroups": [
{
"IpPermissionsEgress": [
{
"IpProtocol": "-1",
"IpRanges": [
{
"CidrIp": "0.0.0.0/0"
}
],
"UserIdGroupPairs": []
}
],
"Description": "My security group"
"IpPermissions": [
{
"ToPort": 22,
"IpProtocol": "tcp",
"IpRanges": [
{
"CidrIp": "x.x.x.x"
}
]
"UserIdGroupPairs": [],
"FromPort": 22
}
],
"GroupName": "my-sg",
"OwnerId": "123456789012",
"GroupId": "sg-903004f8"
}
]
}

EC2-Classic
El siguiente comando añade una regla para RDP al grupo de seguridad EC2-Classic llamado my-sg.

$ aws ec2 authorize-security-group-ingress --group-name my-sg --protocol tcp --port 3389 --


cidr x.x.x.x

El siguiente comando añade otra regla para SSH al mismo grupo de seguridad.

$ aws ec2 authorize-security-group-ingress --group-name my-sg --protocol tcp --port 22 --


cidr x.x.x.x

Para ver los cambios realizados en el grupo de seguridad, ejecute el comando describe-security-groups.

$ aws ec2 describe-security-groups --group-names my-sg


{
"SecurityGroups": [
{
"IpPermissionsEgress": [],
"Description": "My security group"
"IpPermissions": [
{
"ToPort": 22,

167
AWS Command Line Interface Guía del usuario
Instancias EC2

"IpProtocol": "tcp",
"IpRanges": [
{
"CidrIp": "x.x.x.x"
}
]
"UserIdGroupPairs": [],
"FromPort": 22
}
],
"GroupName": "my-sg",
"OwnerId": "123456789012",
"GroupId": "sg-903004f8"
}
]
}

Eliminación de un grupo de seguridad


Para eliminar un grupo de seguridad, ejecute el comando delete-security-group.
Note

No puede eliminar un grupo de seguridad que esté conectado actualmente a un entorno.

EC2-VPC
El siguiente comando elimina el grupo de seguridad EC2-VPC.

$ aws ec2 delete-security-group --group-id sg-903004f8

EC2-Classic
El siguiente comando elimina el grupo de seguridad EC2-Classic denominado my-sg.

$ aws ec2 delete-security-group --group-name my-sg

Lanzamiento, enumeración y terminación de


instancias Amazon EC2
Puede utilizar elAWS Command Line Interface(AWS CLIPara lanzar, publicar y finalizar instancias de
Amazon Elastic Compute Cloud (Amazon EC2). Si lanza una instancia que no figura en la capa gratuita
de AWS, se le facturará en cuanto la lance y se le cobrará el tiempo en que la instancia esté funcionando,
aunque permanezca inactiva.

Temas
• Prerequisites (p. 169)
• Lanzar la instancia (p. 169)
• Agregar un dispositivo de bloques a la instancia (p. 172)
• Agregar una etiqueta a la instancia (p. 173)
• Conéctese a la instancia (p. 173)
• Enumerar las instancias (p. 173)
• Terminar una instancia (p. 173)

168
AWS Command Line Interface Guía del usuario
Instancias EC2

Prerequisites
Para ejecutar laec2En este tema, debe hacer lo siguiente:

• Instalación y configuración de la AWS CLI. Para obtener más información, consulte Instalar, actualizar y
desinstalar elAWS CLI (p. 6) y Fundamentos de configuración (p. 47).
• Establezca sus permisos de IAM para permitir el acceso a Amazon EC2. Para obtener más información
sobre los permisos de IAM para Amazon EC2, consultePolíticas de IAM para Amazon EC2en laGuía del
usuario de Amazon EC2 para instancias de Linux.
• Creación de unpar de claves (p. 162)y agrupo de seguridad (p. 164).
• Seleccione una imagen de máquina de Amazon (AMI) y anote su identificador. Para obtener más
información, consulteBúsqueda de una AMI adecuadaen laGuía del usuario de Amazon EC2 para
instancias de Linux.

Lanzar la instancia
Para lanzar una instancia Amazon EC2 utilizando la AMI que ha seleccionado, use la herramientarun-
instancescomando. Puede lanzar la instancia en una nube privada virtual (VPC) o, si su cuenta lo admite,
en EC2-Classic.

Al principio, la instancia aparece en el estado pending, pero cambia al estado running después de unos
minutos.

EC2-VPC
En el siguiente ejemplo se muestra cómo lanzar una instancia t2.micro en la subred especificada de una
VPC. Sustituya los valores del parámetro en cursiva por sus propios valores.

$ aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --key-


name MyKeyPair --security-group-ids sg-903004f8 --subnet-id subnet-6e7f829e
{
"OwnerId": "123456789012",
"ReservationId": "r-5875ca20",
"Groups": [
{
"GroupName": "my-sg",
"GroupId": "sg-903004f8"
}
],
"Instances": [
{
"Monitoring": {
"State": "disabled"
},
"PublicDnsName": null,
"Platform": "windows",
"State": {
"Code": 0,
"Name": "pending"
},
"EbsOptimized": false,
"LaunchTime": "2013-07-19T02:42:39.000Z",
"PrivateIpAddress": "10.0.1.114",
"ProductCodes": [],
"VpcId": "vpc-1a2b3c4d",
"InstanceId": "i-5203422c",
"ImageId": "ami-173d747e",
"PrivateDnsName": ip-10-0-1-114.ec2.internal,
"KeyName": "MyKeyPair",

169
AWS Command Line Interface Guía del usuario
Instancias EC2

"SecurityGroups": [
{
"GroupName": "my-sg",
"GroupId": "sg-903004f8"
}
],
"ClientToken": null,
"SubnetId": "subnet-6e7f829e",
"InstanceType": "t2.micro",
"NetworkInterfaces": [
{
"Status": "in-use",
"SourceDestCheck": true,
"VpcId": "vpc-1a2b3c4d",
"Description": "Primary network interface",
"NetworkInterfaceId": "eni-a7edb1c9",
"PrivateIpAddresses": [
{
"PrivateDnsName": "ip-10-0-1-114.ec2.internal",
"Primary": true,
"PrivateIpAddress": "10.0.1.114"
}
],
"PrivateDnsName": "ip-10-0-1-114.ec2.internal",
"Attachment": {
"Status": "attached",
"DeviceIndex": 0,
"DeleteOnTermination": true,
"AttachmentId": "eni-attach-52193138",
"AttachTime": "2013-07-19T02:42:39.000Z"
},
"Groups": [
{
"GroupName": "my-sg",
"GroupId": "sg-903004f8"
}
],
"SubnetId": "subnet-6e7f829e",
"OwnerId": "123456789012",
"PrivateIpAddress": "10.0.1.114"
}
],
"SourceDestCheck": true,
"Placement": {
"Tenancy": "default",
"GroupName": null,
"AvailabilityZone": "us-west-2b"
},
"Hypervisor": "xen",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"Status": "attached",
"DeleteOnTermination": true,
"VolumeId": "vol-877166c8",
"AttachTime": "2013-07-19T02:42:39.000Z"
}
}
],
"Architecture": "x86_64",
"StateReason": {
"Message": "pending",
"Code": "pending"
},
"RootDeviceName": "/dev/sda1",

170
AWS Command Line Interface Guía del usuario
Instancias EC2

"VirtualizationType": "hvm",
"RootDeviceType": "ebs",
"Tags": [
{
"Value": "MyInstance",
"Key": "Name"
}
],
"AmiLaunchIndex": 0
}
]
}

EC2-Classic
Si la cuenta lo admite, puede utilizar el siguiente comando para lanzar una instancia t1.micro en EC2-
Classic. Sustituya los valores del parámetro en cursiva por sus propios valores.

$ aws ec2 run-instances --image-id ami-173d747e --count 1 --instance-type t1.micro --key-


name MyKeyPair --security-groups my-sg
{
"OwnerId": "123456789012",
"ReservationId": "r-5875ca20",
"Groups": [
{
"GroupName": "my-sg",
"GroupId": "sg-903004f8"
}
],
"Instances": [
{
"Monitoring": {
"State": "disabled"
},
"PublicDnsName": null,
"Platform": "windows",
"State": {
"Code": 0,
"Name": "pending"
},
"EbsOptimized": false,
"LaunchTime": "2013-07-19T02:42:39.000Z",
"ProductCodes": [],
"InstanceId": "i-5203422c",
"ImageId": "ami-173d747e",
"PrivateDnsName": null,
"KeyName": "MyKeyPair",
"SecurityGroups": [
{
"GroupName": "my-sg",
"GroupId": "sg-903004f8"
}
],
"ClientToken": null,
"InstanceType": "t1.micro",
"NetworkInterfaces": [],
"Placement": {
"Tenancy": "default",
"GroupName": null,
"AvailabilityZone": "us-west-2b"
},
"Hypervisor": "xen",
"BlockDeviceMappings": [
{

171
AWS Command Line Interface Guía del usuario
Instancias EC2

"DeviceName": "/dev/sda1",
"Ebs": {
"Status": "attached",
"DeleteOnTermination": true,
"VolumeId": "vol-877166c8",
"AttachTime": "2013-07-19T02:42:39.000Z"
}
}
],
"Architecture": "x86_64",
"StateReason": {
"Message": "pending",
"Code": "pending"
},
"RootDeviceName": "/dev/sda1",
"VirtualizationType": "hvm",
"RootDeviceType": "ebs",
"Tags": [
{
"Value": "MyInstance",
"Key": "Name"
}
],
"AmiLaunchIndex": 0
}
]
}

Agregar un dispositivo de bloques a la instancia


Cada instancia que lance tiene un volumen de dispositivo raíz asociado. Puede utilizar la asignación de
dispositivos de bloque para especificar los volúmenes de Amazon Elastic Block Store (Amazon EBS)
adicionales o volúmenes de almacén de instancias para adjuntar a una instancia a la hora de lanzarla.

Para añadir un dispositivo de bloque a la instancia, especifique la opción --block-device-mappings


cuando utilice run-instances.

En el parámetro del siguiente ejemplo aprovisiona un volumen estándar de Amazon EBS con un tamaño
de 20 GB y lo asigna a su instancia con el identificador/dev/sdf.

--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"VolumeSize\":20,
\"DeleteOnTermination\":false}}]"

En el siguiente ejemplo se añade un volumen de Amazon EBS, asignado a/dev/sdf, a partir de una
instantánea existente. Una instantánea representa una imagen que se carga en el volumen por usted.
Cuando se especifica una instantánea, no es necesario especificar un tamaño de volumen; será lo
suficientemente grande como para almacenar la imagen. Sin embargo, si especifica un tamaño, este
deberá ser igual o mayor que el tamaño de la instantánea.

--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"SnapshotId\":\"snap-
a1b2c3d4\"}}]"

En el siguiente ejemplo se añaden dos volúmenes a la instancia. El número de volúmenes disponibles para
su instancia depende del tipo de instancia.

--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"VirtualName\":\"ephemeral0\"},
{\"DeviceName\":\"/dev/sdg\",\"VirtualName\":\"ephemeral1\"}]"

En el siguiente ejemplo se crea el mapeo (/dev/sdj), pero no se aprovisiona un volumen para la


instancia.

172
AWS Command Line Interface Guía del usuario
Instancias EC2

--block-device-mappings "[{\"DeviceName\":\"/dev/sdj\",\"NoDevice\":\"\"}]"

Para obtener más información, consulteMapeo de dispositivos de bloques deen laGuía del usuario de
Amazon EC2 para instancias de Linux.

Agregar una etiqueta a la instancia


Una etiqueta es una marca que se asigna a un recurso de AWS. Le permite añadir metadatos a los
recursos que puede utilizar para distintos fines. Para obtener más información, consulteEtiquetado de los
recursosen laGuía del usuario de Amazon EC2 para instancias de Linux.

En el siguiente ejemplo se muestra cómo añadir una etiqueta con el nombre de clave»Name«y el
valor»MyInstance«a la instancia especificada, mediante el uso decreate-tagscomando.

$ aws ec2 create-tags --resources i-5203422c --tags Key=Name,Value=MyInstance

Conéctese a la instancia
Puede conectarse a su instancia mientras se esté ejecutando y utilizarla como si fuera un equipo que tiene
delante. Para obtener más información, consulteConnect a su instancia Amazon EC2en laGuía del usuario
de Amazon EC2 para instancias de Linux.

Enumerar las instancias


Puede utilizar la AWS CLI para mostrar las instancias y ver información de las mismas. Puede incluir todas
sus instancias en la lista o filtrar los resultados en función de las instancias que le interesen.

En los siguientes ejemplos, se muestra cómo utilizar el comando describe-instances.

El siguiente comando filtra únicamente las instancias t2.micro de la lista y devuelve únicamente los
valores InstanceId para cada coincidencia.

$ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" --query


"Reservations[].Instances[].InstanceId"
[
"i-05e998023d9c69f9a"
]

El siguiente comando muestra todas las instancias que tienen la etiqueta Name=MyInstance.

$ aws ec2 describe-instances --filters "Name=tag:Name,Values=MyInstance"

El siguiente comando muestra las instancias que tiene y que se iniciaron con cualquiera de las siguientes
AMI: ami-x0123456, ami-y0123456y ami-z0123456.

$ aws ec2 describe-instances --filters "Name=image-id,Values=ami-x0123456,ami-y0123456,ami-


z0123456"

Terminar una instancia


Al terminar una instancia, esta se elimina. Una vez se ha terminado la instancia, no es posible volver a
conectarse a ella.

173
AWS Command Line Interface Guía del usuario
Cambiar el tipo de EC2 mediante
secuencias de comandos bash

En cuanto el estado de la instancia cambie a shutting-down o a terminated, dejará de incurrir en


costos por ella. Si desea volver a conectarse a una instancia más adelante, utilice stop-instances en lugar
de terminate-instances. Para obtener más información, consulte Terminar la instancia en la Guía del
usuario de Amazon EC2 para instancias de Linux.

Cuando haya finalizado con una instancia, puede usar el comando terminate-instances para eliminarla.

$ aws ec2 terminate-instances --instance-ids i-5203422c


{
"TerminatingInstances": [
{
"InstanceId": "i-5203422c",
"CurrentState": {
"Code": 32,
"Name": "shutting-down"
},
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}

Cambie un tipo de instancia Amazon EC2 utilizando


un script bash
En este ejemplo de secuencias de comandos bash para Amazon EC2 se cambia el tipo de instancia de
una instancia de Amazon EC2 mediante el métodoAWS Command Line Interface(AWS CLI). Detiene
la instancia si se está ejecutando, cambia el tipo de instancia y, a continuación, si se solicita, reinicia
la instancia. Los scripts de shell son programas diseñados para ejecutarse en una interfaz de línea de
comandos.

Temas
• Antes de comenzar (p. 174)
• Acerca de este ejemplo (p. 175)
• Parameters (p. 175)
• Files (p. 175)
• References (p. 176)

Antes de comenzar
Antes de que pueda ejecutar cualquiera de los siguientes ejemplos, debe completarse lo siguiente.

• AWS CLIinstalado, consulteInstalar, actualizar y desinstalar elAWS CLI (p. 6)para obtener más
información.
• AWS CLIconfigurado, consulteFundamentos de configuración (p. 47)para obtener más información. El
perfil que utilice debe tener permisos que permitan elAWSoperaciones realizadas por los ejemplos.
• Una instancia de Amazon EC2 en ejecución en la cuenta para la que tiene permiso para detener y
modificar. Si ejecuta el script de prueba, inicia una instancia por usted, prueba el cambio del tipo y, a
continuación, finaliza la instancia.
• ComoAWSConceder privilegios mínimos a este código, o solo los permisos necesarios para llevar a
cabo una tarea. Para obtener más información, consulteConceder privilegios mínimosen laAWSGuía del
usuario de Identity and Access Management (IAM).

174
AWS Command Line Interface Guía del usuario
Cambiar el tipo de EC2 mediante
secuencias de comandos bash

• Este código no ha sido probado en todos losAWSRegiones. AlgunoAWSLos servicios solo están
disponibles en regiones específicas. Para obtener más información, consulteCuotas y puntos de enlace
de servicioen laAWSGuía general de referencia.
• La ejecución de este código puede producir cargos en suAWSaccount. Es su responsabilidad
asegurarse de que los recursos creados por este script se eliminen cuando haya terminado con ellos.

Acerca de este ejemplo


Este ejemplo se escribe como una función en el archivo de script de
shellchange_ec2_instance_type.shPuede hacer lo siguientesourceDesde otro script o desde la
línea de comandos. Cada archivo de script contiene comentarios que describen cada una de las funciones.
Una vez que la función está en la memoria, puede invocarla desde la línea de comandos. Por ejemplo, los
comandos siguientes cambian el tipo de la instancia especificada at2.nano:

$ source ./change_ec2_instance_type.sh
$ ./change_ec2_instance_type -i *instance-id* -t new-type

Para obtener el ejemplo completo y los archivos de script descargables, consulteCambie el tipo de
instancia Amazon EC2en laAWSEjemplos de código de repositorioenGitHub.

Parameters
-i-(cadena)Especifica el ID de instancia que se va a modificar.

-t-(cadena)Especifica el tipo de instancia Amazon EC2 al que se va a cambiar.

-r-(switch)De forma predeterminada, no se establece. Si-r, reinicia la instancia después del modificador de
tipo.

-f-(switch)De forma predeterminada, el script solicita al usuario que confirme el cierre de la instancia antes
de realizar el cambio. Si-f, la función no le pide al usuario antes de apagar la instancia para hacer el
cambio de tipo

-v-(switch)De forma predeterminada, el script funciona de forma silenciosa y muestra la salida solo en caso
de error. Si-v, la función muestra el estado a lo largo de su operación.

Files
change_ec2_instance_type.sh

El archivo de script principal contiene elchange_ec2_instance_type()La función que realiza las


siguientes tareas:
• Verifica que existe la instancia Amazon EC2 especificada.
• A menos que-f, advierte al usuario antes de detener la instancia.
• Cambie el tipo de instancia
• Si configura-r, reinicia la instancia y confirma que la instancia se está ejecutando

Ver el código dechange_ec2_instance_type.shenGitHub.

test_change_ec2_instance_type.sh

El archivochange_ec2_instance_type_test.shprueba las diversas rutas de código para


elchange_ec2_instance_typefunción. Si todos los pasos del script de prueba funcionan
correctamente, el script de prueba elimina todos los recursos que ha creado.

175
AWS Command Line Interface Guía del usuario
S3 Glacier

Puede ejecutar el script de prueba con los siguientes parámetros:


• -v-(switch)Cada prueba muestra un estado de superación/fallo a medida que se ejecutan. De forma
predeterminada, las pruebas se ejecutan silenciosamente y la salida incluye solo el estado final de
pasado/fallo.
• -i-(switch)El script se detiene después de cada prueba para permitirle examinar los resultados
intermedios de cada paso. Le permite examinar el estado actual de la instancia mediante
la consola de Amazon EC2. La secuencia de comandos pasa al siguiente paso después de
presionarESCRIBAEn el símbolo del sistema.

Ver el código detest_change_ec2_instance_type.shenGitHub.

awsdocs_general.sh

El archivo de scriptawsdocs_general.shcontiene funciones de propósito general utilizadas en


ejemplos avanzados para elAWS CLI.

Ver el código deawsdocs_general.shenGitHub.

References
AWS CLI Referencia:

• aws ec2
• aws ec2 describe-instances
• aws ec2 modify-instance-attribute
• aws ec2 start-instances
• aws ec2 stop-instances
• aws ec2 wait instance-running
• aws ec2 wait instance-stopped

Otras referencias:

• Documentación de Amazon Elastic Compute Cloud


• Para ver y contribuir aAWSSDK yAWS CLIPara ejemplos de código, consulte laAWSEjemplos de código
de repositorioenGitHub.

Con Amazon S3 GlacierAWS CLI


Introducción a Amazon Glacier

Puede obtener acceso a las características de Amazon S3 Glacier con laAWS Command Line
Interface(AWS CLI). Para mostrar elAWS CLIpara S3 Glacier, utilice el siguiente comando.

aws glacier help

En este tema se muestran ejemplos deAWS CLIcommands que realizan tareas comunes para S3 Glacier.
En los ejemplos se muestra cómo utilizar elAWS CLIPara cargar un archivo de gran tamaño a S3 Glacier
dividiéndolo en partes más pequeñas y cargándolas desde la línea de comandos.

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

176
AWS Command Line Interface Guía del usuario
Cree un almacén de Amazon S3 Glacier

Note
Este tutorial utiliza varias herramientas de línea de comandos que normalmente vienen
preinstaladas en los sistemas operativos tipo Unix, como Linux y macOS. Los usuarios de
Windows pueden usar las mismas herramientas instalando Cygwin y ejecutando los comandos
desde el terminal de Cygwin. Se indicará en cada caso si hay disponibles utilidades y comandos
nativos de Windows que realicen las mismas funciones.

Temas
• Cree un almacén de Amazon S3 Glacier (p. 177)
• Preparación de un archivo para cargarlo (p. 177)
• Inicio de una carga multiparte y carga de archivos (p. 178)
• Finalización de la carga (p. 179)

Cree un almacén de Amazon S3 Glacier


Cree un almacén con el comando create-vault.

$ aws glacier create-vault --account-id - --vault-name myvault


{
"location": "/123456789012/vaults/myvault"
}

Note
Todos los comandos de S3 Glacier requieren un parámetro de ID de cuenta. Utilice el carácter de
guion (--account-id -) para utilizar la cuenta actual.

Preparación de un archivo para cargarlo


Cree un archivo para la carga de prueba. Los comandos siguientes crean un archivo llamado largefile
que contiene exactamente 3 MiB de datos aleatorios.

Linux o macOS

$ dd if=/dev/urandom of=largefile bs=3145728 count=1


1+0 records in
1+0 records out
3145728 bytes (3.1 MB) copied, 0.205813 s, 15.3 MB/s

dd es una utilidad que copia un número de bytes de un archivo de entrada en un archivo de salida. En
el ejemplo anterior se usa el archivo de dispositivo de sistema /dev/urandom como origen de datos
aleatorios. fsutil realiza una función similar en Windows.

Windows

C:\> fsutil file createnew largefile 3145728


File C:\temp\largefile is created

A continuación, divida el archivo en fragmentos de 1 MiB (1048576 bytes).

$ split -b 1048576 --verbose largefile chunk


creating file `chunkaa'
creating file `chunkab'
creating file `chunkac'

177
AWS Command Line Interface Guía del usuario
Inicio de una carga multiparte y carga de archivos

Note

HJ-Split es un divisor de archivos gratuito para Windows y muchas otras plataformas.

Inicio de una carga multiparte y carga de archivos


Cree una carga multiparte en Amazon S3 Glacier con lainitiate-multipart-uploadcommand.

$ aws glacier initiate-multipart-upload --account-id - --archive-description "multipart


upload test" --part-size 1048576 --vault-name myvault
{
"uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-
OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ",
"location": "/123456789012/vaults/myvault/multipart-
uploads/19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-
OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
}

S3 Glacier requiere especificar el tamaño de cada parte en bytes (1 MiB en este ejemplo), el nombre
del almacén y el ID de cuenta para configurar la carga multiparte. La AWS CLI genera un ID de carga al
completarse la operación. Guarde el ID de carga en una variable de shell para su uso posterior.

Linux o macOS

$ UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-
OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"

Windows

C:\> set UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-


OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"

A continuación, use el comando upload-multipart-part para cargar cada una de las tres partes.

$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkaa --range 'bytes


0-1048575/*' --account-id - --vault-name myvault
{
"checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkab --range 'bytes
1048576-2097151/*' --account-id - --vault-name myvault
{
"checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkac --range 'bytes
2097152-3145727/*' --account-id - --vault-name myvault
{
"checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}

Note

En el ejemplo anterior se usa el signo de dólar ($) para hacer referencia al contenido de la
variable de shell UPLOADID en Linux. En la línea de comandos de Windows, utilice un signo de
porcentaje (%) a ambos lados del nombre de variable (por ejemplo,%UPLOADID%).

Debe especificar el intervalo de bytes de cada parte al cargarla, para que S3 Glacier pueda volver a
ensamblarlas en el orden adecuado. Cada parte tiene 1048576 bytes, por lo que la primera ocupa los
bytes del 0 al 1048575, la segunda del 1048576 al 2097151 y la tercera del 2097152 al 3145727.

178
AWS Command Line Interface Guía del usuario
Finalización de la carga

Finalización de la carga
Amazon S3 Glacier requiere un algoritmo hash en árbol del archivo original, para poder confirmar que
todas las partes cargadas llegan aAWSintacto.

Para calcular un algoritmo hash en árbol, divida el archivo en partes de 1 MiB y calcule un hash SHA-256
binario de cada fragmento. A continuación, divida la lista de hashes en pares, combine los dos hashes
binarios de cada par y tome los hashes de los resultados. Repita este proceso hasta que solo quede un
hash. Si hay un número impar de hashes en cualquier nivel, páselo al nivel siguiente sin modificarlo.

La clave para calcular un algoritmo hash en árbol correctamente al usar utilidades de línea de comandos
es almacenar cada hash en formato binario y convertir a hexadecimal solamente en el último paso. Si la
versión hexadecimal de cualquier hash del árbol se combina o se convierte a algoritmo hash, se obtendrá
un resultado incorrecto.
Note

Los usuarios de Windows pueden utilizar el comando type en lugar de cat. OpenSSL está
disponible para Windows en OpenSSL.org.

Para calcular un algoritmo hash en árbol

1. Divida el archivo original en partes de 1 MiB, si no lo ha hecho aún.

$ split --bytes=1048576 --verbose largefile chunk


creating file `chunkaa'
creating file `chunkab'
creating file `chunkac'

2. Calcule y almacene el hash SHA-256 binario de cada fragmento.

$ openssl dgst -sha256 -binary chunkaa > hash1


$ openssl dgst -sha256 -binary chunkab > hash2
$ openssl dgst -sha256 -binary chunkac > hash3

3. Combine los dos primeros hashes y tome el hash binario del resultado.

$ cat hash1 hash2 > hash12


$ openssl dgst -sha256 -binary hash12 > hash12hash

4. Combine el hash principal de los fragmentos aa y ab con el hash del fragmento ac y cree un hash del
resultado, esta vez con formato hexadecimal. Almacene el resultado en una variable de shell.

$ cat hash12hash hash3 > hash123


$ openssl dgst -sha256 hash123
SHA256(hash123)= 9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67
$ TREEHASH=9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67

Por último, complete la carga con el comando complete-multipart-upload, que toma el tamaño del
archivo original en bytes, el valor final del algoritmo hash en árbol en formato hexadecimal, su ID de cuenta
y el nombre del almacén.

$ aws glacier complete-multipart-upload --checksum $TREEHASH --archive-size 3145728 --


upload-id $UPLOADID --account-id - --vault-name myvault
{
"archiveId": "d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-
N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg",

179
AWS Command Line Interface Guía del usuario
IAM

"checksum": "9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67",
"location": "/123456789012/vaults/myvault/archives/
d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-
QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg"
}

También puede comprobar el estado del almacén con el comando describe-vault.

$ aws glacier describe-vault --account-id - --vault-name myvault


{
"SizeInBytes": 3178496,
"VaultARN": "arn:aws:glacier:us-west-2:123456789012:vaults/myvault",
"LastInventoryDate": "2018-12-07T00:26:19.028Z",
"NumberOfArchives": 1,
"CreationDate": "2018-12-06T21:23:45.708Z",
"VaultName": "myvault"
}

Note

El estado del almacén se actualiza una vez al día. Consulte Trabajar con almacenes para obtener
más información.

Ahora puede quitar sin problemas el fragmento y los archivos hash que ha creado.

$ rm chunk* hash*

Para obtener más información sobre cargas multiparte de, consulteCarga de archivos grandes por
partesyCálculo de sumas de comprobaciónen laGuía para desarrolladores de Amazon S3 Glacier.

Uso de AWS Identity and Access Management


desde AWS CLI
Introducción a AWS Identity and Access Management

Puede obtener acceso a las características deAWS Identity and Access Management(IAM) conAWS
Command Line Interface(AWS CLI). Para mostrar laAWS CLIPara IAM, utilice el comando siguiente.

aws iam help

En este tema se muestran ejemplos deAWS CLIComandos de la que realizan tareas comunes para IAM.

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

Para obtener más información sobre el servicio IAM, consulte la Guía del usuario de AWS Identity and
Access Management.

Temas
• Creación de usuarios y grupos de IAM (p. 181)
• Asociación de una política administrada por IAM a un usuario de IAM (p. 182)
• Establecimiento de una contraseña inicial para un usuario de IAM (p. 182)
• Creación de una clave de acceso para un usuario de IAM (p. 183)

180
AWS Command Line Interface Guía del usuario
Creación de usuarios y grupos de IAM

Creación de usuarios y grupos de IAM


En este tema se describe cómo utilizarAWS Command Line Interface(AWS CLI) para crear unAWS
Identity and Access Management(IAM) y un nuevo usuario de IAM, y agregue el usuario al grupo. Para
obtener más información sobre el servicio IAM, consulte la Guía del usuario de AWS Identity and Access
Management.

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

Para crear un grupo de IAM y agregar un nuevo usuario de IAM

1. Utilice el comando create-group para crear el grupo.

$ aws iam create-group --group-name MyIamGroup


{
"Group": {
"GroupName": "MyIamGroup",
"CreateDate": "2018-12-14T03:03:52.834Z",
"GroupId": "AGPAJNUJ2W4IJVEXAMPLE",
"Arn": "arn:aws:iam::123456789012:group/MyIamGroup",
"Path": "/"
}
}

2. Use el comando create-user para crear el usuario.

$ aws iam create-user --user-name MyUser


{
"User": {
"UserName": "MyUser",
"Path": "/",
"CreateDate": "2018-12-14T03:13:02.581Z",
"UserId": "AIDAJY2PE5XUZ4EXAMPLE",
"Arn": "arn:aws:iam::123456789012:user/MyUser"
}
}

3. Use el comando add-user-to-group para añadir el usuario al grupo.

$ aws iam add-user-to-group --user-name MyUser --group-name MyIamGroup

4. Para verificar que el grupo MyIamGroup contiene al usuario MyUser, use el comando get-group.

$ aws iam get-group --group-name MyIamGroup


{
"Group": {
"GroupName": "MyIamGroup",
"CreateDate": "2018-12-14T03:03:52Z",
"GroupId": "AGPAJNUJ2W4IJVEXAMPLE",
"Arn": "arn:aws:iam::123456789012:group/MyIamGroup",
"Path": "/"
},
"Users": [
{
"UserName": "MyUser",
"Path": "/",
"CreateDate": "2018-12-14T03:13:02Z",
"UserId": "AIDAJY2PE5XUZ4EXAMPLE",
"Arn": "arn:aws:iam::123456789012:user/MyUser"
}

181
AWS Command Line Interface Guía del usuario
Asociación de una política administrada
por IAM a un usuario de IAM

],
"IsTruncated": "false"
}

Asociación de una política administrada por IAM a un


usuario de IAM
En este tema se describe cómo utilizarAWS Command Line Interface(AWS CLI) para adjuntar unAWS
Identity and Access Management(IAM) a un usuario de IAM. La política de este ejemplo ofrece al usuario
acceso avanzado ("Power User Access"). Para obtener más información sobre el servicio IAM, consulte la
Guía del usuario de AWS Identity and Access Management.

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

Para asociar una política administrada por IAM a un usuario de IAM

1. Determine el nombre de recurso de Amazon (ARN) de la política que desea asociar. El siguiente
comando usa list-policies para buscar el ARN de la política con el nombre PowerUserAccess.
A continuación, almacena dicho ARN en una variable de entorno.

$ export POLICYARN=$(aws iam list-policies --query 'Policies[?


PolicyName==`PowerUserAccess`].{ARN:Arn}' --output text) ~
$ echo $POLICYARN
arn:aws:iam::aws:policy/PowerUserAccess

2. Para asociar la política, utilice el comando attach-user-policy y haga referencia a la variable de


entorno que contiene la política de ARN.

$ aws iam attach-user-policy --user-name MyUser --policy-arn $POLICYARN

3. Ejecute el comando list-attached-user-policies para verificar que la política se ha asociado


al usuario.

$ aws iam list-attached-user-policies --user-name MyUser


{
"AttachedPolicies": [
{
"PolicyName": "PowerUserAccess",
"PolicyArn": "arn:aws:iam::aws:policy/PowerUserAccess"
}
]
}

Para obtener más información, consulte Recursos de administración de acceso. En este tema se incluyen
vínculos a información general sobre permisos y políticas, además de vínculos a ejemplos de políticas para
acceder a Amazon S3, Amazon EC2 y otros servicios.

Establecimiento de una contraseña inicial para un


usuario de IAM
En este tema se describe cómo utilizarAWS Command Line Interface(AWS CLI) para configurar una
contraseña inicial para unAWS Identity and Access Management(IAM). Para obtener más información
sobre el servicio IAM, consulte la Guía del usuario de AWS Identity and Access Management.

182
AWS Command Line Interface Guía del usuario
Creación de una clave de acceso para un usuario de IAM

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

El comando siguiente utiliza create-login-profile para configurar una contraseña inicial en el usuario
especificado. Cuando el usuario inicia sesión por primera vez, se le solicitará que cambie la contraseña y
elija una que solo él conozca.

$ aws iam create-login-profile --user-name MyUser --password My!User1Login8P@ssword --


password-reset-required
{
"LoginProfile": {
"UserName": "MyUser",
"CreateDate": "2018-12-14T17:27:18Z",
"PasswordResetRequired": true
}
}

Puede utilizar laupdate-login-profileCommand aCHANGELa contraseña de un usuario de IAM.

$ aws iam update-login-profile --user-name MyUser --password My!User1ADifferentP@ssword

Creación de una clave de acceso para un usuario de


IAM
En este tema se describe cómo utilizarAWS Command Line Interface(AWS CLI) para crear un conjunto
de claves de acceso para unAWS Identity and Access Management(IAM). Para obtener más información
sobre el servicio IAM, consulte la Guía del usuario de AWS Identity and Access Management.

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

Puede utilizar lacreate-access-keyPara crear una clave de acceso para un usuario de IAM. Una clave
de acceso es un conjunto de credenciales de seguridad que se compone de un ID de clave de acceso y
una clave secreta.

Un usuario de IAM solo puede crear dos claves de acceso al mismo tiempo. Si intenta crear un tercer
conjunto, el comando devuelve un error LimitExceeded.

$ aws iam create-access-key --user-name MyUser


{
"AccessKey": {
"UserName": "MyUser",
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"Status": "Active",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"CreateDate": "2018-12-14T17:34:16Z"
}
}

Usardelete-access-keyComando de la para eliminar una clave de acceso para un usuario de IAM.


Especifique la clave de acceso que quiera eliminar mediante el ID de clave de acceso.

$ aws iam delete-access-key --user-name MyUser --access-key-id AKIAIOSFODNN7EXAMPLE

183
AWS Command Line Interface Guía del usuario
Amazon S3

Uso de Amazon S3 con laAWS CLI


Introducción a Amazon Simple Storage Service (S3): almacenamiento en la nube en AWS

Puede acceder a las funciones de Amazon Simple Storage Service (Amazon S3) mediante laAWS
Command Line Interface(AWS CLI). LaAWS CLILa ofrece dos niveles de comandos para acceder a
Amazon S3:

• El nivel s3 se compone de comandos de alto nivel que simplifican la realización de tareas comunes,
como crear, manipular y eliminar objetos y buckets.
• Las3apise comporta de manera idéntica a otrosAWSAl exponer el acceso directo a todas las
operaciones de la API de Amazon S3. Le permite realizar operaciones avanzadas que podrían no ser
posibles solamente con los comandos de alto nivel del siguiente nivel.

Temas de esta guía:


• Uso de comandos (s3) de alto nivel con laAWS CLI (p. 184)
• Uso de comandos de nivel de API (s3api) con laAWS CLI (p. 192)
• Ejemplo de scripting de las operaciones del ciclo de vida del bucket de Amazon S3: (p. 194)

Note

LaAWS CLILa admite copiar, transferir y sincronizar desde Amazon S3 a Amazon S3 mediante
lalado del servidor COPYOperación proporcionada por Amazon S3. Esto significa que sus archivos
se conservan en la nube y senoDescargado en el equipo cliente y, a continuación, haga una copia
de seguridad en Amazon S3.
Cuando este tipo de operaciones se pueden llevar a cabo totalmente en la nube, solo se usa el
ancho de banda necesario para la solicitud y la respuesta HTTP.

Uso de comandos (s3) de alto nivel con laAWS CLI


En este tema se describe cómo administrar buckets y objetos de Amazon S3 mediante laaws
s3Comandos de en laAWS CLI.

La de alto nivelaws s3simplifican la gestión de objetos de Amazon S3. Estos comandos le permiten
administrar el contenido de Amazon S3 dentro de sí mismo y con directorios locales.
Note

Cuando usaaws s3Para cargar objetos de gran tamaño en un bucket de Amazon S3, el
comandoAWS CLIRealiza automáticamente una carga multiparte. No se puede reanudar una
carga fallida cuando se utilizan estosaws s3commands.
Si la carga multiparte falla debido a un tiempo de espera, o si canceló manualmente en elAWS
CLI, elAWS CLIdetiene la carga y limpia los archivos que se han creado. Este proceso puede
tardar varios minutos.
Si el proceso de carga o limpieza de varias partes se cancela por un comando kill o un error del
sistema, los archivos creados permanecen en el depósito de Amazon S3. Para limpiar la carga de
varias partes, utilice la herramientas3api abort-multipart-uploadEl comando de.
Para obtener más información, consulteInformación general sobre la carga multiparteen laAmazon
Simple Storage Service Developer Guide.

Temas
• Prerequisites (p. 185)
• Crear un bucket (p. 185)

184
AWS Command Line Interface Guía del usuario
Alto nivel (s3comandos de)

• Lista de depósitos y objetos (p. 185)


• Eliminar buckets (p. 186)
• Eliminar objetos (p. 186)
• Mover objetos (p. 187)
• Copia de objetos (p. 187)
• Sincronizar objetos (p. 189)
• Opciones más utilizadas para los comandos s3 (p. 190)
• Resources (p. 192)

Prerequisites
Para ejecutar las3, necesita:

• AWS CLIinstalado, consulteInstalar, actualizar y desinstalar elAWS CLI (p. 6)para obtener más
información.
• AWS CLIconfigurado, consulteFundamentos de configuración (p. 47)para obtener más información. El
perfil que utilice debe tener permisos que permitan elAWSoperaciones realizadas por los ejemplos.
• Comprenda estos términos de Amazon S3:
• Bucket— Una carpeta de Amazon S3 de nivel superior.
• Prefix— Una carpeta de Amazon S3 en un bucket.
• Objeto— Cualquier artículo hospedado en un bucket de Amazon S3.

Crear un bucket
Usars3 mbpara crear un depósito. Los nombres de bucket debenglobalmenteSer único (único en todo
Amazon S3) y compatible con DNS.

Los nombres de los buckets pueden contener minúsculas, números, guiones y puntos. Los nombres de los
buckets solo pueden empezar y terminar con una letra o número, y no pueden contener un punto junto a
un guion u otro punto.

Sintaxis

$ aws s3 mb <target> [--options]

ejemplos de s3 mb

En el siguiente ejemplo se crea las3://bucket-nameBucket de.

$ aws s3 mb s3://bucket-name

Lista de depósitos y objetos


Para enumerar los depósitos, carpetas u objetos, utilice la herramientas3 lsEl comando de. El uso del
comando sin destino u opciones muestra todos los depósitos.

Sintaxis

$ aws s3 ls <target> [--options]

185
AWS Command Line Interface Guía del usuario
Alto nivel (s3comandos de)

Para ver algunas opciones comunes que se pueden utilizar con este comando y ejemplos,
consulteOpciones más utilizadas para los comandos s3 (p. 190). Para obtener una lista completa de las
opciones disponibles, consulte.s3 lsen laAWS CLIReferencia de los comandos de la.

s3 ls ejemplos

En el siguiente ejemplo se muestran todos los buckets de Amazon S3.

$ aws s3 ls
2018-12-11 17:08:50 my-bucket
2018-12-14 14:55:44 my-bucket2

El siguiente comando muestra todos los objetos y prefijos de un bucket. En este resultado de ejemplo, el
prefijoexample/tiene un archivo llamadoMyFile1.txt.

$ aws s3 ls s3://bucket-name
PRE example/
2018-12-04 19:05:48 3 MyFile1.txt

Para filtrar la salida por un prefijo específico, inclúyalo en el comando. En el siguiente comando
se muestran los objetos denombre/ejemplo/(es decir, objetos ennombre-bucketfiltrado por el
prefijoejemplo/).

$ aws s3 ls s3://bucket-name/example/
2018-12-06 18:59:32 3 MyFile1.txt

Eliminar buckets
Para eliminar un bucket, use las3 rbEl comando de.

Sintaxis

$ aws s3 rb <target> [--options]

ejemplos de s3 rb

En el siguiente ejemplo se quita las3://bucket-nameBucket de.

$ aws s3 rb s3://bucket-name

De forma predeterminada, el bucket debe estar vacío para que la operación se realice correctamente. Para
eliminar un bucket que no esté vacío, debe incluir el--forceOpción. Si utiliza un bucket versionado que
contenga objetos eliminados previamente, pero que se conservan, este comando hacenole permiten quitar
el cubo. En primer lugar, debe eliminar todo el contenido.

En el siguiente ejemplo se eliminan todos los objetos y prefijos del bucket y, a continuación, se elimina el
bucket.

$ aws s3 rb s3://bucket-name --force

Eliminar objetos
Para eliminar objetos en un depósito o en el directorio local, utilice la herramientas3 rmEl comando de.

186
AWS Command Line Interface Guía del usuario
Alto nivel (s3comandos de)

Sintaxis

$ aws s3 rm <target> [--options]

Para ver algunas opciones comunes que se pueden utilizar con este comando y ejemplos,
consulteOpciones más utilizadas para los comandos s3 (p. 190). Para obtener una lista completa de
opciones, consulte.s3 rmen laAWS CLIReferencia de los comandos de la.

ejemplos de s3 rm

En el siguiente ejemplo se eliminafilename.txtdesdes3://bucket-name/example.

$ aws s3 rm s3://bucket-name/example/filename.txt --recursive

En el siguiente ejemplo se eliminan todos los objetos des3://bucket-name/exampleMediante la--


recursiveOpción.

$ aws s3 rm s3://bucket-name/example --recursive

Mover objetos
Usars3 mvpara mover objetos desde un depósito o un directorio local.

Sintaxis

$ aws s3 mv <source> <target> [--options]

Para ver algunas opciones comunes que se pueden utilizar con este comando y ejemplos,
consulteOpciones más utilizadas para los comandos s3 (p. 190). Para obtener una lista completa de las
opciones disponibles, consulte.s3 mven laAWS CLIReferencia de los comandos de la.

ejemplos de s3 mv

En el ejemplo siguiente se mueven todos los objetos des3://bucket-name/exampleDe as3://my-


bucket/.

$ aws s3 mv s3://bucket-name/example s3://my-bucket/

En el ejemplo siguiente se mueve un archivo local desde el directorio de trabajo actual al bucket de
Amazon S3 con la propiedads3 cpEl comando de.

$ aws s3 mv filename.txt s3://bucket-name

En el siguiente ejemplo se mueve un archivo del bucket de Amazon S3 al directorio de trabajo actual,
donde./especifica el directorio de trabajo actual.

$ aws s3 mv s3://bucket-name/filename.txt ./

Copia de objetos
Usars3 cppara copiar objetos de un depósito o un directorio local.

Sintaxis

187
AWS Command Line Interface Guía del usuario
Alto nivel (s3comandos de)

$ aws s3 cp <source> <target> [--options]

Puede usar el parámetro de guión para la transmisión de archivos a la entrada estándar (stdin) o salida
estándar (stdout).
Warning

Si está utilizando PowerShell, el shell podría alterar la codificación de un CRLF o agregar un


CRLF a la entrada o salida canalizada, o a la salida redirigida.

Las3 cpEl comando utiliza la siguiente sintaxis para cargar un flujo de archivos desdestdinEn un bucket
especificado.

Sintaxis

$ aws s3 cp - <target> [--options]

Las3 cputiliza la siguiente sintaxis para descargar una secuencia de archivos de Amazon S3
parastdout.

Sintaxis

$ aws s3 cp <target> [--options] -

Para ver algunas opciones comunes que se pueden utilizar con este comando y ejemplos,
consulteOpciones más utilizadas para los comandos s3 (p. 190). Para obtener una lista completa de
opciones, consulte.s3 cpen laAWS CLIReferencia de los comandos de la.

Ejemplos del s3 cp

En el siguiente ejemplo se copian todos los objetos des3://bucket-name/exampleDe as3://my-


bucket/.

$ aws s3 cp s3://bucket-name/example s3://my-bucket/

En el ejemplo siguiente se copia un archivo local de su directorio de trabajo actual al bucket de Amazon S3
con la propiedads3 cpEl comando de.

$ aws s3 cp filename.txt s3://bucket-name

En el siguiente ejemplo se copia un archivo del bucket de Amazon S3 en el directorio de trabajo actual,
donde./especifica el directorio de trabajo actual.

$ aws s3 cp s3://bucket-name/filename.txt ./

En el siguiente ejemplo se utiliza echo para transmitir el texto «hola world» als3://bucket-name/
filename.txtfile.

$ echo "hello world" | aws s3 cp - s3://bucket-name/filename.txt

En el ejemplo siguiente se transmite el objetos3://bucket-name/filename.txtarchivo destdoute


imprime el contenido en la consola.

$ aws s3 cp s3://bucket-name/filename.txt -

188
AWS Command Line Interface Guía del usuario
Alto nivel (s3comandos de)

hello world

En el ejemplo siguiente se transmite el contenido des3://bucket-name/preDe


astdoutUtilizabzip2para comprimir los archivos y carga el nuevo archivo comprimido
llamadokey.bz2De as3://bucket-name.

$ aws s3 cp s3://bucket-name/pre - | bzip2 --best | aws s3 cp - s3://bucket-name/key.bz2

Sincronizar objetos
Las3 syncEl comando sincroniza el contenido de un bucket y un directorio, o bien el contenido de dos
buckets. Por lo general,s3 synccopia archivos u objetos que estén desactualizados o que falten entre
el origen y el destino. Sin embargo, también puede introducir la opción --delete para quitar archivos u
objetos desde el destino que no se encuentran en el origen.

Sintaxis

$ aws s3 sync <source> <target> [--options]

Para ver algunas opciones comunes que se pueden utilizar con este comando y ejemplos,
consulteOpciones más utilizadas para los comandos s3 (p. 190). Para obtener una lista completa de
opciones, consulte.s3 syncen laAWS CLIReferencia de los comandos de la.

ejemplos de sincronización s3

En el siguiente ejemplo se sincroniza el contenido de un prefijo de Amazon S3 denominadopathen el


bucket llamadomiy-bucketCon el directorio de trabajo actual.

s3 syncactualiza los archivos que tengan un tamaño o tiempo de modificación que sean diferentes
de los archivos con el mismo nombre en el destino. La salida muestra las operaciones específica
realizadas durante la sincronización. Observe que la operación sincroniza recursivamente el
subdirectorioMySubdirectoryy su contenido cons3://my-bucket/path/MySubdirectory.

$ aws s3 sync . s3://my-bucket/path


upload: MySubdirectory\MyFile3.txt to s3://my-bucket/path/MySubdirectory/MyFile3.txt
upload: MyFile2.txt to s3://my-bucket/path/MyFile2.txt
upload: MyFile1.txt to s3://my-bucket/path/MyFile1.txt

En el siguiente ejemplo, que amplía el anterior, se muestra cómo usar el método de--deleteOpción.

// Delete local file


$ rm ./MyFile1.txt

// Attempt sync without --delete option - nothing happens


$ aws s3 sync . s3://my-bucket/path

// Sync with deletion - object is deleted from bucket


$ aws s3 sync . s3://my-bucket/path --delete
delete: s3://my-bucket/path/MyFile1.txt

// Delete object from bucket


$ aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt
delete: s3://my-bucket/path/MySubdirectory/MyFile3.txt

// Sync with deletion - local file is deleted


$ aws s3 sync s3://my-bucket/path . --delete
delete: MySubdirectory\MyFile3.txt

189
AWS Command Line Interface Guía del usuario
Alto nivel (s3comandos de)

// Sync with Infrequent Access storage class


$ aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA

Cuando se utiliza--deleteLa opción--excludey--includepueden filtrar los archivos u objetos para


eliminar durante uns3 sync. En este caso, la cadena del parámetro debe especificar qué archivos se
deben excluir o incluir en la eliminación, en el contexto del directorio o bucket de destino. A continuación se
muestra un ejemplo.

Assume local directory and s3://my-bucket/path currently in sync and each contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt
'''

// Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while
remote MyFile1.txt is not.
$ aws s3 sync . s3://my-bucket/path --delete --exclude "path/MyFile?.txt"
delete: s3://my-bucket/path/MyFile88.txt
'''

// Sync with delete, excluding MyFile2.rtf - local file is NOT deleted


$ aws s3 sync s3://my-bucket/path . --delete --exclude "./MyFile2.rtf"
download: s3://my-bucket/path/MyFile1.txt to MyFile1.txt
'''

// Sync with delete, local copy of MyFile2.rtf is deleted


$ aws s3 sync s3://my-bucket/path . --delete
delete: MyFile2.rtf

Opciones más utilizadas para los comandos s3


Las siguientes opciones se utilizan con frecuencia para los comandos descritos en este tema. Para obtener
una lista completa de las opciones que puede utilizar en un comando, consulte el comando específico en
elAWS CLIReferencia de los comandos de la.

acl

s3 syncys3 cpPuede utilizar--aclOpción. Esto le permite configurar los permisos de acceso para
archivos copiados en Amazon S3. La opción --acl admite los valores private, public-read y
public-read-write. Para obtener más información, consulteACL predefinidasen laAmazon Simple
Storage Service Developer Guide.

$ aws s3 sync . s3://my-bucket/path --acl public-read

Exclude

Cuando utiliza el comandos3 cp,s3 mv,s3 sync, o biens3 rm, puede filtrar los resultados mediante
la--excludeor--includeOpción. La--excludeestablece reglas para excluir únicamente objetos
del comando y las opciones se aplican en el orden especificado. Esto se muestra en el siguiente
ejemplo.

Local directory contains 3 files:


MyFile1.txt
MyFile2.rtf
MyFile88.txt

// Exclude all .txt files, resulting in only MyFile2.rtf being copied


$ aws s3 cp . s3://my-bucket/path --exclude "*.txt"

190
AWS Command Line Interface Guía del usuario
Alto nivel (s3comandos de)

// Exclude all .txt files but include all files with the "MyFile*.txt" format,
resulting in, MyFile1.txt, MyFile2.rtf, MyFile88.txt being copied
$ aws s3 cp . s3://my-bucket/path --exclude "*.txt" --include "MyFile*.txt"

// Exclude all .txt files, but include all files with the "MyFile*.txt" format,
but exclude all files with the "MyFile?.txt" format resulting in, MyFile2.rtf and
MyFile88.txt being copied
$ aws s3 cp . s3://my-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude
"MyFile?.txt"

Include

Cuando utiliza el comandos3 cp,s3 mv,s3 sync, o biens3 rm, puede filtrar los resultados usando
el comando--excludeor--includeOpción. La--includeestablece reglas para incluir sólo los
objetos especificados para el comando y las opciones se aplican en el orden especificado. Esto se
muestra en el siguiente ejemplo.

Local directory contains 3 files:


MyFile1.txt
MyFile2.rtf
MyFile88.txt

// Include all .txt files, resulting in MyFile1.txt and MyFile88.txt being copied
$ aws s3 cp . s3://my-bucket/path --include "*.txt"

// Include all .txt files but exclude all files with the "MyFile*.txt" format,
resulting in no files being copied
$ aws s3 cp . s3://my-bucket/path --include "*.txt" --exclude "MyFile*.txt"

// Include all .txt files, but exclude all files with the "MyFile*.txt" format, but
include all files with the "MyFile?.txt" format resulting in MyFile1.txt being copied

$ aws s3 cp . s3://my-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include


"MyFile?.txt"

concesión

Los comandos s3 cp, s3 mv y s3 sync incluyen una opción --grants que puede usar
para conceder permisos sobre el objeto a usuarios o grupos específicos. Establecimiento de la
propiedad de--grantsLa opción para obtener una lista de permisos mediante la sintaxis siguiente.
ReemplazarPermission,Grantee_Type, yGrantee_IDcon sus propios valores.

Sintaxis

--grants Permission=Grantee_Type=Grantee_ID
[Permission=Grantee_Type=Grantee_ID ...]

Cada valor contiene los siguientes elementos:


• Permiso— Especifica los permisos concedidos. Se puede establecer enread,readacl,writeacl,
o bienfull.
• Tipo de beneficiario— Especifica cómo identificar al beneficiario. Se puede establecer
enuri,emailaddress, o bienid.
• Grantee_ID: especifica el beneficiario del permiso según Grantee_Type.
• uri: URI del grupo. Para obtener más información, consulte¿Quién es un beneficiario?
• emailaddress: dirección de correo electrónico de la cuenta.
• id: ID canónico de la cuenta.

Para obtener más información acerca del control de acceso de Amazon S3, consulteControl de
acceso.

191
AWS Command Line Interface Guía del usuario
Comandos de nivel de API (s3 api)

En el siguiente ejemplo se copia un objeto en un bucket. Concesiones dereadpermisos en


el objeto para todos, yfullpermisos (read,readacl, ywriteacl) a la cuenta asociada
[email protected].

$ aws s3 cp file.txt s3://my-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/


global/AllUsers [email protected]

También puede especificar una clase de almacenamiento no predeterminada


(REDUCED_REDUNDANCYorSTANDARD_IA) para objetos que se cargan en Amazon S3. Para ello,
utilice la opción --storage-class.

$ aws s3 cp file.txt s3://my-bucket/ --storage-class REDUCED_REDUNDANCY

recursive

Al usar esta opción, el comando se ejecuta en todos los objetos o archivos del directorio especificado
o con el prefijo especificado. En el siguiente ejemplo se eliminas3://my-bucket/pathY todos sus
contenidos.

$ aws s3 rm s3://my-bucket/path --recursive

Resources
AWS CLI Referencia:

• aws s3
• aws s3 cp
• aws s3 mb
• aws s3 mv
• aws s3 ls
• aws s3 rb
• aws s3 rm
• aws s3 sync

Referencia del servicio:

• Trabajo con buckets de Amazon S3en laAmazon Simple Storage Service Developer Guide
• Trabajo con objetos de Amazon S3en laAmazon Simple Storage Service Developer Guide
• Listado de claves jerárquicamente utilizando un prefijo y delimitadoren laAmazon Simple Storage Service
Developer Guide
• Anular cargas multiparte a un bucket de S3 con laAWS SDK for .NET(bajo nivel de)en laAmazon Simple
Storage Service Developer Guide

Uso de comandos de nivel de API (s3api) con laAWS


CLI
Los comandos de nivel de API (contenidos en els3apiEl conjunto de comandos de) proporcionan acceso
directo a las API de Amazon Simple Storage Service (Amazon S3) y permiten realizar algunas operaciones
no expuestas en els3commands. Estos comandos son el equivalente de los otros servicios de AWS que

192
AWS Command Line Interface Guía del usuario
Comandos de nivel de API (s3 api)

proporcionan acceso de nivel de API a la funcionalidad de los servicios. Para obtener más información
sobre las3consulteUso de comandos (s3) de alto nivel con laAWS CLI (p. 184)

En este tema, se incluyen ejemplos en los que se muestra cómo se usan los comandos de bajo nivel que
se asignan a las API de Amazon S3. Además, puede encontrar ejemplos para cada comando de API de S3
en elsección s3api de la Guía de Referencia de CLI.

Prerequisites
Para ejecutar las3api, necesita:

• AWS CLIinstalado, consulteInstalar, actualizar y desinstalar elAWS CLI (p. 6)para obtener más
información.
• AWS CLIconfigurado, consulteFundamentos de configuración (p. 47)para obtener más información. El
perfil que utilice debe tener permisos que permitan elAWSoperaciones realizadas por los ejemplos.
• Comprenda estos términos de Amazon S3:
• Bucket— Una carpeta de Amazon S3 de nivel superior.
• Prefix— Una carpeta de Amazon S3 en un bucket.
• Objeto— Cualquier artículo hospedado en un bucket de Amazon S3.

Aplicación de una ACL personalizada


Con los comandos de alto nivel, puede utilizar la--aclPara aplicar listas de control de acceso (ACL)
predefinidas a objetos de Amazon S3. Sin embargo, no puede usar ese comando para establecer ACL en
todo el bucket. Sin embargo, puede hacerlo mediante laput-bucket-aclComando de nivel de API.

En el siguiente ejemplo se muestra cómo conceder control total a dos usuarios de AWS
([email protected] y [email protected]) y permisos de lectura a todos los usuarios. El identificador
para "everyone" (todos) proviene de un URI especial que se pasa como parámetro.

$ aws s3api put-bucket-acl --bucket MyBucket --grant-full-control


'emailaddress="[email protected]",emailaddress="[email protected]"' --grant-read
'uri="http://acs.amazonaws.com/groups/global/AllUsers"'

Para obtener más información acerca de cómo construir las ACL, consultePUT Bucket aclen laReferencia
de la API de Amazon Simple Storage Service. Los comandos ACL de s3api en la CLI, como put-
bucket-acl, usan la misma notación abreviada de argumentos.

Configuración de una política de registro


El comando APIput-bucket-loggingconfigura una política de registro de bucket.

En el siguiente ejemplo, laAWSusuario [email protected] concede control absoluto sobre los


archivos de registro y todos los usuarios tienen acceso de lectura a ellos. Tenga en cuenta queput-
bucket-aclPara conceder al sistema de entrega de registros de Amazon S3 (especificado por un URI)
los permisos necesarios para leer y escribir los registros en el bucket.

$ aws s3api put-bucket-acl --bucket MyBucket --grant-read-acp 'URI="http://


acs.amazonaws.com/groups/s3/LogDelivery"' --grant-write 'URI="http://acs.amazonaws.com/
groups/s3/LogDelivery"'
$ aws s3api put-bucket-logging --bucket MyBucket --bucket-logging-status file://
logging.json

Lalogging.jsonEl archivo del comando anterior contiene lo siguiente.

193
AWS Command Line Interface Guía del usuario
Ejemplo de scripting del ciclo de vida del bucket (s3api)

{
"LoggingEnabled": {
"TargetBucket": "MyBucket",
"TargetPrefix": "MyBucketLogs/",
"TargetGrants": [
{
"Grantee": {
"Type": "AmazonCustomerByEmail",
"EmailAddress": "[email protected]"
},
"Permission": "FULL_CONTROL"
},
{
"Grantee": {
"Type": "Group",
"URI": "http://acs.amazonaws.com/groups/global/AllUsers"
},
"Permission": "READ"
}
]
}
}

Resources
AWS CLI Referencia:

• aws s3api
• aws s3api put-bucket-acl
• aws s3api put-bucket-logging

Referencia del servicio:

• Trabajo con buckets de Amazon S3en laAmazon Simple Storage Service Developer Guide
• Trabajo con objetos de Amazon S3en laAmazon Simple Storage Service Developer Guide
• Listado de claves jerárquicamente utilizando un prefijo y delimitadoren laAmazon Simple Storage Service
Developer Guide
• Anular cargas multiparte a un bucket de S3 con laAWS SDK for .NET(bajo nivel de)en laAmazon Simple
Storage Service Developer Guide

Ejemplo de scripting de las operaciones del ciclo de


vida del bucket de Amazon S3:
En este tema se utiliza un ejemplo de secuencias de comandos bash para las operaciones del ciclo de
vida del bucket de Amazon S3 mediante la herramientaAWS Command Line Interface(AWS CLI). En este
ejemplo de secuencias de comandos se utiliza elaws s3apiconjunto de comandos. Los scripts de shell
son programas diseñados para ejecutarse en una interfaz de línea de comandos.

Temas
• Antes de comenzar (p. 195)
• Acerca de este ejemplo (p. 195)
• Files (p. 195)
• References (p. 196)

194
AWS Command Line Interface Guía del usuario
Ejemplo de scripting del ciclo de vida del bucket (s3api)

Antes de comenzar
Antes de que pueda ejecutar cualquiera de los siguientes ejemplos, debe completarse lo siguiente.

• AWS CLIinstalado, consulteInstalar, actualizar y desinstalar elAWS CLI (p. 6)para obtener más
información.
• AWS CLIconfigurado, consulteFundamentos de configuración (p. 47)para obtener más información. El
perfil que utilice debe tener permisos que permitan elAWSoperaciones realizadas por los ejemplos.

• Como unAWSConceder privilegios mínimos a este código o solo los permisos necesarios para llevar a
cabo una tarea. Para obtener más información, consulte Concesión de mínimos privilegios en la Guía del
usuario de IAM.
• Este código no ha sido probado en todos losAWSRegiones de. AlgunoAWSLos servicios solo están
disponibles en regiones específicas. Para obtener más información, consulteCuotas y puntos de enlace
de servicioen laAWSGuía general de referencia.
• La ejecución de este código puede producir cargos en suAWSaccount. Es su responsabilidad
asegurarse de que los recursos creados por este script se eliminen cuando haya terminado con ellos.

El servicio de Amazon S3 utiliza los siguientes términos:

• Bucket: una carpeta de Amazon S3 de nivel superior.


• Prefijo: una carpeta de Amazon S3 en un depósito.
• Objeto: cualquier artículo alojado en un bucket de Amazon S3.

Acerca de este ejemplo


En este ejemplo se muestra cómo interactuar con algunas de las operaciones básicas de Amazon S3
mediante un conjunto de funciones en archivos de script de shell. Las funciones se encuentran en el
archivo de script de shell llamadobucket-operations.sh. Puede llamar a estas funciones en otro
archivo. Cada archivo de script contiene comentarios que describen cada una de las funciones.

Para ver los resultados intermedios de cada paso, ejecute el script con un-iParámetro. Puede ver el
estado actual del bucket o su contenido mediante la consola de Amazon S3. La secuencia de comandos
sólo pasa al siguiente paso cuando se pulsaEscribaEn el símbolo del sistema.

Para obtener el ejemplo completo y los archivos de script descargables, consulteOperaciones del ciclo de
vida del bucket de Amazon S3en laAWSEjemplos de código repositorioenGitHub.

Files
El ejemplo contiene los siguientes archivos:

bucket-operations.sh

Este archivo de script principal puede obtenerse de otro archivo. Incluye funciones que realizan las
siguientes tareas:
• Crear un depósito y verificar que existe
• Copiar un archivo desde el equipo local a un depósito
• Copiar un archivo desde una ubicación de depósito a otra ubicación de depósito
• Mostrar el contenido de un bucket
• Eliminación de un archivo de un depósito
• Eliminar un bucket

195
AWS Command Line Interface Guía del usuario
Amazon SNS

Ver el código debucket-operations.shenGitHub.

test-bucket-operations.sh

El archivo de script de shelltest-bucket-operations.shmuestra cómo llamar a las funciones


mediante el suministro debucket-operations.shy llamando a cada una de las funciones. Después
de llamar a las funciones, el script de prueba elimina todos los recursos que creó.

Ver el código detest-bucket-operations.shenGitHub.

awsdocs-general.sh

El archivo de scriptawsdocs-general.shcontiene funciones de propósito general utilizadas en


ejemplos de código avanzados para elAWS CLI.

Ver el código deawsdocs-general.shenGitHub.

References
AWS CLI Referencia:

• aws s3api
• aws s3api create-bucket
• aws s3api copy-object
• aws s3api delete-bucket
• aws s3api delete-object
• aws s3api head-bucket
• aws s3api list-objects
• aws s3api put-object

Referencia de otras:

• Trabajo con buckets de Amazon S3en laAmazon Simple Storage Service Developer Guide
• Trabajo con objetos de Amazon S3en laAmazon Simple Storage Service Developer Guide
• Para ver y contribuir aAWSSDK yAWS CLIPara obtener ejemplos de código, consulte laAWSEjemplos
de código repositorioenGitHub.

Utiliza Amazon SNS con laAWS CLI


Introducción a Amazon SNS - Servicio de notificaciones push en AWS

Puede acceder a las funciones de Amazon Simple Notification Service (Amazon SNS) mediante laAWS
Command Line Interface(AWS CLI). Para enumerar laAWS CLIPara Amazon SNS, utilice el siguiente
comando.

aws sns help

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

196
AWS Command Line Interface Guía del usuario
Crear un tema

En este tema se muestran ejemplos deAWS CLIComandos de la que realizan tareas comunes para
Amazon SNS.

Temas
• Crear un tema (p. 197)
• Suscripción a un tema (p. 197)
• Publicación de un tema (p. 198)
• Cancelación de la suscripción a un tema (p. 198)
• Eliminación de un tema (p. 198)

Crear un tema
Para crear un tema, utilice el comando create-topic y especifique el nombre que desea asignar al
tema.

$ aws sns create-topic --name my-topic


{
"TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic"
}

Anote el valor de TopicArn de la respuesta, que utilizará más adelante para publicar un mensaje.

Suscripción a un tema
Para suscribirse a un tema, utilice el comando subscribe.

En el siguiente ejemplo se especifica el protocolo email y una dirección de correo electrónico para el
notification-endpoint.

$ aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --


protocol email --notification-endpoint [email protected]
{
"SubscriptionArn": "pending confirmation"
}

AWS envía inmediatamente un mensaje de confirmación a la dirección de correo electrónico que ha


especificado en el comando subscribe. El mensaje de correo electrónico tiene este texto.

You have chosen to subscribe to the topic:


arn:aws:sns:us-west-2:123456789012:my-topic
To confirm this subscription, click or visit the following link (If this was in error no
action is necessary):
Confirm subscription

Cuando el destinatario hace clic en el enlace Confirm subscription (Confirmar suscripción), el navegador
del destinatario muestra un mensaje de notificación con información similar a la siguiente.

Subscription confirmed!

You have subscribed [email protected] to the topic:my-topic.

Your subscription's id is:


arn:aws:sns:us-west-2:123456789012:my-topic:1328f057-de93-4c15-512e-8bb22EXAMPLE

197
AWS Command Line Interface Guía del usuario
Publicación de un tema

If it was not your intention to subscribe, click here to unsubscribe.

Publicación de un tema
Para enviar un mensaje a todos los suscriptores de un tema, utilice el comando publish.

En el siguiente ejemplo se envía el mensaje «Hello World!» a todos los suscriptores del tema especificado.

$ aws sns publish --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --message "Hello


World!"
{
"MessageId": "4e41661d-5eec-5ddf-8dab-2c867EXAMPLE"
}

En este ejemplo,AWSEnvía un mensaje de correo electrónico con el texto «Hello World!» De


[email protected].

Cancelación de la suscripción a un tema


Para cancelar la suscripción a un tema y dejar de recibir los mensajes que se publican en él, utilice el
comando unsuscribe y especifique el ARN del tema del que desea cancelar la suscripción.

$ aws sns unsubscribe --subscription-arn arn:aws:sns:us-west-2:123456789012:my-


topic:1328f057-de93-4c15-512e-8bb22EXAMPLE

Para verificar que se ha cancelado la suscripción correctamente, utilice el comando list-subscriptions para
confirmar que el ARN ya no aparece en la lista.

$ aws sns list-subscriptions

Eliminación de un tema
Para eliminar un tema, ejecute el comando delete-topic.

$ aws sns delete-topic --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic

Para verificar que AWS ha eliminado el tema correctamente, utilice el comando list-topics para confirmar
que el tema ya no aparece en la lista.

$ aws sns list-topics

Uso de Amazon Simple Workflow Service con


laAWS CLI
Amazon Simple flujo de trabajo

Puede acceder a las características de Amazon Simple Workflow Service (Amazon SWF) con laAWS
Command Line Interface(AWS CLI).

198
AWS Command Line Interface Guía del usuario
Lista de comandos de Amazon SWF

Para obtener una lista de losAWS CLIPara Amazon SWF, utilice el comando siguiente.

aws swf help

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información,
consulte Configuración de la AWS CLI (p. 47).

En los siguientes temas se muestran ejemplos deAWS CLIComandos de la que realizan tareas comunes
para Amazon SWF.

Temas
• Lista de comandos de Amazon SWF por categoría (p. 199)
• Uso de dominios de Amazon SWF con laAWS CLI (p. 201)

Lista de comandos de Amazon SWF por categoría


Puede utilizar laAWS Command Line Interface(AWS CLI) para crear, mostrar y gestionar flujos de trabajo
en Amazon Simple Workflow Service (Amazon SWF).

En esta sección se muestran los temas de referencia de los comandos de Amazon SWF en laAWS CLI,
agrupado porCategoría funcional.

Para unalfabéticoPara obtener una lista de comandos de, consulte laSección de Amazon SWFde laAWS
CLIReferencia de los comandos de la, o utilice el siguiente comando.

$ aws swf help

También puede obtener ayuda para un comando individual, escribiendo la directiva help después del
nombre del comando. A continuación se muestra un ejemplo.

$ aws swf register-domain help

Temas
• Comandos relacionados con actividades (p. 199)
• Comandos relacionados con decisores (p. 200)
• Comandos relacionados con ejecuciones de flujo de trabajo (p. 200)
• Comandos relacionados con administración (p. 200)
• Comandos de visibilidad (p. 201)

Comandos relacionados con actividades


Los trabajadores de actividades utilizan poll-for-activity-task para obtener nuevas tareas
de actividad. En cuanto un trabajador recibe una tarea de actividad de Amazon SWF, realiza la tarea
y responde utilizandorespond-activity-task-completedSi ha podido llevarlo bienrespond-
activity-task-failedsi no tiene éxito.

Estos son los comandos que realizan los trabajadores de actividades:

• poll-for-activity-task
• respond-activity-task-completed
• respond-activity-task-failed

199
AWS Command Line Interface Guía del usuario
Lista de comandos de Amazon SWF

• respond-activity-task-canceled
• record-activity-task-heartbeat

Comandos relacionados con decisores


Los decisores utilizan poll-for-decision-task para obtener tareas de decisión. En cuanto un decisor
recibe una tarea de decisión de Amazon SWF, examina el historial de ejecución del flujo de trabajo
y decide qué se debe hacer a continuación. Llama a respond-decision-task-completed para
completar la tarea de decisión y proporciona cero o más decisiones siguientes.

Estos son los comandos que realizan los decisores:

• poll-for-decision-task
• respond-decision-task-completed

Comandos relacionados con ejecuciones de flujo de trabajo


Estos son los comandos que se utilizan en una ejecución de flujo de trabajo:

• request-cancel-workflow-execution
• start-workflow-execution
• signal-workflow-execution
• terminate-workflow-execution

Comandos relacionados con administración


La consola Amazon SWF permite realizar tareas administrativas, pero puede utilizar los comandos de esta
sección para automatizar funciones o crear sus propias herramientas administrativas.

Administración de actividades
• register-activity-type
• deprecate-activity-type

Administración de flujos de trabajo


• register-workflow-type
• deprecate-workflow-type

Administración de dominios
• register-domain
• deprecate-domain

Para obtener más información y ejemplos de estos comandos de administración de dominios, consulte Uso
de dominios de Amazon SWF con laAWS CLI (p. 201).

Administración de ejecución de flujos de trabajo


• request-cancel-workflow-execution

200
AWS Command Line Interface Guía del usuario
Uso de dominios de Amazon SWF

• terminate-workflow-execution

Comandos de visibilidad
La consola Amazon SWF permite realizar acciones de visibilidad, pero puede utilizar los comandos
de esta sección para automatizar funciones o crear su propia consola o sus propias herramientas de
administración.

Visibilidad de las actividades


• list-activity-types
• describe-activity-type

Visibilidad de los flujos de trabajo


• list-workflow-types
• describe-workflow-type

Visibilidad de la ejecución de flujos de trabajo


• describe-workflow-execution
• list-open-workflow-executions
• list-closed-workflow-executions
• count-open-workflow-executions
• count-closed-workflow-executions
• get-workflow-execution-history

Visibilidad de dominios
• list-domains
• describe-domain

Para obtener más información y ejemplos de estos comandos de visibilidad, consulte Uso de dominios de
Amazon SWF con laAWS CLI (p. 201).

Visibilidad de listas de tareas


• count-pending-activity-tasks
• count-pending-decision-tasks

Uso de dominios de Amazon SWF con laAWS CLI


Puede utilizar laAWS Command Line Interface(AWS CLI) para gestionar los dominios de Amazon Simple
Workflow Service (Amazon SWF).

Temas
• Visualización de los dominios (p. 202)
• Obtener información acerca de un dominio (p. 202)
• Registrar un dominio (p. 202)

201
AWS Command Line Interface Guía del usuario
Uso de dominios de Amazon SWF

• Dar de baja un dominio (p. 203)

Visualización de los dominios


Para obtener una lista de los dominios de Amazon SWF que haya registrado en suAWS, puede usarswf
list-domains. Debe incluir --registration-status y especificar REGISTERED o DEPRECATED.

A continuación se muestra un ejemplo mínimo.

$ aws swf list-domains --registration-status REGISTERED


{
"domainInfos": [
{
"status": "REGISTERED",
"name": "ExampleDomain"
},
{
"status": "REGISTERED",
"name": "mytest"
}
]
}

Note

Para ver un ejemplo del uso de DEPRECATED, consulte Dar de baja un dominio (p. 203).

Para obtener más información, consultelist-domainsen laAWS CLIReferencia de los comandos de la.

Obtener información acerca de un dominio


Para obtener información detallada acerca de un determinado dominio, use swf describe-domain.
Hay un parámetro obligatorio, --name, que toma el nombre del dominio sobre el que desea obtener
información, tal y como se muestra en el siguiente ejemplo.

$ aws swf describe-domain --name ExampleDomain


{
"domainInfo": {
"status": "REGISTERED",
"name": "ExampleDomain"
},
"configuration": {
"workflowExecutionRetentionPeriodInDays": "1"
}
}

Para obtener más información, consultedescribe-domainen laAWS CLIReferencia de los comandos de la.

Registrar un dominio
Para registrar nuevos dominios, use swf register-domain.

Hay dos parámetros obligatorios: --name y --workflow-execution-retention-period-in-


days. La--nameEl parámetro toma el nombre de dominio para registrar. La--workflow-execution-
retention-period-in-daysEl parámetro toma un número entero para especificar el número de días
que se van a conservar los datos de la ejecución del flujo de trabajo de este dominio, hasta un período
máximo de 90 días (para obtener más información, consulte elPreguntas frecuentes sobre Amazon SWF).

202
AWS Command Line Interface Guía del usuario
Uso de dominios de Amazon SWF

Si especifica cero (0) para este valor, el periodo de retención se ajusta automáticamente a la duración
máxima. De lo contrario, los datos de ejecución de flujo de trabajo no se conservarán después de que haya
transcurrido el número especificado de días. En el siguiente ejemplo, se muestra cómo registrar un nuevo
dominio.

$ aws swf register-domain --name MyNeatNewDomain --workflow-execution-retention-period-in-


days 0

El comando no devuelve ningún resultado, pero se puede utilizar swf list-domains o swf describe-
domain para ver el nuevo dominio, tal y como se muestra en el ejemplo siguiente.

$ aws swf describe-domain --name MyNeatNewDomain


{
"domainInfo": {
"status": "REGISTERED",
"name": "MyNeatNewDomain"
},
"configuration": {
"workflowExecutionRetentionPeriodInDays": "0"
}
}

Para obtener más información, consulteregister-domainen laAWS CLIReferencia de los comandos de la.

Dar de baja un dominio


Para dar de baja un dominio (aunque todavía podrá verlo, no podrá crear nuevas ejecuciones de flujo de
trabajo ni tipos de registro en él), use swf deprecate-domain. Solo tiene un parámetro necesario, --
name, que toma el nombre del dominio que se va a descartar.

$ aws swf deprecate-domain --name MyNeatNewDomain

Al igual que ocurre con register-domain, no se devuelve ningún resultado. Si usa list-domains para
ver los dominios registrados, sin embargo, verá que el dominio ya no aparece entre ellos. También puede
utilizar --registration-status DEPRECATED.

$ aws swf list-domains --registration-status DEPRECATED


{
"domainInfos": [
{
"status": "DEPRECATED",
"name": "MyNeatNewDomain"
}
]
}

Para obtener más información, consultedeprecate-domainen laAWS CLIReferencia de los comandos de la.

203
AWS Command Line Interface Guía del usuario
Protección de los datos

Seguridad en AWS Command Line


Interface
La seguridad en la nube en AWS es lo más importante para nosotros. Como cliente de AWS, se
beneficiará de una arquitectura de red y un centro de datos diseñados para satisfacer los requisitos de
seguridad de las organizaciones más exigentes.

El tema de la seguridad constituye una responsabilidad común entre AWS y usted. El modelo de
responsabilidad compartida la describe como seguridad de la nube y seguridad en la nube:

• Seguridad de la nube: AWS se encarga de proteger la infraestructura que ejecuta servicios de AWS


en la nube de AWS. Además, AWS le brinda servicios que puede utilizar de manera segura. Auditores
externos prueban y verifican periódicamente la eficacia de nuestra seguridad como parte de los
Programas de conformidad de AWS . To learn about the compliance programs that apply to AWS
Command Line Interface, see AWS Services in Scope by Compliance Program.
• Seguridad en la nube: su responsabilidad viene determinada por el servicio de AWS que utilice. También
es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la empresa y
la legislación y los reglamentos aplicables.

Esta documentación le ayuda a comprender cómo puede aplicar el modelo de responsabilidad compartida
cuando se utiliza AWS Command Line Interface (AWS CLI). En los siguientes temas, aprenderá a
configurar AWS CLI conforme a sus objetivos de seguridad y conformidad. También aprenderá a usar la
AWS CLI para que le ayude a monitorizar y proteger los recursos de AWS.

Temas
• Protección de datos en la AWS CLI (p. 204)
• Identity and Access Management para AWS CLI (p. 205)
• Validación de la conformidad de la AWS CLI (p. 206)
• Aplicación de una versión mínima de TLS 1.2 (p. 207)

Protección de datos en la AWS CLI


El modelo de responsabilidad compartida de AWS se aplica a la protección de datos de AWS Command
Line Interface. Como se describe en este modelo, AWS es responsable de proteger la infraestructura
global que ejecuta toda la Nube de AWS . Usted es responsable de mantener el control sobre el contenido
alojado en esta infraestructura. Este contenido incluye la configuración de seguridad y las tareas de
administración de los servicios de AWS que usted utiliza. Para obtener más información acerca de la
privacidad de los datos, consulte las Preguntas frecuentes sobre la privacidad de datos. Para obtener
información acerca de la protección de datos en Europa, consulte la publicación de blog The AWS Shared
Responsability Model and GDPR en el Blog de seguridad de AWS.

Para fines de protección de datos, recomendamos proteger las credenciales de Cuenta de AWS y
configurar cuentas de usuario individuales con AWS Identity and Access Management (IAM). De esta
manera, solo se otorgan a cada usuario los permisos necesarios para cumplir con sus obligaciones
laborales. También le recomendamos proteger sus datos de las siguientes formas:

• Utilice Multi-Factor Authentication (MFA) con cada cuenta.


• Utilice SSL/TLS para comunicarse con los recursos de AWS. Le recomendamos TLS 1.2 o una versión
posterior.

204
AWS Command Line Interface Guía del usuario
Cifrado de datos

• Configure la API y el registro de actividad del usuario con AWS CloudTrail.


• Utilice las soluciones de cifrado de AWS, junto con todos los controles de seguridad predeterminados
dentro de los servicios de AWS.
• Utilice avanzados servicios de seguridad administrados, como Amazon Macie, que le ayuden a detectar
y proteger los datos personales almacenados en Amazon S3.
• Si necesita módulos criptográficos validados FIPS 140-2 al acceder a AWS a través de una interfaz de
línea de comandos o una API, utilice un punto de enlace de FIPS. Para obtener más información acerca
de los puntos de enlace de FIPS disponibles, consulte Estándar de procesamiento de la información
federal (FIPS) 140-2.

Le recomendamos encarecidamente que nunca introduzca información de identificación confidencial,


como, por ejemplo, direcciones de email de sus clientes, en etiquetas o en los campos de formato libre,
como el campo Name (Nombre). No debe especificar esta información cuando trabaje con AWS CLI u
otros servicios de AWS a través de la consola, la API, la AWS CLI o los SDK de AWS. Los datos que
ingresa en etiquetas o campos de formato libre utilizados para los nombres se pueden utilizar para los
registros de facturación o diagnóstico. Si proporcione una URL a un servidor externo, recomendamos
encarecidamente que no incluya información sobre las credenciales en la URL para validar la solicitud en
dicho servidor.

Cifrado de datos
Una característica clave de cualquier servicio seguro es que la información se cifre cuando no se está
utilizando activamente.

Cifrado en reposo
La AWS CLI no guarda ningún otro datos de los clientes salvo las credenciales necesarias para interactuar
con los servicios de AWS en nombre del usuario.

Si utiliza la AWS CLI para invocar un servicio de AWS que transmita datos del cliente al equipo local para
su almacenamiento, consulte el capítulo «Seguridad y conformidad» de la Guía del usuario de ese servicio
para obtener información sobre cómo se almacenan, protegen y cifran esos datos.

Cifrado en tránsito
De forma predeterminada, todos los datos transmitidos desde el equipo cliente en el que se ejecuta la
AWS CLI y los puntos de enlace de servicio de AWS están cifrados, ya que todo se envía a través de una
conexión HTTPS/TLS.

No es necesario hacer nada para habilitar el uso de HTTPS/TLS. Siempre está habilitado, a menos que
se deshabilite explícitamente para un determinado comando con la opción de línea de comandos --no-
verify-ssl.

Identity and Access Management para AWS CLI


AWS Command Line Interface (AWS CLI) utiliza los mismos usuarios y roles para acceder a los recursos
de AWS y sus servicios. Las políticas que conceden permisos son las mismas, ya que la AWS CLI llama
a las mismas operaciones de API que se utilizan en la consola de servicio. Para obtener más información,
consulte la sección «Administración de identidad y acceso» en el capítulo «Seguridad» del servicio de
AWS que desee utilizar.

La única diferencia importante es el modo en que se realiza la autenticación cuando se utiliza un usuario
de IAM de estándar y credenciales a largo plazo. Aunque un usuario de IAM requiere una contraseña

205
AWS Command Line Interface Guía del usuario
Validación de la conformidad

para acceder a unAWSEl mismo usuario de IAM necesita un key pair de acceso para realizar las mismas
operaciones conAWS CLI. Todas las demás credenciales a corto plazo se utilizan de la misma manera que
con la consola.

Las credenciales que se utilizan en la AWS CLI se almacenan en archivos de texto sin formato y no se
cifran.

• El archivo $HOME/.aws/credentials almacena las credenciales a largo plazo necesarias para


acceder a los recursos de AWS. Cómo recuperar el ID de clave de acceso y la clave de acceso secreta
• Las credenciales a corto plazo, como las de los roles que se adoptan o que se utilizan para servicios de
AWS Single Sign-On, también se almacenan en las carpetas $HOME/.aws/cli/cache y $HOME/.aws/
sso/cache, respectivamente.

Mitigación de riesgos

• Le recomendamos encarecidamente que configure los permisos del sistema de archivos en la carpeta
$HOME/.aws, sus subcarpetas y archivos para restringir el acceso exclusivamente a los usuarios
autorizados.
• Utilice roles con credenciales temporales siempre que sea posible para reducir la posibilidad de que se
produzcan daños si las credenciales se ven comprometidas. Utilice credenciales a largo plazo solo para
solicitar y actualizar las credenciales a corto plazo de los roles.

Validación de la conformidad de la AWS CLI


Los auditores externos evalúan la seguridad y la conformidad de los servicios de AWS en distintos
programas de conformidad de AWS. El uso de AWS Command Line Interface (AWS CLI) para acceder a
un servicio no altera la conformidad de dicho servicio.

Para obtener una lista de los servicios de AWS en el ámbito de programas de conformidad específicos,
consulte AWS Services in Scope by Compliance Program (Servicios en el ámbito de programas de
conformidad). Para obtener información general, consulte AWS Compliance Programs (Programas de
conformidad).

Puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener más
información, consulte Downloading Reports in AWS Artifact (Descargar informes en Artifact) .

Su responsabilidad de conformidad al utilizar AWS CLI se determina en función de la sensibilidad de los


datos, los objetivos de cumplimiento de su empresa y la legislación y los reglamentos correspondientes.
AWS proporciona los siguientes recursos para ayudar con la conformidad:

• Guías de inicio rápido de seguridad y conformidad: estas guías de implementación tratan


consideraciones sobre arquitectura y ofrecen pasos para implementar los entornos de referencia
centrados en la seguridad y la conformidad en AWS.
• Documento técnico sobre arquitectura para seguridad y conformidad de HIPAA: en este documento
técnico, se describe cómo las empresas pueden utilizar AWS para crear aplicaciones conformes con
HIPAA.
• Recursos de conformidad de AWS : esta recopilación de manuales y guías podría aplicarse a su sector y
ubicación.
• Evaluación de recursos con reglas en la Guía para desarrolladores de AWS Config: el servicio AWS
Config evalúa en qué medida las configuraciones de los recursos cumplen con las prácticas internas, las
directrices del sector y las normativas.
• AWS Security Hub:este servicio de AWS ofrece un panorama exhaustivo de su estado de seguridad en
AWS que lo ayuda a comprobar la conformidad con las normas del sector de seguridad y las prácticas
recomendadas.

206
AWS Command Line Interface Guía del usuario
Aplicación de TLS 1.2

Aplicación de una versión mínima de TLS 1.2


Para aumentar la seguridad al comunicarse con los servicios de AWS, debe configurar la AWS Command
Line Interface (AWS CLI) de modo que use TLS 1.2 o una versión posterior. Cuando se utiliza la AWS CLI,
Python se usa para establecer la versión de TLS.

Según la versión de su AWS CLI, los pasos que realice para aplicar la versión mínima de TLS 1.2 varían.

Temas
• Configuración dAWS CLIVersión 1 para aplicar una versión mínima de TLS 1.2 (p. 207)
• Configuración dAWS CLIVersión 2 para aplicar una versión mínima de TLS 1.2 (p. 209)

Configuración dAWS CLIVersión 1 para aplicar una


versión mínima de TLS 1.2
Para garantizar que elAWS CLILa versión 1 no usa ninguna versión de TLS anterior a TLS 1.2, es posible
que tenga que volver a compilar OpenSSL para que aplique este mínimo y, a continuación, volver a
compilar Python para que use el OpenSSL recién creado.

Determinación de los protocolos admitidos actualmente


Primero, cree un certificado autofirmado con el fin de usarlo para el servidor de prueba y Python SDK
mediante OpenSSL.

$ openssl req -subj '/CN=localhost' -x509 -newkey rsa:4096 -nodes -keyout key.pem -out
cert.pem -days 365

A continuación, cree un servidor de prueba mediante OpenSSL.

$ openssl s_server -key key.pem -cert cert.pem -www

En una nueva ventana de terminal, cree un entorno virtual e instale SDK for Python.

$ python3 -m venv test-env


source test-env/bin/activate
pip install botocore

Cree un script de Python denominado check.py que use la biblioteca HTTP subyacente del SDK.

$ import urllib3
URL = 'https://localhost:4433/'

http = urllib3.PoolManager(
ca_certs='cert.pem',
cert_reqs='CERT_REQUIRED',
)
r = http.request('GET', URL)
print(r.data.decode('utf-8'))

Ejecute el nuevo script.

$ python check.py

207
AWS Command Line Interface Guía del usuario
Configuración dAWS CLIVersión 1 para
aplicar una versión mínima de TLS 1.2

Muestra detalles sobre la conexión realizada. Busque «Protocol:» En la salida. Si el resultado es


«TLSv1.2» o posterior, el SDK predeterminado es TLS v1.2 o posterior. Si se trata de una versión anterior,
debe volver a compilar OpenSSL y Python.

Sin embargo, aunque la instalación de Python se establezca de forma predeterminada en TLS v1.2 o
posterior, es posible que Python renegocie a una versión anterior a TLS v1.2 si el servidor no admite
TLS v1.2 o posterior. Para comprobar que Python no renegocia automáticamente a versiones anteriores,
reinicie el servidor de prueba con lo siguiente.

$ openssl s_server -key key.pem -cert cert.pem -no_tls1_3 -no_tls1_2 -www

Si está utilizando una versión anterior de OpenSSL, es posible que la opción -no_tls_3 no esté
disponible. Si este es el caso, elimine la opción, porque la versión de OpenSSL que está utilizando no
admite TLS v1.3. A continuación, vuelva a ejecutar el script de Python.

$ python check.py

Si su instalación de Python no renegocia correctamente las versiones anteriores a TLS 1.2, debería recibir
un error de SSL.

$ urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='localhost', port=4433): Max


retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: UNSUPPORTED_PROTOCOL]
unsupported protocol (_ssl.c:1108)')))

Si puede establecer una conexión, debe volver a compilar OpenSSL y Python para deshabilitar la
negociación de protocolos anteriores a TLS v1.2.

Compilar OpenSSL y Python


Para asegurarse de que el SDK o la AWS CLI no negocien a nada anterior a TLS 1.2, debe volver a
compilar OpenSSL y Python. Para ello, copie el siguiente contenido con el fin de crear un script y ejecútelo.

#!/usr/bin/env bash
set -e

OPENSSL_VERSION="1.1.1d"
OPENSSL_PREFIX="/opt/openssl-with-min-tls1_2"
PYTHON_VERSION="3.8.1"
PYTHON_PREFIX="/opt/python-with-min-tls1_2"

curl -O "https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz"
tar -xzf "openssl-$OPENSSL_VERSION.tar.gz"
cd openssl-$OPENSSL_VERSION
./config --prefix=$OPENSSL_PREFIX no-ssl3 no-tls1 no-tls1_1 no-shared
make > /dev/null
sudo make install_sw > /dev/null

cd /tmp
curl -O "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz"
tar -xzf "Python-$PYTHON_VERSION.tgz"
cd Python-$PYTHON_VERSION
./configure --prefix=$PYTHON_PREFIX --with-openssl=$OPENSSL_PREFIX --disable-shared > /dev/
null
make > /dev/null
sudo make install > /dev/null

208
AWS Command Line Interface Guía del usuario
Configuración dAWS CLIVersión 2 para
aplicar una versión mínima de TLS 1.2

Se compila una versión de Python que tiene un OpenSSL enlazado estáticamente que no negocia
automáticamente a nada anterior a TLS 1.2. Esto también instala OpenSSL en el directorio /opt/
openssl-with-min-tls1_2 directorio e instala Python en el directorio /opt/python-with-min-
tls1_2. Después de ejecutar este script, confirme la instalación de la nueva versión de Python.

$ /opt/python-with-min-tls1_2/bin/python3 --version

Se debería imprimir lo siguiente.

$ Python 3.8.1

Para confirmar que esta nueva versión de Python no negocia a una versión anterior de TLS 1.2, vuelva a
ejecutar los pasos de Determinación de los protocolos admitidos actualmente (p. 207) usando la versión
de Python recién instalada (es decir, /opt/python-with-min-tls1_2/bin/python3).

Configuración dAWS CLIVersión 2 para aplicar una


versión mínima de TLS 1.2
AWS CLILa versión 2 usa un script interno de Python que se compila con el fin de usar la versión mínima
de TLS 1.2 cuando el servicio con el que se compila lo admite. No se necesitan más pasos para aplicar
este mínimo.

209
AWS Command Line Interface Guía del usuario
General: Asegúrese de que está ejecutando
una versión reciente de laAWS CLI.

Solución de errores de AWS CLI


Temas
• General: Asegúrese de que está ejecutando una versión reciente de laAWS CLI. (p. 210)
• General: Usar--debugopción. (p. 210)
• Al ejecutar aws, aparece el error "command not found" (comando no encontrado) (p. 214)
• Aparece el error "access denied" (acceso denegado) (p. 214)
• Aparece el error "invalid credentials" (credenciales no válidas) (p. 215)
• Aparece el error "signature does not match" (la firma no coincide) (p. 216)
• Resources (p. 217)

General: Asegúrese de que está ejecutando una


versión reciente de laAWS CLI.
Si aparece un error en el que se indica que no existe un comando o que no se reconoce un parámetro que
según la documentación está disponible, le recomendamos que primero (después de revisar el comando
para ver si hay errores ortográficos) actualice a la versión más reciente de la AWS CLI. Las versiones
actualizadas de la AWS CLI se publican casi todos los días hábiles. Se incorporan nuevos servicios de
AWS, características y parámetros en las nuevas versiones de la AWS CLI. La única manera de obtener
acceso a los nuevos servicios, características o parámetros es actualizándose a una versión que se
lanzara después de que ese elemento se incorporara por primera vez.

La forma de actualizar la versión de la AWS CLI depende de cómo la instalara originalmente. Por ejemplo,
si instaló la AWS CLI utilizando pip, ejecute pip install --upgrade, tal y como se describe en
Instalación y desinstalación de laAWS CLIVersión 1 con pip (p. 32).

Si ha utilizado uno de los instaladores del paquete, debe eliminar la instalación existente y descargar e
instalar la última versión del instalador que corresponda a su sistema operativo.

General: Usar--debugopción.
Una de las primeras cosas que debe hacer cuando aparece un error en la AWS CLI que usted no es
capaz de reconocer inmediatamente o cuando se generan resultados inesperados es obtener más detalles
sobre el error. Para ello, ejecute el comando de nuevo e incluya la opción --debug al final de la línea de
comandos. De esta forma, la AWS CLI registrará información detallada sobre cada paso que se realiza
para procesar el comando, enviar la solicitud a los servidores de AWS, recibir la respuesta y procesar la
respuesta en la salida que aparece. Los detalles de la salida pueden ayudarlo a determinar en qué paso se
produce el error y en qué contexto, lo que puede proporcionar pistas sobre lo que lo ha ocasionado.

Puede enviar el resultado a un archivo de texto para revisarlo posteriormente o enviarlo a AWS Support
cuando se le solicite.

A continuación, se muestra un ejemplo de la ejecución de un comando con y sin la opción --debug:

$ aws iam list-groups --profile MyTestProfile


{
"Groups": [

210
AWS Command Line Interface Guía del usuario
General: Usar--debugopción.

{
"Path": "/",
"GroupName": "MyTestGroup",
"GroupId": "AGPA0123456789EXAMPLE",
"Arn": "arn:aws:iam::123456789012:group/MyTestGroup",
"CreateDate": "2019-08-12T19:34:04Z"
}
]
}

Cuando se incluye la opción --debug, se obtienen los siguientes detalles (entre otras cosas):

• Búsqueda de credenciales
• Análisis de los parámetros proporcionados
• Creación de la solicitud enviada a los servidores de AWS
• El contenido de la solicitud enviada a AWS
• El contenido de la respuesta sin procesar
• La salida con formato

$ aws iam list-groups --profile MyTestProfile --debug


2019-08-12 12:36:18,305 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-
cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205
2019-08-12 12:36:18,305 - MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI:
['iam', 'list-groups', '--debug']
2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized:
calling handler <function add_scalar_parsers at 0x7fdf173161e0>
2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized:
calling handler <function register_uri_param_handler at 0x7fdf17dec400>
2019-08-12 12:36:18,305 - MainThread - botocore.hooks - DEBUG - Event session-initialized:
calling handler <function inject_assume_role_provider_cache at 0x7fdf17da9378>
2019-08-12 12:36:18,307 - MainThread - botocore.credentials - DEBUG - Skipping environment
variable credential check because profile name was explicitly set.
2019-08-12 12:36:18,307 - MainThread - botocore.hooks - DEBUG - Event session-initialized:
calling handler <function attach_history_handler at 0x7fdf173ed9d8>
2019-08-12 12:36:18,308 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/
ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/service-2.json
2019-08-12 12:36:18,317 - MainThread - botocore.hooks - DEBUG - Event building-command-
table.iam: calling handler <function add_waiters at 0x7fdf1731a840>
2019-08-12 12:36:18,320 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/
ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/waiters-2.json
2019-08-12 12:36:18,321 - MainThread - awscli.clidriver - DEBUG - OrderedDict([('path-
prefix', <awscli.arguments.CLIArgument object at 0x7fdf171ac780>), ('marker',
<awscli.arguments.CLIArgument object at 0x7fdf171b09e8>), ('max-items',
<awscli.arguments.CLIArgument object at 0x7fdf171b09b0>)])
2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-
argument-table.iam.list-groups: calling handler <function add_streaming_output_arg at
0x7fdf17316510>
2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-
table.iam.list-groups: calling handler <function add_cli_input_json at 0x7fdf17da9d90>
2019-08-12 12:36:18,322 - MainThread - botocore.hooks - DEBUG - Event building-argument-
table.iam.list-groups: calling handler <function unify_paging_params at 0x7fdf17328048>
2019-08-12 12:36:18,326 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/
ec2-user/venv/lib/python3.7/site-packages/botocore/data/iam/2010-05-08/paginators-1.json
2019-08-12 12:36:18,326 - MainThread - awscli.customizations.paginate - DEBUG - Modifying
paging parameters for operation: ListGroups
2019-08-12 12:36:18,326 - MainThread - botocore.hooks - DEBUG - Event building-argument-
table.iam.list-groups: calling handler <function add_generate_skeleton at 0x7fdf1737eae8>
2019-08-12 12:36:18,326 - MainThread - botocore.hooks - DEBUG - Event
before-building-argument-table-parser.iam.list-groups: calling handler
<bound method OverrideRequiredArgsArgument.override_required_args of
<awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>>

211
AWS Command Line Interface Guía del usuario
General: Usar--debugopción.

2019-08-12 12:36:18,327 - MainThread - botocore.hooks - DEBUG - Event


before-building-argument-table-parser.iam.list-groups: calling handler
<bound method GenerateCliSkeletonArgument.override_required_args of
<awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at
0x7fdf171c5978>>
2019-08-12 12:36:18,327 - MainThread - botocore.hooks - DEBUG - Event operation-
args-parsed.iam.list-groups: calling handler functools.partial(<function
check_should_enable_pagination at 0x7fdf17328158>, ['marker', 'max-items'], {'max-
items': <awscli.arguments.CLIArgument object at 0x7fdf171b09b0>}, OrderedDict([('path-
prefix', <awscli.arguments.CLIArgument object at 0x7fdf171ac780>), ('marker',
<awscli.arguments.CLIArgument object at 0x7fdf171b09e8>), ('max-items',
<awscli.customizations.paginate.PageArgument object at 0x7fdf171c58d0>), ('cli-
input-json', <awscli.customizations.cliinputjson.CliInputJSONArgument object at
0x7fdf171b0a58>), ('starting-token', <awscli.customizations.paginate.PageArgument
object at 0x7fdf171b0a20>), ('page-size', <awscli.customizations.paginate.PageArgument
object at 0x7fdf171c5828>), ('generate-cli-skeleton',
<awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at
0x7fdf171c5978>)]))
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-
arg.iam.list-groups.path-prefix: calling handler <awscli.paramfile.URIArgumentHandler
object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-
arg.iam.list-groups.marker: calling handler <awscli.paramfile.URIArgumentHandler object at
0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-
arg.iam.list-groups.max-items: calling handler <awscli.paramfile.URIArgumentHandler object
at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-
arg.iam.list-groups.cli-input-json: calling handler <awscli.paramfile.URIArgumentHandler
object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-
arg.iam.list-groups.starting-token: calling handler <awscli.paramfile.URIArgumentHandler
object at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event load-cli-
arg.iam.list-groups.page-size: calling handler <awscli.paramfile.URIArgumentHandler object
at 0x7fdf1725c978>
2019-08-12 12:36:18,328 - MainThread - botocore.hooks - DEBUG - Event
load-cli-arg.iam.list-groups.generate-cli-skeleton: calling handler
<awscli.paramfile.URIArgumentHandler object at 0x7fdf1725c978>
2019-08-12 12:36:18,329 - MainThread - botocore.hooks - DEBUG
- Event calling-command.iam.list-groups: calling handler
<bound method CliInputJSONArgument.add_to_call_parameters of
<awscli.customizations.cliinputjson.CliInputJSONArgument object at 0x7fdf171b0a58>>
2019-08-12 12:36:18,329 - MainThread - botocore.hooks - DEBUG -
Event calling-command.iam.list-groups: calling handler <bound
method GenerateCliSkeletonArgument.generate_json_skeleton of
<awscli.customizations.generatecliskeleton.GenerateCliSkeletonArgument object at
0x7fdf171c5978>>
2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for
credentials via: assume-role
2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for
credentials via: assume-role-with-web-identity
2019-08-12 12:36:18,329 - MainThread - botocore.credentials - DEBUG - Looking for
credentials via: shared-credentials-file
2019-08-12 12:36:18,329 - MainThread - botocore.credentials - INFO - Found credentials in
shared credentials file: ~/.aws/credentials
2019-08-12 12:36:18,330 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/
ec2-user/venv/lib/python3.7/site-packages/botocore/data/endpoints.json
2019-08-12 12:36:18,334 - MainThread - botocore.hooks - DEBUG - Event choose-service-name:
calling handler <function handle_service_name_alias at 0x7fdf1898eb70>
2019-08-12 12:36:18,337 - MainThread - botocore.hooks - DEBUG - Event creating-client-
class.iam: calling handler <function add_generate_presigned_url at 0x7fdf18a028c8>
2019-08-12 12:36:18,337 - MainThread - botocore.regions - DEBUG - Using partition endpoint
for iam, us-west-2: aws-global
2019-08-12 12:36:18,337 - MainThread - botocore.args - DEBUG - The s3 config key is not a
dictionary type, ignoring its value of: None

212
AWS Command Line Interface Guía del usuario
General: Usar--debugopción.

2019-08-12 12:36:18,340 - MainThread - botocore.endpoint - DEBUG - Setting iam timeout as


(60, 60)
2019-08-12 12:36:18,341 - MainThread - botocore.loaders - DEBUG - Loading JSON file: /home/
ec2-user/venv/lib/python3.7/site-packages/botocore/data/_retry.json
2019-08-12 12:36:18,341 - MainThread - botocore.client - DEBUG - Registering retry handlers
for service: iam
2019-08-12 12:36:18,342 - MainThread - botocore.hooks - DEBUG - Event before-parameter-
build.iam.ListGroups: calling handler <function generate_idempotent_uuid at 0x7fdf189b10d0>
2019-08-12 12:36:18,342 - MainThread - botocore.hooks - DEBUG - Event before-
call.iam.ListGroups: calling handler <function inject_api_version_header_if_needed at
0x7fdf189b2a60>
2019-08-12 12:36:18,343 - MainThread - botocore.endpoint - DEBUG - Making
request for OperationModel(name=ListGroups) with params: {'url_path': '/',
'query_string': '', 'method': 'POST', 'headers': {'Content-Type': 'application/x-
www-form-urlencoded; charset=utf-8', 'User-Agent': 'aws-cli/1.16.215 Python/3.7.3
Linux/4.14.133-113.105.amzn2.x86_64 botocore/1.12.205'}, 'body': {'Action':
'ListGroups', 'Version': '2010-05-08'}, 'url': 'https://iam.amazonaws.com/', 'context':
{'client_region': 'aws-global', 'client_config': <botocore.config.Config object at
0x7fdf16e9a4a8>, 'has_streaming_input': False, 'auth_type': None}}
2019-08-12 12:36:18,343 - MainThread - botocore.hooks - DEBUG - Event request-
created.iam.ListGroups: calling handler <bound method RequestSigner.handler of
<botocore.signers.RequestSigner object at 0x7fdf16e9a470>>
2019-08-12 12:36:18,343 - MainThread - botocore.hooks - DEBUG - Event choose-
signer.iam.ListGroups: calling handler <function set_operation_specific_signer at
0x7fdf18996f28>
2019-08-12 12:36:18,343 - MainThread - botocore.auth - DEBUG - Calculating signature using
v4 auth.
2019-08-12 12:36:18,343 - MainThread - botocore.auth - DEBUG - CanonicalRequest:
POST
/

content-type:application/x-www-form-urlencoded; charset=utf-8
host:iam.amazonaws.com
x-amz-date:20190812T193618Z

content-type;host;x-amz-date
5f776d91EXAMPLE9b8cb5eb5d6d4a787a33ae41c8cd6eEXAMPLEca69080e1e1f
2019-08-12 12:36:18,344 - MainThread - botocore.auth - DEBUG - StringToSign:
AWS4-HMAC-SHA256
20190812T193618Z
20190812/us-east-1/iam/aws4_request
ab7e367eEXAMPLE2769f178ea509978cf8bfa054874b3EXAMPLE8d043fab6cc9
2019-08-12 12:36:18,344 - MainThread - botocore.auth - DEBUG - Signature:
d85a0EXAMPLEb40164f2f539cdc76d4f294fe822EXAMPLE18ad1ddf58a1a3ce7
2019-08-12 12:36:18,344 - MainThread - botocore.endpoint - DEBUG - Sending http request:
<AWSPreparedRequest stream_output=False, method=POST, url=https://iam.amazonaws.com/,
headers={'Content-Type': b'application/x-www-form-urlencoded; charset=utf-8',
'User-Agent': b'aws-cli/1.16.215 Python/3.7.3 Linux/4.14.133-113.105.amzn2.x86_64
botocore/1.12.205', 'X-Amz-Date': b'20190812T193618Z', 'Authorization': b'AWS4-HMAC-
SHA256 Credential=AKIA01234567890EXAMPLE-east-1/iam/aws4_request, SignedHeaders=content-
type;host;x-amz-date, Signature=d85a07692aceb401EXAMPLEa1b18ad1ddf58a1a3ce7EXAMPLE',
'Content-Length': '36'}>
2019-08-12 12:36:18,344 - MainThread - urllib3.util.retry - DEBUG - Converted retries
value: False -> Retry(total=False, connect=None, read=None, redirect=0, status=None)
2019-08-12 12:36:18,344 - MainThread - urllib3.connectionpool - DEBUG - Starting new HTTPS
connection (1): iam.amazonaws.com:443
2019-08-12 12:36:18,664 - MainThread - urllib3.connectionpool - DEBUG - https://
iam.amazonaws.com:443 "POST / HTTP/1.1" 200 570
2019-08-12 12:36:18,664 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-
amzn-RequestId': '74c11606-bd38-11e9-9c82-559da0adb349', 'Content-Type': 'text/xml',
'Content-Length': '570', 'Date': 'Mon, 12 Aug 2019 19:36:18 GMT'}
2019-08-12 12:36:18,664 - MainThread - botocore.parsers - DEBUG - Response body:
b'<ListGroupsResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">\n
<ListGroupsResult>\n <IsTruncated>false</IsTruncated>\n <Groups>\n
<member>\n <Path>/</Path>\n <GroupName>MyTestGroup</GroupName>
\n <Arn>arn:aws:iam::123456789012:group/MyTestGroup</Arn>\n

213
AWS Command Line Interface Guía del usuario
Al ejecutar aws, aparece el error "command
not found" (comando no encontrado)

<GroupId>AGPA1234567890EXAMPLE</GroupId>\n <CreateDate>2019-08-12T19:34:04Z</
CreateDate>\n </member>\n </Groups>\n </ListGroupsResult>\n <ResponseMetadata>\n
<RequestId>74c11606-bd38-11e9-9c82-559da0adb349</RequestId>\n </ResponseMetadata>\n</
ListGroupsResponse>\n'
2019-08-12 12:36:18,665 - MainThread - botocore.hooks - DEBUG - Event needs-
retry.iam.ListGroups: calling handler <botocore.retryhandler.RetryHandler object at
0x7fdf16e9a780>
2019-08-12 12:36:18,665 - MainThread - botocore.retryhandler - DEBUG - No retry needed.
2019-08-12 12:36:18,665 - MainThread - botocore.hooks - DEBUG - Event after-
call.iam.ListGroups: calling handler <function json_decode_policies at 0x7fdf189b1d90>
{
"Groups": [
{
"Path": "/",
"GroupName": "MyTestGroup",
"GroupId": "AGPA123456789012EXAMPLE",
"Arn": "arn:aws:iam::123456789012:group/MyTestGroup",
"CreateDate": "2019-08-12T19:34:04Z"
}
]
}

Al ejecutar aws, aparece el error "command not


found" (comando no encontrado)
Causa posible: La ruta del sistema operativo no se
actualizó durante la instalación
Este error significa que el sistema operativo no puede encontrar el programa de la AWS CLI. Puede que la
instalación esté incompleta.

Si utiliza pip para instalar la AWS CLI, es posible que tenga que añadir la carpeta que contiene el
programa de aws a la variable de entorno PATH del sistema operativo o cambiar el modo para hacerla
ejecutable.

Es posible que tenga que añadir el ejecutable aws a la variable de entorno PATH del sistema operativo.
Siga los pasos que se indican en el procedimiento correspondiente:

• Windows – Añada laAWS CLIVersión 1 ejecutable a la ruta de la línea de comandos (p. 43)
• macOS: Añada laAWS CLIVersión 1 ejecutable en la ruta de la línea de comandos de macOS (p. 40)
• Linux: Añada laAWS CLIVersión 1 ejecutable a la ruta de la línea de comandos (p. 34)

Aparece el error "access denied" (acceso


denegado)
Causa posible: LaAWS CLIEl archivo de programa de
la no tiene el permiso «run» (ejecutar)
En Linux o macOS, asegúrese de que el programa de aws tiene permisos de ejecución para el usuario que
realiza la llamada. Normalmente, los permisos se establecen en 755.

214
AWS Command Line Interface Guía del usuario
Causa posible: Su identidad de IAM no
tiene permiso para realizar la operación

Para añadir permisos de ejecución al usuario, ejecute el siguiente comando sustituyendo ~ /.local/
bin/aws por la ruta que tiene el programa en el equipo.

$ chmod +x ~/.local/bin/aws

Causa posible: Su identidad de IAM no tiene permiso


para realizar la operación
Cuando ejecuta unAWS CLIcomando,AWSLas operaciones de se realizan en su nombre, utilizando
credenciales que lo asocian a un usuario o rol de IAM. Las políticas asociadas a ese usuario o rol de IAM
deben concederle permiso para llamar a las acciones de la API correspondientes a los comandos que
ejecuta con laAWS CLI.

La mayoría de los comandos llaman a una única acción que tiene un nombre que coincide con el nombre
del comando. Sin embargo, los comandos personalizados como aws s3 sync llamar a múltiples API.
Mediante la --debug opción puede ver a qué API llama un comando.

Si sabe con seguridad que el usuario o rol tiene los permisos adecuados asignados por la política,
compruebe que el comando de la AWS CLI utiliza las credenciales que espera. Consulte la siguiente
sección sobre credenciales (p. 215) para verificar que las credenciales que utiliza la AWS CLI son las
adecuadas.

Para obtener más información acerca de la asignación de permisos a usuarios y roles de IAM,
consulteInformación general sobre la administración del acceso: Permisos y políticasen laGuía del usuario
de IAM.

Aparece el error "invalid credentials" (credenciales


no válidas)
Causa posible: LaAWS CLIestá leyendo las
credenciales de una ubicación inesperada.
Puede que la AWS CLI esté leyendo credenciales de otra ubicación distinta de la que esperaba. Puede
ejecutar aws configure list para confirmar las credenciales que se utilizan.

En el siguiente ejemplo se muestra cómo comprobar las credenciales utilizadas para el perfil
predeterminado.

$ aws configure list


Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************XYVA shared-credentials-file
secret_key ****************ZAGY shared-credentials-file
region us-west-2 config-file ~/.aws/config

En el siguiente ejemplo se muestra cómo comprobar las credenciales de un perfil con nombre.

$ aws configure list --profile saanvi


Name Value Type Location
---- ----- ---- --------

215
AWS Command Line Interface Guía del usuario
Causa posible: El reloj del equipo no está sincronizado

profile saanvi manual --profile


access_key **************** shared-credentials-file
secret_key **************** shared-credentials-file
region us-west-2 config-file ~/.aws/config

Causa posible: El reloj del equipo no está sincronizado


Si está utilizando credenciales válidas, puede que el reloj no esté sincronizado. En Linux o macOS,
ejecutedatePara comprobar la hora.

$ date

Si el reloj del sistema no es correcto en unos minutos, utilice ntpd para sincronizarlo.

$ sudo service ntpd stop


$ sudo ntpdate time.nist.gov
$ sudo service ntpd start
$ ntpstat

En Windows, utilice las opciones de fecha y hora del Panel de control para configurar el reloj del sistema.

Aparece el error "signature does not match" (la


firma no coincide)
Cuando la AWS CLI ejecuta un comando, envía una solicitud cifrada a los servidores de AWS para realizar
las operaciones del servicio de AWS correspondientes. Sus credenciales (la clave de acceso y la clave
secreta) se incluyen en el cifrado y permiten que AWS autentique a la persona que realiza la solicitud. Tal
y como se indica a continuación, hay varias cosas que pueden interferir con el funcionamiento correcto de
este proceso.

Causa posible: El reloj no está sincronizado con


laAWSServidores.
Para protegerse de los ataques de reproducción, puede utilizar la hora actual durante el proceso de cifrado
y descifrado. Si la hora del cliente y el servidor no coinciden en una cantidad superior a la permitida, puede
que el proceso produzca un error y se rechace la solicitud. Esto también puede ocurrir cuando ejecuta
un comando en una máquina virtual cuyo reloj no está sincronizado con el reloj de la máquina host. Una
causa posible es cuando la máquina virtual está en hibernación y tarda algún tiempo en sincronizar el reloj
con la máquina host.

En Linux o macOS, ejecutedatePara comprobar la hora.

$ date

Si el reloj del sistema no es correcto en unos minutos, utilice ntpd para sincronizarlo.

$ sudo service ntpd stop


$ sudo ntpdate time.nist.gov
$ sudo service ntpd start
$ ntpstat

216
AWS Command Line Interface Guía del usuario
Causa posible: Su sistema operativo está
manejando malAWSClaves secretas que
contienen determinados caracteres especiales.
En Windows, utilice las opciones de fecha y hora del Panel de control para configurar el reloj del sistema.

Causa posible: Su sistema operativo está manejando


malAWSClaves secretas que contienen determinados
caracteres especiales.
Si las recetasAWSincluye ciertos caracteres especiales, como-,+,/, o bien%, algunas variantes del sistema
operativo procesan la cadena de forma incorrecta y hacen que la cadena de clave secreta se interprete
incorrectamente.

Si procesa las claves de acceso y las claves secretas utilizando otras herramientas o scripts, como
herramientas que compilan el archivo de credenciales en una nueva instancia cuando se crea, esas
herramientas y scripts podrían tratar los caracteres especiales de forma distinta, lo que hace que se
transformen en algo que AWS ya no reconoce.

La solución sencilla consiste en volver a generar la clave secreta para obtener una que no incluya el
carácter especial.

Resources
Para obtener ayuda adicional con suAWS CLI, visite elAWS CLIComunidadenGitHub.

217
AWS Command Line Interface Guía del usuario
Variable de entorno de codificación de archivos

Romper cambios: migrar desdeAWS


CLIVersión 1 a versión 2
En este tema se describen los cambios en el comportamiento entreAWS CLIy la versión 1AWS CLILa
versión 2 que puede requerir que realice cambios en los scripts o comandos para obtener el mismo
comportamiento en la versión 2 que en la versión 1.

Temas
• AWS CLILa versión 2 ahora usa la variable de entorno para establecer la codificación de archivos de
texto (p. 218)
• AWS CLILa versión 2 ahora pasa los parámetros binarios como cadenas codificadas en base64 de
forma predeterminada (p. 219)
• AWS CLILa versión 2 mejora el control de las propiedades y etiquetas de los archivos de Amazon S3
al realizar copias multiparte (p. 219)
• AWS CLILa versión 2 ya no recupera automáticamentehttp://orhttps://Las URL de los
parámetros (p. 220)
• AWS CLIutiliza un programa de paginación para todos los resultados de forma
predeterminada. (p. 220)
• AWS CLILa versión 2 ahora devuelve todos los valores de salida de marca temporal en formato ISO
8601 (p. 221)
• AWS CLIversión 2 mejora el manejo deAWS CloudFormationimplementaciones de que no producen
cambios (p. 222)
• AWS CLIla versión 2 utiliza claves de Amazon S3 de forma más coherente (p. 222)
• AWS CLIla versión 2 utiliza el punto final regional de Amazon S3 correcto paraus-
east-1Región (p. 222)
• AWS CLIutiliza la versión 2AWS STSPor defecto, los puntos de enlace (p. 222)
• AWS CLIreemplaza la versión 2ecr get-loginporecr get-login-password (p. 223)
• AWS CLIEl soporte de la versión 2 para complementos está cambiando (p. 223)
• AWS CLILa versión 2 ya no admite alias «ocultos» (p. 223)

AWS CLILa versión 2 ahora usa la variable de


entorno para establecer la codificación de archivos
de texto
De forma predeterminada, los archivos de texto utilizan la misma codificación que la configuración regional
instalada. 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 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 (p. 71) .

218
AWS Command Line Interface Guía del usuario
Pasar parámetros binarios

AWS CLILa versión 2 ahora pasa los parámetros


binarios como cadenas codificadas en base64 de
forma predeterminada
AWS CLILa versión 1 no siempre facilitaba el paso de los parámetros binarios de la salida de un
comando a la entrada de otro comando sin algún tipo de procesamiento intermedio. Algunos comandos
requeridosbase64cadenas codificadas, otras requerían cadenas de bytes codificadas en UTF8.AWS CLILa
versión 2 permite el control de los parámetros binarios para poder pasar valores de un comando a otro de
una forma más fiable.

De forma predeterminada, laAWS CLILa versión 2 ahora pasa todos los parámetros binarios de entrada
y salida como cadenas codificadas en base64. Un parámetro que requiere una entrada binaria tiene su
tipo especificado como blob (objeto binario grande) en la documentación. Para pasar datos binarios como
un archivo a unAWS CLI, el parámetroAWS CLILa versión 2 permite especificar el archivo utilizando los
prefijos siguientes:

• file://— ElAWS CLItrata el contenido del archivo como texto codificado en base64. Por ejemplo: --
some-param file://~/my/path/file-with-base64.txt
• fileb://— ElAWS CLItrata el contenido del archivo como binario no codificado. Por ejemplo: --
some-param fileb://~/my/path/file-with-raw-binary.bin

Puede decirle a laAWS CLIPara volver a la versión 2AWS CLIversión 1 especificando la siguiente línea en
el~/.aws/configpara un perfil.

cli_binary_format=raw-in-base64-out

También puede revertir la configuración de un comando individual, lo que invalida la configuración del perfil
activo, mediante la inclusión del parámetro --cli-binary-format raw-in-base64-out en la línea
de comandos.

Si vuelve a laAWS CLIde la versión 1 y especifique un archivo para un parámetro binario


mediantefile://orfileb://, elAWS CLItrata el contenido del archivo como binario sin codificar.

AWS CLILa versión 2 mejora el control de las


propiedades y etiquetas de los archivos de Amazon
S3 al realizar copias multiparte
Cuando se utiliza elAWS CLIversión 1 de los comandos en elaws s3para copiar un archivo de una
ubicación de depósito de Amazon S3 a otra ubicación de depósito de Amazon S3 y esa operación
utilizacopia multiparte, no se copian propiedades de archivo del objeto de origen en el objeto de destino.

De forma predeterminada, laAWS CLIversión 2 en els3El espacio de nombres de que realizan copias
multiparte ahora transfieren todas las etiquetas y el siguiente conjunto de propiedades del origen a la copia
de destino:content-type,content-language,content-encoding,content-disposition,cache-
control,expires, ymetadata.

Esto puede generar un error adicionalAWSAlgunas llamadas de la API al punto de enlace de Amazon S3
que no se habrían realizado si hubiera utilizadoAWS CLIVersión 1. Estos pueden incluir: HeadObject,
GetObjectTagging y PutObjectTagging.

219
AWS Command Line Interface Guía del usuario
Las páginas web no se recuperan
automáticamente para los parámetros

Si necesita cambiar este comportamiento predeterminado enAWS CLIversión 2, utilice el comando--


copy-propsPara especificar una de las siguientes opciones:

• predeterminada: valor predeterminado. Especifica que la copia incluye todas las etiquetas asociadas
al objeto de origen y las propiedades abarcadas por el parámetro --metadata-directive utilizado
para copias no multiparte: content-type, content-language, content-encoding, content-
disposition, cache-control, expires y metadata.
• Directiva de metadatos— Especifica que la copia incluye sólo las propiedades abarcadas por la
propiedad--metadata-directiveutilizado para copias no multiparte. No copia ninguna etiqueta.
• ninguno: especifica que la copia no incluye ninguna de las propiedades del objeto de origen.

AWS CLILa versión 2 ya no recupera


automáticamentehttp://orhttps://Las URL de
los parámetros
LaAWS CLILa versión 2 ya no realiza una operación GET cuando un valor de parámetro comienza
conhttp://orhttps://y, a continuación, utilizar el contenido devuelto como valor del parámetro.
Si necesita recuperar una URL y pasar el contenido de esa URL como valor de un parámetro, le
recomendamos que utilice curl o una herramienta similar para descargar el contenido de la URL en un
archivo local. A continuación, 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.google.com y pasar ese contenido como parámetro. En cambio, pasa la cadena de texto
literal https://google.com como parámetro.

$ aws ssm put-parameter --value http://www.google.com --name prod.microservice1.db.secret


--type String 2

Si realmente desea 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.

AWS CLIutiliza un programa de paginación para


todos los resultados de forma predeterminada.
De forma predeterminada,AWS CLILa versión 2 devuelve todas las salidas a través del programa de
paginación predeterminado del sistema operativo. Por defecto, este programa es el programa less en
Linux y macOS, y el programa more en Windows. Esto puede facilitarle la navegación por gran cantidad
de resultados de un servicio al mostrar las páginas de salida de una en una. Sin embargo, a veces quiere
ver todas las salidas sin necesidad de pulsar una tecla cada vez que quiera pasar de página, como cuando

220
AWS Command Line Interface Guía del usuario
Todos los valores de fecha/hora en formato ISO 8601

está ejecutando scripts. Para ello, puede configurar laAWS CLIPara usar un programa de paginación
diferente o ninguno en absoluto. Para ello, configure la variable de entorno AWS_PAGER o la configuración
de la cli_pager del archivo ~/.aws/config y especifique el comando que desea utilizar. Puede
especificar un comando que esté en la ruta de búsqueda o especificar la ruta de acceso completa y el
nombre de archivo de cualquier comando disponible en el equipo.

Puede deshabilitar todo el uso de un programa de paginación externo si establece la variable en una
cadena vacía como se muestra en el siguiente ejemplo.

Al establecer una opción en la~/.aws/configfile

En el ejemplo siguiente se muestra la configuración para el perfil default, pero se puede agregar la
configuración a cualquier perfil del archivo ~/.aws/config.

[default]
cli_pager=

Uso de una variable de entorno

Linux o macOS:

$ export AWS_PAGER=""

Windows:

C:\> setx AWS_PAGER ""

AWS CLILa versión 2 ahora devuelve todos los


valores de salida de marca temporal en formato
ISO 8601
De forma predeterminada,AWS CLILa versión 2 devuelve todos los valores de respuesta de marca
temporal en laFormato ISO 8601. EnAWS CLIEn la versión 1, 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.

Las marcas temporales con formato ISO 8601 se parecen a los siguientes ejemplos. El primer ejemplo
muestra la hora en hora universal coordinada (UTC) mediante la inclusión de una Z después de la hora. La
fecha y la hora están separadas por una T.

2019-10-31T22:21:41Z

Para especificar una zona horaria diferente, en lugar de Z, especifique + o - y el número de horas que
esta zona horaria está por delante o por detrás de UTC mediante un valor de dos dígitos. En el siguiente
ejemplo, se muestra la misma hora que en el ejemplo anterior, pero ajustada a la hora estándar del
Pacífico, que va ocho horas por detrás de UTC:

2019-10-31T14:21:41-08

Para ver las marcas temporales en el formato devuelto por la respuesta de la API HTTP, agregue la
siguiente línea al perfil .aws/config.

221
AWS Command Line Interface Guía del usuario
Control mejorado de la implementación
de AWS CloudFormation

cli_timestamp_format = wire

AWS CLIversión 2 mejora el manejo deAWS


CloudFormationimplementaciones de que no
producen cambios
EnAWS CLIversión 1, si implementó unAWS CloudFormationLa plantilla de la que no producía cambios,
de forma predeterminada, laAWS CLIEl error de un código de error. Esto podía ser un problema si no
consideraba que era un error y quería que el script continuara. Puede solucionar esto enAWS CLIversión
1, agregando el indicador-–no-fail-on-empty-changesetque devuelve0y no causa un error en el
script.

Debido a que este es el escenario de caso común, elAWS CLIla versión 2 ahora tiene por defecto devolver
un código de salida exitoso de0Cuando la implementación no ha producido ningún cambio y la operación
devuelve un conjunto de cambios vacío.

EnAWS CLIEn la versión 2, para volver al comportamiento original, debe añadir la marca--fail-on-
empty-changeset.

AWS CLIla versión 2 utiliza claves de Amazon S3


de forma más coherente
Para los comandos de personalización de Amazon S3 en las3, mejoramos la coherencia de cómo se
muestran las rutas. En el navegadorAWS CLIEn la versión 2, las rutas siempre se muestran en relación
con la clave pertinente. LaAWS CLIAlgunas veces, mostraba las rutas en formato absoluto y otras veces
en formato relativo.

AWS CLIla versión 2 utiliza el punto final regional


de Amazon S3 correcto paraus-east-1Región
Cuando configuraAWS CLIversión 1 para usar elus-east-1, laAWS CLIutiliza las3.amazonaws.comque
se alojó físicamente en elus-east-1region.AWS CLIversión 2 ahora utiliza el verdadero punto final
regionals3.us-east-1.amazonaws.comcuando se especifica esa región. Para forzar laAWS CLIPara
utilizar el punto de enlace global, puede establecer la región de un comando enaws-global.

AWS CLIutiliza la versión 2AWS STSPor defecto,


los puntos de enlace
De forma predeterminada,AWS CLILa versión 2 envía todos losAWS STSSolicitudes de la API de al punto
de enlace regional para laAWSRegión .

De forma predeterminada,AWS CLIenvía la versión 1AWS STSsolicitudes a laAWS STS. Puede controlar
este comportamiento predeterminado en V1 con la configuración sts_regional_endpoints (p. 60).

222
AWS Command Line Interface Guía del usuario
Dar de baja ecr get-login

AWS CLIreemplaza la versión 2ecr get-


loginporecr get-login-password
LaAWS CLIversión 2 reemplaza el comandoaws ecr get-loginCon la nuevaaws ecr get-login-
passwordque 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, permitiendo una mejor automatización.

Laaws ecr get-login-passwordEl comando está disponible en laAWS CLIversión 1.17.10 y posterior,
y elAWS CLIVersión 2. Los mayoresaws ecr get-loginEl comando todavía está disponible en laAWS
CLIpara retrocompatibilidad.

El comando aws ecr get-login-password le permite 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

AWS CLIEl soporte de la versión 2 para


complementos está cambiando
Compatibilidad con complementos en laAWS CLILa versión 2 es completamente provisional y está
destinada a ayudar a los usuarios a migrar desdeAWS CLILanzamiento de la interfaz estable y actualizada.
No hay garantías de que un complemento en particular o incluso la interfaz de complementos de la CLI
sean compatibles en futuras versiones de laAWS CLIVersión 2. Si confía en los complementos, asegúrese
de bloquear una versión concreta de la 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], comience definiendo la variable cli_legacy_plugin_path y estableciendo


su valor en la ruta de paquetes del sitio de Python en la que habita su módulo de complemento. A
continuación, puede configurar un plugin proporcionando un nombre para el plugin (plugin-name), y el
nombre de archivo del módulo Python, (plugin-module), que contiene el código fuente de su plugin. La
CLI carga cada plugin importando su plugin-module y llamando a su función awscli_initialize.

AWS CLILa versión 2 ya no admite alias «ocultos»


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

223
AWS Command Line Interface Guía del usuario
Sin alias ocultos

En la tabla siguiente, la primera columna muestra el servicio, el comando y el parámetro que funcionan
en todas las versiones, incluida laAWS CLIVersión 2. La segunda columna muestra el alias que ya no
funciona en laAWS CLIVersió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 start

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

224
AWS Command Line Interface Guía del usuario

Historial de la documentación de la
guía del usuario de AWS CLI
En la siguiente tabla se describen los cambios importantes de laAWS Command Line InterfaceGuía
del usuario, a partir de enero de 2019. Para obtener notificaciones sobre las actualizaciones de esta
documentación, puede suscribirse a la fuente RSS.

update-history-change update-history-description update-history-date

Se ha añadidoAWS Se ha añadidoAWS 11 de marzo de 2021


CLIInformación sobre alias CLIinformación sobre alias.
Los alias son accesos directos
que se pueden crear en elAWS
Command Line Interface(AWS
CLI) para acortar los comandos
o secuencias de comandos que
utiliza con frecuencia.

Información actualizada de salida Se actualizó la información de los 1 de febrero de 2021


del filtro filtros y se trasladó a su propia
página.

Anuncio de obsolescencia para Python 2.7 fue obsolescente por 29 de enero de 2021
Python 2.7, 3.4 y 3.5 la Python Software Foundation el
1 de enero de 2020. En el futuro,
los clientes que utilizan elAWS
CLIversión 1 debería pasar a
usar Python 3, con un mínimo de
Python 3.6. El soporte de Python
2.7 está obsoleto para las nuevas
versiones delAWS CLIversión 1
a partir del 19/7/2021. Python 3.4
y 3.5 está obsoleto a partir del
1/2/2021.

Se ha añadido información sobre Se ha añadidoAWS 20 de noviembre de 2020


los asistentes CLIinformación del asistente de
la versión 2.

Solicitud automática actualizada Se ha actualizado laAWS 10 de noviembre de 2020


CLIversión 2 con información
automática con las
características actuales.

Se ha añadido un ejemplo de Se ha añadido un ejemplo de 15 de octubre de 2020


scripting de Amazon S3 script de ciclo de vida de Amazon
S3.

Se ha añadido un ejemplo de Se ha añadido un ejemplo 15 de octubre de 2020


scripting de Amazon EC2 de script de tipo de instancia
Amazon EC2.

Se ha añadido información sobre Se ha añadido una página de 17 de septiembre de 2020


reintentos reintentos para las características

225
AWS Command Line Interface Guía del usuario

y el comportamiento de los
reintentos en elAWS CLI.

Página de paginación del lado Información de paginación 17 de agosto de 2020


del cliente y del servidor actualizada y centralizada en una
sola página.

Página actualizada de comandos Se ha actualizado la página de 30 de julio de 2020


de S3 comandos s3 de alto nivel con
nuevos ejemplos y recursos.

Información de instalación Se ha actualizado la información 19 de mayo de 2020


actualizada de instalación, actualización y
desinstalación de Linux, macOS
y Windows.

Información agregada para la De forma predeterminada,AWS 14 de mayo de 2020


codificación de archivos de texto CLILa versión 2 utiliza la misma
en laAWS CLIversión 2 codificación de archivo de texto
que la configuración local. Ahora
puede usar variables de entorno
para establecer la codificación de
archivos de texto.

Imagen oficial de Docker para Imagen oficial de Docker de 31 de marzo de 2020


laAWS CLILanzamiento de la soporte paraAWS CLILa versión
versión 2 de 2 se ha lanzado para Linux,
macOS y Windows.

Se añadió información sobre De forma predeterminada,AWS 19 de febrero de 2020


los buscapersonas del lado del CLIversión 2 utiliza el programa
cliente paraAWS CLIversión 2 buscapersonaslesspara todos
los resultados del lado del cliente.

AWS Command Line Interface LaAWS CLILa versión 2 está 10 de febrero de 2020
(AWS CLILanzamiento de la disponible en general y es la
versión 2 versión recomendada para los
clientes.

Instalador de macOSAWS El instalador de macOS 3 de febrero de 2020


CLIAhora la versión 2 es paraAWS CLIla versión 2 se ha
un instalador de Apple actualizado desde un.zipCon
Package.pkgfile. un script de shell al paquete de
instalador de macOS completo.
Esto simplifica la instalación
y la hace compatible con las
versiones más recientes de
macOS.

Se ha añadido contenido De forma predeterminada,AWS 13 de enero de 2020


paraAWS CLICompilación CLIla versión 2 ahora dirige las
predeterminada mejorada de la solicitudes de Amazon S3 yAWS
versión 2 de los puntos de enlace STSAl punto de enlace regional
regionales de S3 y STS configurado actualmente en lugar
de al punto de enlace global.

226
AWS Command Line Interface Guía del usuario

Actualizado para eliminar la A partir del 10 de enero de 10 de enero de 2020


compatibilidad con Python 2.6 y 20,AWS CLILa versión 1 de
3.3AWS CLIversión 1 la ya no admite el uso de las
versiones 2.6 o 3.3 de Python.
Debe actualizar a una versión
más reciente de Python para
utilizarAWS CLIversión 1.17 o
posterior.

Versión preliminar del Anuncio de la versión preliminar 7 de noviembre de 2019


desarrollador paraAWS deAWS CLIversión 2. Se han
CLIversión 2 agregado instrucciones sobre
la instalación de la versión 2.
Se ha agregado el tema sobre
migración para analizar las
diferencias entre las versiones 1
y 2.

Se ha añadido compatibilidad AWS CLILa versión 2 agrega 7 de noviembre de 2019


con AWS Single Sign-On para compatibilidad para crear un
perfiles con nombre de la AWS perfil con nombre que puede
CLI iniciar sesión directamente en
unAWS SSOcuenta de usuario
y obtenerAWScredenciales
temporales para su uso enAWS
CLIcommands.

Nueva sección de MFA Se ha añadido una nueva 3 de mayo de 2019


sección que describe cómo
obtener acceso a la CLI mediante
la autenticación multifactor y los
roles.

Se ha actualizado la sección Se han mejorado y añadido 7 de marzo de 2019


"Uso de la CLI" instrucciones y procedimientos
de uso.

Se ha actualización la sección Se han mejorado y 7 de marzo de 2019


"Instalación de la CLI" añadido instruccionesAWS
CLIinstrucciones y
procedimientos de instalación.

Se ha actualizado la sección Se han mejorado y 7 de marzo de 2019


"Configuración de la CLI" añadido instruccionesAWS
CLIinstrucciones y
procedimientos de configuración.

227

También podría gustarte