

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.

# Implementaciones personalizadas de aplicaciones de ASP.NET Core en Elastic Beanstalk
<a name="deployment-beanstalk-custom-netcore"></a>

En este tema se describe cómo funciona la implementación y lo que se puede hacer para personalizar las implementaciones al crear aplicaciones de ASP.NET Core con Elastic Beanstalk y el Kit de herramientas para Visual Studio.

Después de completar el asistente de implementación en el Kit de herramientas para Visual Studio, el kit de herramientas empaqueta la aplicación y la envía a Elastic Beanstalk. El primer paso para crear el paquete de la aplicación es utilizar la nueva interfaz de línea de comandos (CLI) de dotnet para preparar la aplicación para la publicación mediante el uso del comando **publish**. El marco de trabajo y la configuración se pasan de la configuración del asistente al comando **publish**. Por tanto, si ha seleccionado **Release (Versión)** para `configuration` y **netcoreapp1.0** para `framework`, el Toolkit ejecutará el siguiente comando:

 `dotnet publish --configuration Release --framework netcoreapp1.0` 

Cuando el comando **publish (publicar)** termine, el Toolkit escribirá el manifiesto de la nueva implementación en la carpeta de publicación. El manifiesto de la implementación es un archivo de JSON llamado **aws-windows-deployment-manifest.json**, que el contenedor de Windows de Elastic Beanstalk (versión 1.2 o posterior) lee para determinar cómo se debe implementar la aplicación. Por ejemplo, en el caso de una aplicación de ASP.NET Core que desea implementar en la raíz de IIS, el Toolkit genera un archivo de manifiesto que tiene este aspecto:

```
{
  "manifestVersion": 1,
  "deployments": {

    "aspNetCoreWeb": [
      {
        "name": "app",
        "parameters": {
          "appBundle": ".",
          "iisPath": "/",
          "iisWebSite": "Default Web Site"
        }
      }
    ]
  }
}
```

La propiedad `appBundle` indica dónde tienen relación los bits de la aplicación con el archivo de manifiesto. Esta propiedad puede apuntar a un directorio o a un archivo ZIP. Las propiedades `iisPath` e `iisWebSite` indican en qué ubicación de IIS se debe alojar la aplicación.

## Personalización del manifiesto
<a name="tkv-deploy-beanstalk-custom-netcore-manifest"></a>

El Toolkit solo escribe el archivo de manifiesto si no existe aún en la carpeta de publicación. Si el archivo existe, el Toolkit actualiza las propiedades `appBundle`, `iisPath` e `iisWebSite` en la primera aplicación que aparece en la sección `aspNetCoreWeb` del manifiesto. Esto le permite añadir **aws-windows-deployment-manifest.json** a su proyecto y personalizar el manifiesto. Si desea hacerlo para una aplicación web de ASP.NET Core en Visual Studio, añada un nuevo archivo JSON a la raíz del proyecto y llámelo **aws-windows-deployment-manifest.json**.

El manifiesto debe tener el nombre **aws-windows-deployment-manifest.json** y debe estar en la raíz del proyecto. El contenedor de Elastic Beanstalk buscará el manifiesto en la raíz y, si lo encuentra, invocará las herramientas de implementación. Si el archivo no existe, el contenedor de Elastic Beanstalk vuelve a las antiguas herramientas de implementación, que suponen que el archivo es un archivo **msdeploy**.

Para garantizar que el comando `publish` de la interfaz de línea de comandos (CLI) de dotnet incluye el manifiesto, actualice el archivo `project.json` para incluir el archivo de manifiesto en la sección `include` de `publishOptions`.

```
{
   "publishOptions": {
     "include": [
       "wwwroot",
       "Views",
       "Areas/**/Views",
       "appsettings.json",
       "web.config",
       "aws-windows-deployment-manifest.json"
     ]
   }
 }
```

Ahora que ha declarado el manifiesto para que se incluya en el paquete de la aplicación, puede seguir configurando la forma en que desea implementar la aplicación. Puede personalizar la implementación más de lo que admite el asistente de implementación. AWS ha definido un esquema JSON para el archivo **aws-windows-deployment-manifest.json** y, al instalar el Kit de herramientas para Visual Studio, la configuración registra la URL del esquema.

Cuando abra `windows-deployment-manifest.json`, verá la URL del esquema seleccionada en el cuadro desplegable Schema. Puede ir a la URL para obtener una descripción completa de lo que se puede definir en el manifiesto. Con el esquema seleccionado, Visual Studio proporcionará IntelliSense mientras se edita el manifiesto.

Una posible personalización consiste en configurar el grupo de aplicaciones de IIS bajo el que se ejecutará la aplicación. El siguiente ejemplo muestra cómo puede definir un grupo de aplicaciones de IIS ("customPool") que recicla el proceso cada 60 minutos y lo asigna a la aplicación utilizando `"appPool": "customPool"`.

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "appPools": [
      {
        "name": "customPool",
        "recycling": {
          "regularTimeInterval": 60
        }
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "app",
        "parameters": {
          "appPool": "customPool"
        }
      }
    ]
  }
}
```

Además, el manifiesto puede declarar scripts de Windows PowerShell para ejecutarlos antes y después de las acciones de instalación, reinicio y desinstalación. Por ejemplo, el siguiente manifiesto ejecuta el script de Windows PowerShell `PostInstallSetup.ps1` para realizar más trabajo de configuración una vez que la aplicación de ASP.NET Core se ha implementado en IIS. Cuando añada scripts de este tipo, asegúrese de que se añaden a la sección include de publishOptions en el archivo `project.json`, como hizo con el archivo `aws-windows-deployment-manifest.json`. Si no, los scripts no se incluirán como parte del comando **publish (publicar)** de la interfaz de línea de comandos (CLI) de dotnet.

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "app",
        "scripts": {
          "postInstall": {
            "file": "SetupScripts/PostInstallSetup.ps1"
          }
        }
      }
    ]
  }
}
```

## ¿Qué ocurre con los archivos .ebextensions?
<a name="tkv-deploy-beanstalk-custom-netcore-ebextensions"></a>

Los archivos de configuración **.ebextensions** de Elastic Beanstalk son compatibles con los demás contenedores de Elastic Beanstalk. Para incluir .ebextensions en una aplicación de ASP.NET Core, añada el directorio `.ebextensions` en la sección `include` de `publishOptions` en el archivo `project.json`. Para obtener más información acerca de .ebextensions, consulte la [Elastic Beanstalk Developer Guide](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html).