

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.

# Referencia del esquema del manifiesto de implementación
<a name="dotnet-manifest-schema"></a>

El manifiesto de implementación es un archivo JSON que define cómo Elastic Beanstalk debe implementar y configurar las aplicaciones de Windows. En esta sección se proporciona una referencia completa de todas las propiedades y opciones de configuración compatibles en el esquema del manifiesto.

## Estructura del manifiesto
<a name="dotnet-manifest-schema-structure"></a>

El manifiesto de implementación sigue un esquema JSON específico con la siguiente estructura de nivel superior:

**Example Estructura básica del manifiesto**  

```
{
  "manifestVersion": 1,
  "skipIISReset": false,
  "iisConfig": {
    "websites": [...],
    "appPools": [...]
  },
  "deployments": {
    "msDeploy": [...],
    "aspNetCoreWeb": [...],
    "custom": [...]
  }
}
```

### Propiedades de nivel superior
<a name="dotnet-manifest-schema-top-level"></a>

`manifestVersion` (obligatorio)  
*Tipo*: Número  
*Valor predeterminado*: 1  
*Valores válidos: 1*  
Especifica la versión del esquema del manifiesto. Actualmente, solo se admite la versión 1.

`skipIISReset` (opcional)  
*Tipo*: Booleano  
*Valor predeterminado:* falso  
Controla si IIS se restablece durante las implementaciones de aplicaciones. Este indicador afecta a los tipos de implementación `msDeploy` y `aspNetCoreWeb`.  
*Comportamiento:*  
+ *No especificado o `false` (predeterminado):* los restablecimientos de IIS se realizan durante las operaciones de instalación, desinstalación y actualización. Este es el comportamiento tradicional.
+ *`true`:* los restablecimientos de IIS se omiten durante las operaciones de implementación.
*Beneficios:*  
+ *Menor tiempo de inactividad*: las aplicaciones experimentan interrupciones de servicio más breves durante las implementaciones.
+ *Implementaciones más rápidas*: elimina el tiempo necesario para que IIS se reinicie y reinicialice por completo.
Cuando se utiliza`skipIISReset`, la [RestartAppServer](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RestartAppServer.html)operación restablece el IIS independientemente de la configuración de este indicador.
*Ejemplo:*  

```
{
  "manifestVersion": 1,
  "skipIISReset": true,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "my-dotnet-core-app",
        "parameters": {
          "archive": "dotnet-core-app.zip",
          "iisPath": "/"
        }
      }
    ]
  }
}
```

`deployments` (obligatorio)  
*Tipo:* objeto  
Contiene las configuraciones de implementación de sus aplicaciones. Este objeto puede tipos de implementación `msDeploy`, `aspNetCoreWeb` y `custom`.

`iisConfig` (opcional)  
*Tipo:* objeto  
Define las opciones de configuración de IIS que se deben aplicar antes de implementar las aplicaciones. Admite la configuración de sitios web y grupos de aplicaciones.

## Configuraciones de IIS
<a name="dotnet-manifest-schema-iis-config"></a>

Esta sección de `iisConfig` le permite configurar los ajustes de IIS antes de implementar las aplicaciones. Esto incluye configurar grupos de aplicaciones con configuraciones específicas y configurar sitios web de IIS con enlaces personalizados.

### Sitios web de IIS
<a name="dotnet-manifest-schema-websites"></a>

Los sitios web de IIS le permiten configurar ajustes personalizados de sitios web, incluidas las rutas físicas y los enlaces de red, antes de implementar las aplicaciones.

**Consideraciones importantes para la creación de sitios web de IIS diferentes**  
*Orden de configuración de los sitios web:* los sitios web se configuran secuencialmente en el orden en que aparecen en la matriz de `websites`. La plataforma procesa la configuración de cada sitio web en secuencia, así que asegúrese de ordenarlos correctamente si tiene dependencias entre sitios web.
*Firewall y acceso a puertos:* solamente el puerto 80 se expone automáticamente a través de la configuración predeterminada del firewall de Windows de Elastic Beanstalk. Si configura los sitios web para que utilicen puertos no estándar, debe definir reglas de firewall personalizadas mediante extensiones electrónicas o scripts de implementación personalizados para permitir el acceso externo a estos puertos.

**Example Configuración de sitios web**  

