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
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
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?
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.