

# Creación y uso de alias en la AWS CLI
<a name="cli-usage-alias"></a>

Los alias son accesos directos que se pueden crear en la AWS Command Line Interface (AWS CLI) para acortar los comandos o secuencias de comandos que utiliza con frecuencia. Puede crear alias en el campo `alias` ubicado en la carpeta de configuración.

**Topics**
+ [Requisitos previos](#cli-usage-alias-prepreqs)
+ [Paso 1: Creación del archivo de alias](#cli-usage-alias-create-file)
+ [Paso 2: Creación de un alias](#cli-usage-alias-create-alias)
+ [Paso 3: Cómo llamar a un alias](#cli-usage-alias-call-alias)
+ [Ejemplos de repositorio de alias](#cli-usage-alias-examples)
+ [Recursos](#cli-usage-alias-references)

## Requisitos previos
<a name="cli-usage-alias-prepreqs"></a>

Para utilizar los comandos de alias, debe seguir estos pasos:
+ Instalar y configurar la AWS CLI. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de AWS CLI](getting-started-install.md) y [Credenciales de autenticación y acceso para la AWS CLI](cli-chap-authentication.md).
+ Utilice como mínimo una versión de 1.11.24 o 2.0.0 de AWS CLI.
+ (Opcional) Para usar scripts de bash de alias de AWS CLI, debe utilizar un terminal compatible con bash.

## Paso 1: Creación del archivo de alias
<a name="cli-usage-alias-create-file"></a>

Para crear el archivo `alias`, 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. Cree una carpeta con el nombre `cli` en su carpeta de configuración de AWS CLI. De forma predeterminada, la carpeta de configuración es `~/.aws/` en Linux o macOS y `%USERPROFILE%\.aws\` en Windows. Puede crearla 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
   ```

------

   La ruta predeterminada resultante de la carpeta `cli` es `~/.aws/cli/` en Linux o macOS y `%USERPROFILE%\.aws\cli` en Windows.

1. En la carpeta `cli`, cree un archivo de texto con el nombre `alias` sin extensión y agréguele `[toplevel]` a la primera línea. Puede crear este archivo a través de su editor de texto preferido o utilizar el siguiente comando.

------
#### [ Linux and macOS ]

   ```
   $ echo '[toplevel]' > ~/.aws/cli/alias
   ```

------
#### [ Windows ]

   ```
   C:\> echo [toplevel] > %USERPROFILE%/.aws/cli/alias
   ```

------

## Paso 2: Creación de un alias
<a name="cli-usage-alias-create-alias"></a>

Puede crear un alias mediante comandos básicos o scripting de bash.

### Creación de un alias de comando básico
<a name="cli-usage-alias-create-alias-basic"></a>

Puede crear su alias agregando un comando con la siguiente sintaxis en el archivo `alias` que creó en el paso anterior. 

**Sintaxis**

```
aliasname = command [--options]
```

el *nombre de alias* es lo que usted llama su alias. El *comando* es 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 muestra cómo crear un alias llamado `aws whoami` con el comando [https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html). Dado que este alias llama a un comando AWS CLI existente, puede escribir el comando sin el prefijo `aws`.

```
whoami = sts get-caller-identity
```

En el siguiente ejemplo se toma el ejemplo anterior `whoami` y se agregan las opciones de filtro `Account` y texto `output`.

```
whoami2 = sts get-caller-identity --query Account --output text
```

### Creación de un alias de subcomando
<a name="cli-usage-alias-create-alias-sub-command"></a>

**nota**  
La característica de alias de subcomando requiere una versión de la AWS CLI mínima de 1.11.24 o 2.0.0

Puede crear un alias para subcomandos si agrega un comando mediante la siguiente sintaxis en el archivo `alias` que creó en el paso anterior. 

**Sintaxis**

```
[command commandGroup]
aliasname = command [--options]
```

En *commandGroup* se indica el espacio de nombres del comando, por ejemplo, el comando `aws ec2 describe-regions` está en el grupo de comandos `ec2`. el *nombre de alias* es lo que usted llama su alias. El *comando* es 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 muestra cómo crear un alias llamado `aws ec2 regions` con el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-regions.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-regions.html). Dado que este alias llama a un comando AWS CLI existente en el espacio de nombres de comando `ec2`, puede escribir el comando sin el prefijo `aws ec2`.

```
[command ec2]
regions = describe-regions --query Regions[].RegionName
```

Para crear alias de comandos fuera del espacio de nombres del comando, anteponga al comando completo un signo de exclamación. En el siguiente ejemplo se muestra cómo crear un alias llamado `aws ec2 instance-profiles` con el comando [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html).

```
[command ec2]
instance-profiles = !aws iam list-instance-profiles
```

**nota**  
Los alias solo utilizan espacios de nombres de comando existentes y no puede crear nuevos. Por ejemplo, no puede crear un alias con la sección `[command johnsmith]` ya que el espacio de nombres de comando `johnsmith` no existe.

### Creación de un alias de scripting bash
<a name="cli-usage-alias-create-alias-scripting"></a>

**aviso**  
Para utilizar scripts bash de alias AWS CLI, 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
```

El *nombre de alias* es lo que llama su alias y el *contenido de script* es el script que desea ejecutar al llamar al alias.

El siguiente ejemplo utiliza `opendns` para generar la dirección IP actual. Dado que puede usar alias en otros alias, el siguiente alias `myip` 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
```

El siguiente ejemplo de script llama al alias anterior `aws myip` para autorizar la entrada de un grupo de seguridad de Amazon EC2 a su dirección IP.

```
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 scripting de Bash, las variables siempre se pasan en el orden en que las ingresó. En el scripting de Bash, los nombres de las variables no se tienen en cuenta, solo el orden en que aparecen. En los siguientes ejemplos de alias `textalert`, la variable para la opción `--message` es la primera y la opción `--phone-number` es la segunda.

```
textalert =
  !f() {
    aws sns publish --message "${1}" --phone-number ${2}
  }; f
```

## Paso 3: Cómo llamar a un alias
<a name="cli-usage-alias-call-alias"></a>

Para ejecutar el alias que creó en su archivo `alias` utilice la siguiente sintaxis. Puede agregar opciones adicionales al llamar a su alias.

**Sintaxis**

```
$ aws aliasname
```

En el siguiente ejemplo se utiliza el alias de comando `aws whoami`.

```
$ aws whoami
{
    "UserId": "A12BCD34E5FGHI6JKLM",
    "Account": "1234567890987",
    "Arn": "arn:aws:iam::1234567890987:user/userName"
}
```

El siguiente ejemplo utiliza el alias `aws whoami` con opciones adicionales para devolver solo el número `Account` en la salida `text`.

```
$ aws whoami --query Account --output text
1234567890987
```

En el siguiente ejemplo se utiliza el [alias de subcomando](#cli-usage-alias-create-alias-sub-command) `aws ec2 regions`.

```
$ aws ec2 regions
[
    "ap-south-1",
    "eu-north-1",
    "eu-west-3",
    "eu-west-2",
...
```

### Cómo llamar a un alias usando variables de scripting de Bash
<a name="cli-usage-alias-call-alias-variables"></a>

Cuando se llama a alias que usan scripting de Bash, las variables se pasan en el orden en que se introducen. En el scripting de Bash, el nombre de las variables no se tiene en cuenta, solo el orden en que aparecen. Por ejemplo, en el siguiente alias `textalert`, la variable de la opción `--message` está primera y `--phone-number` está segunda.

```
textalert =
  !f() {
    aws sns publish --message "${1}" --phone-number ${2}
  }; f
```

Cuando llama al alias `textalert`, debe pasar variables en el mismo orden en que se ejecutan en el alias. En el siguiente ejemplo utilizamos las variables `$message` y `$phone`. La variable `$message` se pasa como `${1}` para la opción `--message` y la variable `$phone` se pasa como `${2}` para la opción `--phone-number`. Esto da como resultado una llamada correcta al alias `textalert` 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 para `$phone` y `$message`. La variable `$phone` se pasa como `${1}` para la opción `--message` y la variable `$message` se pasa como `${2}` para la opción `--phone-number`. Dado que las variables están fuera de servicio, el alias pasa las variables de manera incorrecta. Esto provoca un error porque el contenido de `$message` no coinciden con los requisitos de formato de número de teléfono para la opción `--phone-number`.

```
$ 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
<a name="cli-usage-alias-examples"></a>

El [repositorio de alias de AWS CLI](https://github.com/awslabs/awscli-aliases) en *GitHub* contiene ejemplos de alias de AWS CLI creados por el equipo de desarrolladores y la comunidad de AWS CLI. Puede usar todo el ejemplo del archivo `alias` o tomar alias individuales para su propio uso.

**aviso**  
Al ejecutar los comandos de esta sección, se elimina su archivo `alias`existente. Para evitar sobrescribir el archivo de alias existente, cambie la ubicación de descarga.

**Para utilizar alias del repositorio**

1. Instala Git Para obtener instrucciones de instalación, consulte [Introducción - Instalación de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) en la *Documentación de Git*.

1. Instale el comando `jp`. El comando `jp` se utiliza en el alias `tostring`. Para obtener instrucciones de instalación, consulte el archivo [JMESPath (jp) README.md](https://github.com/jmespath/jp) en *GitHub*.

1. Instale el comando `jq`. El comando `jq` se utiliza en el alias `tostring-with-jq`. Para obtener instrucciones de instalación, consulte el archivo [JSON processor (jq)](https://stedolan.github.io/jq/download/) en *GitHub*.

1. Descargue el archivo `alias` de la siguiente manera:
   + Ejecute los siguientes comandos que se descargan del repositorio y se copian el archivo `alias` en 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 la carpeta `cli` en su carpeta de configuración AWS CLI. De forma predeterminada, la carpeta de configuración es `~/.aws/` en Linux o macOS y `%USERPROFILE%\.aws\` en Windows. 

1. Para verificar que los alias funcionan, ejecute el siguiente alias.

   ```
   $ aws whoami
   ```

   Esto muestra la misma respuesta que el comando `aws sts get-caller-identity`:

   ```
   {
       "Account": "012345678901",
       "UserId": "AIUAINBADX2VEG2TC6HD6",
       "Arn": "arn:aws:iam::012345678901:user/myuser"
   }
   ```

## Recursos
<a name="cli-usage-alias-references"></a>
+ El [repositorio de alias de AWS CLI](https://github.com/awslabs/awscli-aliases) en *GitHub* contiene ejemplos de alias de AWS CLI creados por el equipo de desarrolladores de AWS CLI y con la contribución de la comunidad de AWS CLI.
+ El anuncio de la característica de alias de [AWS re:Invent 2016: The Effective AWS CLI User](https://www.youtube.com/watch?t=1590&v=Xc1dHtWa9-Q) en *YouTube*. 
+ [https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html)