```
{
  "iisConfig": {
    "websites": [
      {
        "name": "MyCustomSite",
        "physicalPath": "C:\inetpub\wwwroot\mysite",
        "bindings": [
          {
            "protocol": "http",
            "port": 8080,
            "hostName": "mysite.local"
          },
          {
            "protocol": "https",
            "port": 8443
          }
        ]
      }
    ]
  }
}
```Propiedades de sitios web

`name` (obligatorio)  
*Tipo:* cadena  
El nombre del sitio web de IIS. Este nombre se utiliza para identificar el sitio web en el Administrador de IIS y debe ser único en la configuración de IIS.

`physicalPath` (obligatorio)  
*Tipo:* cadena  
Ruta física en el servidor en el que se almacenan los archivos del sitio web. El proceso de trabajo de IIS debe poder acceder a esta ruta.

`bindings` (obligatorio)  
*Tipo*: Array  
*Elementos mínimos:* 1  
Conjunto de configuraciones de enlace que definen la forma en que el sitio web responde a las solicitudes de la red. Cada enlace especifica un protocolo, un puerto y un nombre de host opcional.

#### Enlaces de sitios web
<a name="dotnet-manifest-schema-bindings"></a>

Los enlaces de sitios web definen los puntos de conexión de la red en los que su sitio web de IIS escuchará las solicitudes entrantes.

`protocol` (obligatorio)  
*Tipo:* cadena  
*Valores válidos:* «http», «https»  
El protocolo utilizado para el enlace.

`port` (obligatorio)  
*Tipo*: entero  
*Rango válido: 1-65535*  
El número de puerto en el que el sitio web escuchará las solicitudes.

`hostName` (opcional)  
*Tipo:* cadena  
El nombre de host (nombre de dominio) del enlace.

### Grupos de aplicaciones
<a name="dotnet-manifest-schema-app-pools"></a>

Los grupos de aplicaciones proporcionan aislamiento entre las aplicaciones y permiten configurar los ajustes de tiempo de ejecución para grupos de aplicaciones.

**Example Configuración de grupos de aplicaciones**  

```
{
  "iisConfig": {
    "appPools": [
      {
        "name": "MyAppPool",
        "enable32Bit": false,
        "managedPipelineMode": "Integrated",
        "managedRuntimeVersion": "v4.0",
        "queueLength": 1000,
        "cpu": {
          "limitPercentage": 80,
          "limitAction": "Throttle",
          "limitMonitoringInterval": 5
        },
        "recycling": {
          "regularTimeInterval": 1440,
          "requestLimit": 10000,
          "memory": 1048576,
          "privateMemory": 524288
        }
      }
    ]
  }
}
```Propiedades de grupos de aplicaciones

`name` (obligatorio)  
*Tipo:* cadena  
Nombre del grupo de aplicaciones. Este nombre se usa para hacer referencia al grupo en las configuraciones de implementación.

`enable32Bit` (opcional)  
*Tipo*: Booleano  
Permite que una aplicación de 32 bits se ejecute en una versión de 64 bits de Windows. Se configura en `true` para aplicaciones heredadas que requieren compatibilidad de 32 bits.

`managedPipelineMode` (opcional)  
*Tipo:* cadena  
*Valores válidos:* «Integrado», «Clásico»  
Especifica el modo de procesamiento de solicitudes para el grupo de aplicaciones.

`managedRuntimeVersion` (opcional)  
*Tipo:* cadena  
*Valores válidos:* «Sin código administrado», «v2.0», «v4.0»  
Especifica la versión de .NET Framework a la que apunta la aplicación.

`queueLength` (opcional)  
*Tipo*: entero  
Número máximo de solicitudes que HTTP.sys pone en cola para el grupo de aplicaciones antes de rechazar solicitudes adicionales.

#### Configuración de la CPU
<a name="dotnet-manifest-schema-cpu-config"></a>

El objeto `cpu` configura los límites de uso de la CPU y el monitoreo del grupo de aplicaciones.

`limitPercentage` (opcional)  
*Tipo*: Número  
Porcentaje máximo de tiempo de CPU que pueden consumir los procesos de trabajo del grupo de aplicaciones.

`limitAction` (opcional)  
*Tipo:* cadena  
*Valores válidos:* "NoAction«, «KillW3WP», «Throttle», "» ThrottleUnderLoad  
Acción que se debe realizar cuando se alcanza el límite de la CPU.

`limitMonitoringInterval` (opcional)  
*Tipo*: Número  
Período de restablecimiento (en minutos) de los límites de monitoreo y limitación de la CPU.

#### Configuración de reciclaje
<a name="dotnet-manifest-schema-recycling-config"></a>

