

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.

# Utilice construcciones condicionales en TOE de AWS
<a name="toe-conditional-constructs"></a>

Los constructos condicionales realizan diferentes acciones en el documento componente en función de si la expresión condicional especificada se evalúa como `true` o `false`. Puede utilizar el constructo `if` para controlar el flujo de ejecución del documento del componente.

## Constructo if
<a name="toe-conditional-if"></a>

Puede utilizar el constructo `if` para evaluar si un paso debe ejecutarse o no. De forma predeterminada, cuando la expresión condicional `if` se evalúa como `true`, TOE de AWS ejecuta el paso y cuando la condición se evalúa como `false`, TOE de AWS se salta el paso. Si se omite un paso, se considera un paso correcto cuando TOE de AWS evalúa si la fase y el documento se han ejecutado correctamente.

**nota**  
Una instrucción `if` solo se evalúa una vez, incluso si el paso desencadena un reinicio. Si un paso se reinicia, reconoce que la instrucción `if` ya se ha evaluado y continúa donde la dejó.

### Sintaxis
<a name="toe-conditional-if-syntax"></a>

```
if:
  - <conditional expression>:
      [then: <step action>]
      [else: <step action>]
```


| Nombre de la clave | Obligatorio | Description (Descripción) | 
| --- | --- | --- | 
| expresión condicional | Sí |  La expresión condicional puede contener exactamente uno de los siguientes tipos de operadores en el nivel superior. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-conditional-constructs.html) Si la expresión debe cumplir varias condiciones, utilice un operador lógico para especificarlas.  | 
| then | No |  Define la acción que se debe realizar si la expresión condicional se evalúa como `true`.  | 
| else | No |  Define la acción que se debe realizar si la expresión condicional se evalúa como `false`.  | 
| acción de paso | Condicional |  Al utilizar `then` o `else`, debe especificar una de las siguientes acciones de pasos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/toe-conditional-constructs.html)  | 

**Ejemplo 1: instalación de un paquete**  
Los siguientes pasos de ejemplo de un documento de TOE de AWS componentes utilizan operadores lógicos para probar el valor de un parámetro y ejecutar los comandos del administrador de paquetes adecuados para instalar una aplicación si el paquete está descomprimido.

```
    - name: InstallUnzipAptGet
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'apt-get'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo apt-get update
            - sudo apt-get install -y unzip

    - name: InstallUnzipYum
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'yum'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo yum install -y unzip

    - name: InstallUnzipZypper
      action: ExecuteBash
      if:
        and:
            - binaryExists: 'zypper'
            - not:
                binaryExists: 'unzip'
      inputs:
        commands:
            - sudo zypper refresh
            - sudo zypper install -y unzip
```

**Ejemplo 2: omisión de un paso**  
El siguiente ejemplo muestra dos formas de omitir un paso. Una usa un operador lógico y la otra usa un operador de comparación con la acción del paso `Skip`.

```
# Creates a file if it does not exist using not
- name: CreateMyConfigFile-1
  action: ExecuteBash
  if:
    not:
      fileExists: '/etc/my_config'
  inputs:
    commands:
      - echo "Hello world" > '/etc/my_config'

# Creates a file if it does not exist using then and else
- name: CreateMyConfigFile-2
  action: ExecuteBash
  if:
    fileExists: '/etc/my_config'
    then: Skip
    else: Execute
  inputs:
    commands:
      - echo "Hello world" > '/etc/my_config'
```