

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.

# Personalización de software en servidores Windows
<a name="customize-containers-windows-ec2"></a>

Tal vez desee personalizar y configurar el software del que depende la aplicación. Estos archivos puede ser dependencias requeridas por la aplicación, como paquetes adicionales o servicios que necesite ejecutar. Para obtener información general acerca de cómo personalizar y configurar los entornos de Elastic Beanstalk, consulte [Configuración de entornos de Elastic Beanstalk](customize-containers.md).

**nota**  
YAML usa la sangría uniforme. Utilice el mismo nivel de sangría cuando sustituya el contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para la sangría, no tabuladores.

Los archivos de configuración admiten las siguientes claves que afectan al servidor Windows en el que se ejecuta la aplicación.

**Topics**
+ [Paquetes](#windows-packages)
+ [Orígenes](#windows-sources)
+ [Archivos](#windows-files)
+ [Comandos](#windows-commands)
+ [Services](#windows-services)
+ [Comandos de contenedor](#windows-container-commands)

Las claves se procesan en el orden en el que se muestran.

**nota**  
Las versiones más antiguas (sin control de versiones) de la plataforma .NET no procesan los archivos de configuración en el orden correcto. Encontrará más información en [Migración entre las versiones principales de la plataforma Windows Server de Elastic Beanstalk](dotnet-v2migration.md).

Vigile los [eventos](using-features.events.md) de su entorno mientras desarrolle y pruebe archivos de configuración. Elastic Beanstalk hará caso omiso de un archivo de configuración si este contiene errores de validación, como una clave no válida, por ejemplo, y no procesará ninguna de las claves contenidas en ese mismo archivo. Si esto sucede, Elastic Beanstalk agrega un evento de advertencia al registro de eventos.

## Paquetes
<a name="windows-packages"></a>

Utilice la clave `packages` para descargar e instalar aplicaciones y componentes previamente empaquetados.

En entornos de Windows, Elastic Beanstalk admite la descarga e instalación de paquetes MSI. (Los entornos Linux admiten administradores de paquetes adicionales. Para obtener más información, consulte [Paquetes](customize-containers-ec2.md#linux-packages) en la página *Personalización de software en servidores Linux*.)

Puede hacer referencia a cualquier ubicación externa, como un objeto de Amazon Simple Storage Service (Amazon S3), siempre que la URL sea accesible públicamente.

Si especifica varios paquetes `msi:`, su orden de instalación no está garantizado.

### Sintaxis
<a name="windows-packages-syntax"></a>

Elija un nombre como el nombre del paquete y una URL a una ubicación de archivo MSI como el valor. Puede especificar varios paquetes en la clave `msi:`.

```
packages: 
  msi:
    package name: package url
    ...
```

### Ejemplos
<a name="windows-packages-snippet"></a>

El siguiente ejemplo especifica una URL para descargar **mysql** de `https://dev.mysql.com/`.

```
packages:
  msi:
    mysql: https://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-8.0.11.msi
```

En el siguiente ejemplo se especifica un objeto de Amazon S3 como la ubicación del archivo MSI.

```
packages:
  msi:
    mymsi: https://amzn-s3-demo-bucket.s3.amazonaws.com/myobject.msi
```

## Orígenes
<a name="windows-sources"></a>

Utilice la clave `sources` para descargar un archivo de almacenamiento de una URL pública y extraerlo en un directorio de destino de la instancia de EC2.

### Sintaxis
<a name="windows-sources-syntax"></a>

```
sources:  
  target directory: location of archive file
```

### Formatos admitidos
<a name="windows-sources-support"></a>

En entornos Windows, Elastic Beanstalk admite el formato.zip. (Los entornos Linux admiten formatos adicionales. Para obtener más información, consulte [Orígenes](customize-containers-ec2.md#linux-sources) en la página *Personalización de software en servidores Linux*.)

Puede hacer referencia a cualquier ubicación externa, como un objeto de Amazon Simple Storage Service (Amazon S3), siempre que la URL sea accesible públicamente.

### Ejemplo
<a name="windows-sources-example"></a>

En el siguiente ejemplo, se descarga un archivo .zip público de Amazon S3 y se desempaqueta en `c:/myproject/myapp`.

```
sources:  
  "c:/myproject/myapp": https://amzn-s3-demo-bucket.s3.amazonaws.com/myobject.zip
```

## Archivos
<a name="windows-files"></a>

Utilice la clave `files` para crear archivos en la instancia de EC2. El contenido puede estar insertado en el archivo de configuración o extraerse de una URL. Los archivos se escriben en el disco en orden lexicográfico. Para descargar archivos privados de Amazon S3 proporcione un perfil de instancia para su autorización.

### Sintaxis
<a name="windows-files-syntax"></a>

```
files:  
  "target file location on disk":
    source: URL
    authentication: authentication name:

  "target file location on disk":
    content: |
      this is my content
    encoding: encoding format
```

### Opciones
<a name="windows-files-options"></a>

`content`  
(Opcional) Cadena A. 

`source`  
(Opcional) La dirección URL desde la que se carga el archivo. Esta opción no se puede especificar con la clave de contenido.

`encoding`  
(Opcional) El formato de la codificación. Esta opción solo se utiliza para un valor de clave de contenido proporcionado. El valor predeterminado es `plain`.  
Valores válidos: `plain` \$1 `base64`

`authentication`  
(Opcional) Nombre de un[ método de autenticación de CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-authentication.html) que se utilizará. Puede añadir métodos de autenticación a los metadatos del grupo de escalado automático con la clave Resources.

### Ejemplos
<a name="windows-files-snippet"></a>

En el siguiente ejemplo se muestran las dos formas de proporcionar el contenido del archivo: desde una URL o en línea en el archivo de configuración.

```
files:
  "c:\\targetdirectory\\targetfile.txt":
    source: http://foo.bar/myfile
 
  "c:/targetdirectory/targetfile.txt":
    content: |
      # this is my file
      # with content
```

**nota**  
Si utiliza una barra diagonal inversa (\$1) en la ruta del archivo, debe anteponer otra barra diagonal inversa (el carácter de escape), tal y como se muestra en el ejemplo anterior.

En el siguiente ejemplo, se utiliza la clave Resources para añadir un método de autenticación denominado S3Auth que se emplea para descargar un archivo privado en Amazon S3:

```
files:
  "c:\\targetdirectory\\targetfile.zip":
    source: https://elasticbeanstalk-us-east-2-123456789012.s3.amazonaws.com/prefix/myfile.zip
    authentication: S3Auth

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          s: ["amzn-s3-demo-bucket"]
          roleName:
            "Fn::GetOptionSetting":
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
```

## Comandos
<a name="windows-commands"></a>

Utilice la clave `commands` para ejecutar comandos en la instancia de EC2. Los comandos se procesan en orden alfabético por nombre, y se ejecutan antes de que se configure la aplicación y el servidor web y se extraiga el archivo de versión de la aplicación.

Los comandos especificados se ejecutan como usuario administrador.

Para solucionar problemas con los comandos, puede encontrar su salida en los [registros de instancia](using-features.logging.md).

### Sintaxis
<a name="windows-commands-syntax"></a>

```
commands:
  command name: 
    command: command to run
```

### Opciones
<a name="windows-commands-options"></a>

`command`  
Una matriz o bien una cadena que especifica el comando que se va a ejecutar. Si utiliza una matriz, no es preciso que utilice el carácter de escape para los caracteres de espacio ni que incluya los parámetros de los comandos entre comillas.

`cwd`  
(Opcional) El directorio de trabajo. De forma predeterminada, Elastic Beanstalk intenta encontrar la ubicación del directorio del proyecto. Si no la encuentra, utiliza `c:\Windows\System32` de forma predeterminada.

`env`  
(Opcional) Establece las variables de entorno del comando. Esta propiedad sobrescribe, en lugar de anexar, el entorno existente.

`ignoreErrors`  
(Opcional) Valor booleano que determina si otros comandos deben ejecutarse en caso de que se produzca un error (se devuelva un valor distinto de cero) en el comando incluido en la clave `command`. Establezca este valor en `true` si desea continuar ejecutando comandos aunque se produzca un error. Establézcalo en `false` si desea detener la ejecución de comandos en caso de que se produzca un error. El valor predeterminado es `false`.

`test`  
(Opcional) Un comando que debe devolver el valor `true` (código de salida 0) para que Elastic Beanstalk pueda procesar el comando incluido en la clave `command`.

`waitAfterCompletion`  
(Opcional) Segundos que se deben esperar a que se complete el comando antes de ejecutar el siguiente comando. El valor predeterminado es **60** segundos. También puede especificar **forever**.  
No se admiten reinicios del sistema durante la implementación. Si el sistema se reinicia como resultado de un comando, se producirá un error en la inicialización de la instancia, lo que provocará un error en la implementación.  
Como solución alternativa, puede usar esta [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config) para programar los reinicios una vez finalizada la implementación.

### Ejemplo
<a name="windows-commands-snippet"></a>

El siguiente ejemplo guarda el resultado del comando `set` en el archivo especificado. Si hay un comando posterior, Elastic Beanstalk ejecuta ese comando inmediatamente después de que se complete este comando. Si este comando requiere un reinicio, Elastic Beanstalk reinicia la instancia inmediatamente después de que se complete el comando.

```
commands:
  test: 
    command: set > c:\\myapp\\set.txt
    waitAfterCompletion: 0
```

## Services
<a name="windows-services"></a>

Utilice la clave `services` para definir qué servicios deben iniciarse o detenerse cuando se lance la instancia. La clave `services` también le permite especificar dependencias en orígenes, paquetes y archivos, de manera que si es necesario reiniciar debido a los archivos que se están instalado, Elastic Beanstalk se encargará de reiniciar el servicio.

### Sintaxis
<a name="windows-services-syntax"></a>

```
services: 
  windows:
    name of service:
      files:
        - "file name"
      sources: 
        - "directory"	
      packages: 
        name of package manager:
            "package name[: version]"
      commands: 
        - "name of command"
```

### Opciones
<a name="windows-services-options"></a>

`ensureRunning`  
(Opcional) Establézcalo en `true` para asegurarse de que el servicio se está ejecutando una vez que Elastic Beanstalk finalice.  
Establézcalo en `false` para asegurarse de que el servicio no se está ejecutando una vez que Elastic Beanstalk finalice.  
Omita esta clave para no realizar ningún cambio en el estado del servicio.

`enabled`  
(Opcional) Establézcalo en `true` para garantizar que el servicio se iniciará automáticamente al arrancar.  
Establézcalo en `false` para garantizar que el servicio no se iniciará automáticamente al arrancar.  
Omita esta clave para no realizar ningún cambio a esta propiedad.

`files`  
Una lista de archivos. Si Elastic Beanstalk cambia uno directamente a través del bloque de archivos, el servicio se reinicia.

`sources`  
Una lista de directorios. Si Elastic Beanstalk expande un archivo en uno de estos directorios, el servicio se reinicia.

`packages`  
Una asignación del administrador de paquetes a una lista de nombres de paquetes. Si Elastic Beanstalk instala o actualiza uno de estos paquetes, el servicio se reinicia.

`commands`  
Una lista de nombres de comandos. Si Elastic Beanstalk ejecuta el comando especificado, se reinicia el servicio.

### Ejemplo
<a name="windows-services-snippet"></a>

```
services: 
  windows:
    myservice:
      enabled: true
      ensureRunning: true
```

## Comandos de contenedor
<a name="windows-container-commands"></a>

Utilice la clave `container_commands` para ejecutar comandos que afecten al código fuente de la aplicación. Estos comandos se ejecutan una vez configurada la aplicación y el servidor web, y una vez que se ha extraído el archivo de versiones de la aplicación, pero antes de que se implemente la versión de la aplicación. Los comandos que no son de contenedor y otras operaciones de personalización se realizan antes de que se extraiga el código fuente de la aplicación.

Los comandos de contenedor se ejecutan desde el directorio de ensayo, del que se extrae el código fuente antes de implementarse en el servidor de la aplicación. Todos los cambios que realice en el código fuente en el directorio de ensayo con un comando de contenedor se incluirán cuando se implemente el código fuente en su ubicación final.

Para solucionar problemas con los comandos de contenedor, puede encontrar su salida en los [registros de instancia](using-features.logging.md).

Utilice la opción `leader_only` para ejecutar el comando en una sola instancia o configure un objeto `test` para que el comando se ejecute exclusivamente cuando un comando “test” se evalúe como `true`. Los comandos de contenedor “leader-only” solo se ejecutan durante la creación del entorno y las implementaciones, mientras que otros comandos y operaciones de personalización del servidor se ejecutan cada vez que se aprovisiona o se actualiza una instancia. Los comandos de contenedor “leader-only” no se ejecutan debido a los cambios en la configuración de lanzamiento, como un cambio en el ID de AMI o tipo de instancia.

### Sintaxis
<a name="windows-container-commands-syntax"></a>

```
container_commands:
  name of container_command:
    command: command to run
```

### Opciones
<a name="windows-container-commands-options"></a>

`command`  
Cadena o matriz de cadenas que se va a ejecutar.

`env`  
(Opcional) Establezca las variables de entorno antes de ejecutar el comando para invalidar cualquier valor existente.

`cwd`  
(Opcional) El directorio de trabajo. De forma predeterminada, este es el directorio de ensayo de la aplicación sin descomprimir.

`leader_only`  
(Opcional) Ejecute solo el comando en una sola instancia seleccionada por Elastic Beanstalk. Los comandos de contenedor “leader-only” se ejecutan antes que otros comandos de contenedor. Un comando puede ser “leader-only” o tener un objeto `test`, pero no ambas cosas (`leader_only` tiene prioridad).

`test`  
(Opcional) Ejecute un comando de prueba que deba devolver `true` para poder ejecutar el comando de contenedor. Un comando puede ser “leader-only” o tener un objeto `test`, pero no ambas cosas (`leader_only` tiene prioridad).

`ignoreErrors`  
(Opcional) No produce un error en las implementaciones si el comando de contenedor devuelve un valor distinto de 0 (correcto). Establézcalo en `true` para habilitarlo.

`waitAfterCompletion`  
(Opcional) Segundos que se deben esperar a que se complete el comando antes de ejecutar el siguiente comando. El valor predeterminado es **60** segundos. También puede especificar **forever**.  
No se admiten reinicios del sistema durante la implementación. Si el sistema se reinicia como resultado de un comando, se producirá un error en la inicialización de la instancia, lo que provocará un error en la implementación.  
Como solución alternativa, puede usar esta [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config) para programar los reinicios una vez finalizada la implementación.

### Ejemplo
<a name="windows-container-commands-snippet"></a>

El siguiente ejemplo guarda el resultado del comando `set` en el archivo especificado. Elastic Beanstalk ejecuta el comando en una sola instancia y reinicia la instancia inmediatamente después de que se complete el comando.

```
container_commands:
  foo:
    command: set > c:\\myapp\\set.txt
    leader_only: true
    waitAfterCompletion: 0
```