El objeto `recycling` configura cuándo y cómo se reciclan los procesos de trabajo del grupo de aplicaciones.

`regularTimeInterval` (opcional)  
*Tipo*: entero  
Intervalo de tiempo (en minutos) tras el cual se recicla el grupo de aplicaciones. Configúrelo en 0 para deshabilitar el reciclaje en función del tiempo.

`requestLimit` (opcional)  
*Tipo*: entero  
Número máximo de solicitudes que el grupo de aplicaciones procesa antes del reciclaje.

`memory` (opcional)  
*Tipo*: entero  
Cantidad de memoria virtual (en kilobytes) que activa el reciclaje de los procesos de trabajo.

`privateMemory` (opcional)  
*Tipo*: entero  
Cantidad de memoria privada (en kilobytes) que activa el reciclaje de los procesos de trabajo.

## Tipos de implementación
<a name="dotnet-manifest-schema-deployments"></a>

El objeto `deployments` contiene matrices de configuraciones de implementación para distintos tipos de aplicaciones. Cada tipo de implementación tiene propiedades y casos de uso específicos.

### MSDeploy despliegues
<a name="dotnet-manifest-schema-msdeploy"></a>

MSDeploy las implementaciones se utilizan para las aplicaciones tradicionales de.NET Framework que se pueden implementar mediante Web Deploy ()MSDeploy.

**Example MSDeploy configuración de despliegue**  

```
{
  "deployments": {
    "msDeploy": [
      {
        "name": "WebApp",
        "description": "Main web application",
        "parameters": {
          "appBundle": "webapp.zip",
          "iisPath": "/",
          "appPool": "DefaultAppPool"
        }
      }
    ]
  }
}
```MSDeploy propiedades de despliegue

`name` (obligatorio)  
*Tipo:* cadena  
Nombre único de la implementación. Este nombre debe ser único en todas las implementaciones del manifiesto.

`description` (opcional)  
*Tipo:* cadena  
Descripción inteligible de la implementación.

`parameters` (obligatorio)  
*Tipo:* objeto  
Parámetros de configuración de la MSDeploy operación.

`scripts` (opcional)  
*Tipo:* objeto  
PowerShell scripts que se ejecutarán en diversas etapas del ciclo de vida de la implementación.

#### MSDeploy parámetros
<a name="dotnet-manifest-schema-msdeploy-parameters"></a>

`appBundle` (obligatorio)  
*Tipo:* cadena  
Ruta al paquete de aplicaciones (archivo ZIP) en relación con el archivo de manifiesto. Este paquete contiene los archivos de la aplicación que se implementarán.

`iisWebSite` (opcional)  
*Tipo:* cadena  
*Predeterminado:* «Sitio web predeterminado»  
El sitio web de IIS en el que se implementará la aplicación. De forma predeterminada, las aplicaciones se implementan en el «sitio web predeterminado». Si lo desea, puede especificar un nombre de sitio web diferente, como uno configurado en la sección `iisConfig.websites`.

`iisPath` (opcional)  
*Tipo:* cadena  
*Predeterminado:* «/»  
Ruta del directorio virtual en IIS donde se implementará la aplicación. Utilice «/» para la ruta raíz o «/api» para un subdirectorio.

`appPool` (opcional)  
*Tipo:* cadena  
Nombre del grupo de aplicaciones para ejecutar esta aplicación.

### Implementaciones de ASP.NET Core
<a name="dotnet-manifest-schema-aspnetcore"></a>

Las implementaciones de ASP.NET Core están diseñadas específicamente para aplicaciones.NET Core y .NET 5\+.

**Example Configuración de la implementación de ASP.NET Core**  

```
{
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "CoreAPI",
        "description": "ASP.NET Core Web API",
        "parameters": {
          "appBundle": "coreapi.zip",
          "iisPath": "/api",
          "appPool": "CoreAppPool"
        }
      }
    ]
  }
}
```

Las implementaciones de ASP.NET Core utilizan la misma estructura de propiedades que MSDeploy las implementaciones, con la diferencia clave en el entorno de ejecución y el modelo de alojamiento que se utilizan para la aplicación.Parámetros de la implementación de ASP.NET Core

`appBundle` (obligatorio)  
*Tipo:* cadena  
Ruta al paquete de aplicaciones en relación con el archivo de manifiesto. Puede ser un archivo ZIP o una ruta de directorio que contenga la aplicación ASP.NET Core publicada.

