Personalización de software en servidores Windows - AWS Elastic Beanstalk

Personalización de software en servidores Windows

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.

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.

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.

Vigile los eventos 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 agregará un evento de advertencia al registro de eventos.

Paquetes

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

En los entornos Windows, Elastic Beanstalk admite la descarga y la instalación de paquetes MSI. (Los entornos Linux admiten administradores de paquetes adicionales. Para obtener detalles, consulte Paquetes en la página Personalización del 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 esté accesible públicamente.

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

Sintaxis

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

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://mybucket.s3.amazonaws.com/myobject.msi

Orígenes

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

Sintaxis

sources: target directory: location of archive file

Formatos admitidos

En entornos Windows, Elastic Beanstalk admite el formato .zip. (Los entornos Linux admiten formatos adicionales. Para obtener detalles, consulte Orígenes en la página Personalización del 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 esté accesible públicamente.

Ejemplo

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

sources: "c:/myproject/myapp": https://mybucket.s3.amazonaws.com/myobject.zip

Archivos

Utilice la clave files para crear archivos en la instancia 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

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

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 | base64

authentication

(Opcional) el nombre del método de autenticación de AWS CloudFormation que se va a utilizar. Puede agregar métodos de autenticación a los metadatos del grupo de Auto Scaling con la clave Resources.

Ejemplos

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 (\) 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 agregar un método de autenticación denominado S3Auth que se emplea para descargar un archivo privado en el bucket de 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" buckets: ["elasticbeanstalk-us-east-2-123456789012"] roleName: "Fn::GetOptionSetting": Namespace: "aws:autoscaling:launchconfiguration" OptionName: "IamInstanceProfile" DefaultValue: "aws-elasticbeanstalk-ec2-role"

Comandos

Utilice la clave commands para ejecutar comandos en la instancia 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.

Sintaxis

commands: command name: command: command to run

Opciones

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 buscar la ubicación del directorio de su 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. Si el sistema debe reiniciarse después de que se complete el comando, se reinicia después del número especificado de segundos. Si el sistema se reinicia como resultado de un comando, Elastic Beanstalk restablecerá el sistema al punto después del comando del archivo de configuración. El valor predeterminado es 60 segundos. También puede especificar forever, pero el sistema debe reiniciarse para poder ejecutar otro comando.

Ejemplo

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

Servicios

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

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

Opciones

ensureRunning

(Opcional) Establézcalo en true para garantizar que el servicio se ejecuta una vez que finaliza Elastic Beanstalk.

Establézcalo en false para garantizar que el servicio no se ejecuta una vez que finaliza Elastic Beanstalk.

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, el servicio se reinicia.

Ejemplo

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

Comandos de contenedor

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.

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

container_commands: name of container_command: command: command to run

Opciones

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. Si el sistema debe reiniciarse después de que se complete el comando, se reinicia después del número especificado de segundos. Si el sistema se reinicia como resultado de un comando, Elastic Beanstalk restablecerá el sistema al punto después del comando del archivo de configuración. El valor predeterminado es 60 segundos. También puede especificar forever, pero el sistema debe reiniciarse para poder ejecutar otro comando.

Ejemplo

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