`iisWebSite` (opcional)  
*Tipo:* cadena  
*Predeterminado:* «Sitio web predeterminado»  
El sitio web de IIS en el que se implementará la aplicación ASP.NET Core. De forma predeterminada, las aplicaciones se implementan en el «sitio web predeterminado». Si lo desea, puede especificar un nombre de sitio web diferente, como uno configurado en la sección `iisConfig.websites`.

`iisPath` (opcional)  
*Tipo:* cadena  
*Predeterminado:* «/»  
Ruta del directorio virtual en IIS para la aplicación ASP.NET Core.

`appPool` (opcional)  
*Tipo:* cadena  
Grupo de aplicaciones para la aplicación ASP.NET Core. El grupo se configurará adecuadamente para el alojamiento de ASP.NET Core.

### implementaciones personalizadas
<a name="dotnet-manifest-schema-custom"></a>

Las implementaciones personalizadas proporcionan un control total sobre el proceso de implementación mediante PowerShell scripts. Este tipo de implementación es útil para escenarios complejos que requieren una lógica personalizada de instalación, configuración o implementación.

**Example Configuración de implementación personalizada**  

```
{
  "deployments": {
    "custom": [
      {
        "name": "CustomService",
        "description": "Custom Windows service deployment",
        "architecture": 32,
        "scripts": {
          "install": {
            "file": "install-service.ps1"
          },
          "restart": {
            "file": "restart-service.ps1"
          },
          "uninstall": {
            "file": "uninstall-service.ps1",
            "ignoreErrors": true
          }
        }
      }
    ]
  }
}
```Propiedades de implementación personalizada

`name` (obligatorio)  
*Tipo:* cadena  
Nombre único de la implementación personalizada.

`description` (opcional)  
*Tipo:* cadena  
Descripción de la implementación personalizada.

`architecture` (opcional)  
*Tipo*: entero  
*Predeterminado: 32*  
*Valores válidos:* 32, 64  
La especificación de arquitectura para el modo de ejecución de los scripts de PowerShell

`scripts` (obligatorio)  
*Tipo:* objeto  
PowerShell scripts que definen el comportamiento de despliegue. Las implementaciones personalizadas admiten tipos de scripts adicionales en comparación con otros tipos de implementación.

## Scripts de implementación
<a name="dotnet-manifest-schema-scripts"></a>

Los scripts de despliegue son PowerShell scripts que se ejecutan en momentos específicos del ciclo de vida del despliegue. Los distintos tipos de implementación admiten distintos conjuntos de eventos de script.

### Eventos de script
<a name="dotnet-manifest-schema-script-events"></a>

Los siguientes eventos de script están disponibles en función del tipo de implementación:Scripts de despliegue estándar (MSDeploy y aspNetCore Web)

`preInstall`  
Se ejecuta antes de instalar o actualizar la aplicación.

`postInstall`  
Se ejecuta después de instalar o actualizar la aplicación.

`preRestart`  
Se ejecuta antes de reiniciar la aplicación.

`postRestart`  
Se ejecuta después de reiniciar la aplicación.

`preUninstall`  
Se ejecuta antes de desinstalar la aplicación.

`postUninstall`  
Se ejecuta después de desinstalar la aplicación.Scripts de implementación personalizados (solamente implementaciones personalizadas)

`install`  
Script de instalación principal para implementaciones personalizadas. Este script se encarga de instalar la aplicación o el servicio.

`restart`  
Script para reiniciar la aplicación o el servicio. Se llama cuando se reinicia el entorno.

`uninstall`  
Script para desinstalar la aplicación o el servicio. Se llama durante la finalización del entorno o la eliminación de la aplicación.

### Propiedades de script
<a name="dotnet-manifest-schema-script-properties"></a>

Cada script se define como un objeto con las siguientes propiedades:

`file` (obligatorio)  
*Tipo:* cadena  
Ruta al archivo de PowerShell script en relación con el archivo de manifiesto. El script debe tener una extensión `.ps1`.

`ignoreErrors` (opcional)  
*Tipo*: Booleano  
*Valor predeterminado:* falso  
Si se establece en `true`, la implementación continúa aunque el script falle. Utilícelo para scripts u operaciones de limpieza que no sean críticos.

**Example Ejemplo de configuración de scripts**  

```
{
  "scripts": {
    "preInstall": {
      "file": "backup-config.ps1",
      "ignoreErrors": true
    },
    "postInstall": {
      "file": "configure-app.ps1"
    }
  }
}
```