Gema en la nube Compute Farm: Tutorial - Guía del usuario de Lumberyard

Gema en la nube Compute Farm: Tutorial

Este tutorial es una guía paso a paso de la gema en la nube Compute Farm. En este tutorial, se utiliza la implementación predeterminada de ordenación de listas de palabras que se incluye con la gema en la nube.

Requisitos previos

Este tutorial se basa en los siguientes supuestos:

  • Ha habilitado Cloud Gem Compute Farm (Gema en la nube Compute Farm) en Project Configurator para su proyecto de Lumberyard.

  • Ha utilizado el administrador de recursos de Cloud Canvas o la herramienta de línea de comandos lmbr_aws para crear lo siguiente:

    • Una pila de proyecto para su proyecto.

    • Una implementación para el proyecto.

  • Tiene una instalación de Python 3.6 o posterior. Lumberyard Beta 1.24 y versiones posteriores incluyen un intérprete de Python 3 ubicado en lumberyard_version/dev/Tools/Python/3.7.5/host_platform. Si utiliza el intérprete incluido con Lumberyard, puede que tenga que instalar el administrador de paquetes pip.

  • Tiene instalado boto3. Puede utilizar el siguiente comando para instalar boto3 en la mayoría de las distribuciones desde el directorio python_installation\Scripts:

    pip install boto3.

  • Abra Cloud Gem Portal. En Lumberyard Editor, elija AWS, Open Cloud Gem Portal (Abrir Cloud Gem Portal).

Si no cumple los requisitos previos, siga los pasos que se indican en Habilitación de gemas para agregar Cloud Gem Compute Farm (Gema en la nube Compute Farm) a su proyecto. Tenga en cuenta que el proyecto CloudGemSamples no habilita Cloud Gem Compute Farm de forma predeterminada. Para obtener más información sobre la creación de una pila de proyecto y una pila de implementación, consulte Tutorial: Introducción a Cloud Canvas.

Algunos de los scripts de este tutorial tienen parámetros que necesitan información de configuración de su instalación de la gema en la nube Compute Farm. Puede recopilar la mayor parte de esta información desde Consola de administración de AWS.

Para recopilar información de configuración para los parámetros de scripts

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. En la página Stacks (Pilas) de CloudFormation, localice el nombre de pila de su grupo de recursos de Compute Farm. El nombre de la pila está en el siguiente formato:

    project_name-deployment_name-CloudGemComputeFarm-random_number

    Por ejemplo, el siguiente nombre de pila corresponde a un proyecto denominado cgsamples y una implementación de proyecto denominada testdeployment.

    cgsamples-testdeployment-CloudGemComputeFarm-1R4M5M1YH98Z9
  3. Haga clic en el nombre de pila para abrir la página de detalles de la pila.

  4. En la página Stack Detail (Detalles de la pila), expanda la sección Resources (Recursos).

  5. En la sección Resources (Recursos), copie los valores de Physical ID (ID físico) para los siguientes elementos en la columna Logical ID (ID lógico):

    • InstanceRole

    • LogDB

    • Flujo de trabajo

    • computefarm

Para crear una AMI de Windows con su software y las herramientas preinstaladas en él, utilice el script ami_builder del directorio de la gema en la nube Compute Farm. Esto funciona de la siguiente forma:

  • El script carga cualquier software de terceros que haya indicado en su configuración como necesario para un bucket de Amazon S3.

  • El script lanza una nueva instancia Amazon EC2 que ejecuta una AMI base de Windows Server.

  • La instancia Amazon EC2 ejecuta un conjunto de comandos que proporciona el script para descargar y configurar su software y, a continuación, se cierra.

  • Cuando la instancia de Amazon EC2 se cierra, el script se reanuda y solicita la creación de una AMI del almacenamiento asociado en la instancia.

  • Una vez completada la AMI, el script termina la instancia de Amazon EC2 y limpia su almacenamiento de Amazon S3.

El script de compilación utiliza un archivo de configuración para determinar el contenido de la AMI. El script puede copiar y cambiar el nombre de archivos de su equipo local, así como incluir comandos normales y de PowerShell para que se ejecuten en la instancia de Windows a fin de realizar tareas como instalar módulos personalizados de Python o mover archivos descargados. La AMI puede utilizarse para crear tantas instancias Amazon EC2 como sea necesario para dividir y vencer el problema de cálculo.

Para crear una Amazon Machine Image

  1. Cree una línea de comandos para el script lumberyard_version\dev\Gems\CloudGemComputeFarm\vN\Harness\ami_build\ami_build.py.

    Debe especificar los siguientes parámetros:

    • --ami: facilite un nombre para la AMI.

    • --role: utilice el valor que recopiló anteriormente para InstanceRole. Este es el rol de instancia de IAM que se creó como parte de su implementación.

    • --s3-bucket: utilice el valor que recopiló para computefarm. Se trata del nombre del bucket de S3 que se creó en la implementación de la gema.

    Los siguientes parámetros son opcionales:

    • --key-pair-name: proporcione el nombre de un par de claves para la depuración a través de RDP. Puede utilizar un par de claves para iniciar sesión en sus instancias Amazon EC2 a través de RDP a fin de ver sus registros y depurarlos mientras se ejecutan. Este parámetro es opcional, pero muy recomendable.

      Para obtener más información, consulte Pares de claves de Amazon EC2 e instancias de Windows y Conexión con la instancia de Windows en la Guía del usuario de Amazon EC2 para instancias de Windows.

    • --subnet-id, --security-group-id: proporcione estos valores para evitar la creación automática cada vez que se ejecute este script.

    • --ami-base: en función de la región de AWS que haya seleccionado, es posible que tenga que especificar un ID para la AMI base que utilizará.

      Para obtener el ID de una AMI base

      1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

      2. Elija Launch Instance (Lanzar instancia) para mostrar la lista de las AMI estándar.

      3. En la lista de las AMI, busque la AMI que desea utilizar como base. (El ejemplo incluido con la gema en la nube Compute Farm se ejecuta en una base de Microsoft Windows Server 2016).

      4. Copie el ID de la AMI.

      5. Utilice el ID de copiado para el parámetro --ami-base en el script ami_build.py.

  2. Ejecute el script ami_build.py. A continuación, se muestra un ejemplo de ejecución del script y sus mensajes correspondientes.

    C:\LY\dev\Gems\CloudGemComputeFarm\v1\Harness\ami-build>ami-build.py --ami myami --role myproject-mydeployment-CloudGemComputeFarm-1R4-InstanceRole-ABCDEFGHIJKL --s3-bucket myproject-mydeployment-cloudgemcomputefarm-1r4-computefarm-abcdefghijkl Verifying the AMI name 'myami' is unused... Obtaining an instance profile for role 'myproject-mydeployment-CloudGemComputeFarm-1R4-InstanceRole-ABCDEFGHIJKL' Zipping and uploading C:\LY\dev\Gems\CloudGemComputeFarm\v1\Harness... Creating and configuring Amazon EC2 instance... Waiting for instance i-abcdefg1234567890 to initialize, configure, and shut down. This will take some time... Instance i-abcdefg1234567890 is now pending. Instance i-abcdefg1234567890 is now running. Instance i-abcdefg1234567890 is now stopping. Instance i-abcdefg1234567890 is now stopped. Building AMI from instance i-abcdefg1234567890... Waiting for AMI ami-64abcdef to become available... AMI ami-64abcdef is now pending. AMI ami-64abcdef is now available. AMI ami-64abcdef successfully generated! Beginning clean up. Terminating instance {}... Deleting temporary files from S3... Done!

La gema en la nube Compute Farm incluye una lista de palabras comprimidas que está ordenada. En este paso, mezclará la lista de palabras para crear un archivo que la granja de computación procesará. La tarea de la granja de computación consistirá en volver a ordenar la lista.

Para crear una lista de palabras desordenadas

  • En el directorio lumberyard_version\dev\Gems\CloudGemComputeFarm\vN\Harness, ejecute shuffle_words.py para crear el archivo shuffled_words.zip a partir de words.zip.

    nota

    Este script requiere Python 3.6 o posterior.

En este paso, cargará en AWS la lista de palabras desordenadas como preparación para su procesamiento.

Para cargar los datos para procesar

  1. En Cloud Gem Portal, haga clic en Compute Farm.

    
              Gema en la nube Compute Farm
  2. Haga clic en Build Configuration (Configuración de la compilación).

    
              Configuración de la compilación de la gema en la nube Compute Farm.
  3. En la pestaña Build Configuration (Configuración de la compilación), añada parámetros para la aplicación en la nube que está ejecutando.

    • (Opcional) En s3_dir, escriba un nombre de directorio que se va a utilizar en Amazon S3.

    • En s3_file, escriba el nombre del archivo .zip que desea procesar (en este ejemplo, shuffled_words). No incluya la extensión del nombre de archivo.

    • En max_level, escriba la profundidad máxima de división recursiva en la que desea dividir el problema. Para hacer pruebas, puede usar 2 o 3.

  4. Haga clic en Upload Data (Cargar datos).

    
              Haga clic en Upload Data (Cargar datos) en la gema en la nube Compute Farm.
  5. Busque el archivo shuffled_words.zip y selecciónelo. El nombre de clave se rellena automáticamente con el archivo que ha seleccionado. Si especificó un directorio para el campo s3_dir, añada ese directorio al principio de la ruta de destino en Destination path/key (Ruta/clave de destino).

    
              Archivo para cargar seleccionado en la gema en la nube Compute Farm.
  6. Haga clic en Upload (Cargar) para cargar el diccionario en Amazon S3.

Debido a que la implementación en una AMI y, posteriormente, en instancias de Amazon EC2, puede resultar costosa, se recomienda que pruebe la herramienta de manera local con credenciales de AWS suficientes. De este modo, se garantiza que su herramienta funcione correctamente antes de ejecutarla en una flota de instancias de Amazon EC2.

Para probar la herramienta localmente

  1. En Cloud Gem Portal, haga clic en la pestaña Overview (Información general).

  2. Haga clic en Run Workflow (Ejecutar flujo de trabajo).

    
              Haga clic en Run Workflow (Ejecutar flujo de trabajo) en la gema en la nube Compute Farm.
  3. (Opcional) En el cuadro de diálogo Run Workflow (Ejecutar flujo de trabajo), escriba un nombre único para la ejecución.

    
              Escriba un nombre opcional para la ejecución del flujo de trabajo en la gema en la nube Compute Farm.

    Si no especifica un nombre de ejecución (recomendado), se crea uno automáticamente en el formato exec-YYYY-MM-DDThh.mm.ss.

  4. Haga clic en Run (Ejecutar).

    En este momento, Cloud Gem Portal está listo para que pueda ejecutar sus tareas de decisor y proceso de trabajo.

    nota
    • Para ejecutar las tareas, utilizará el script main.py ubicado en el directorio lumberyard_version\dev\Gems\CloudGemComputeFarm\vN\Harness\.

    • Las versiones del "decisor" y el "proceso de trabajo" de main.py utilizan el mismo conjunto de parámetros, pero la versión del decisor también añade la opción -rd para marcarla como decisor.

  5. Cree la línea de comandos para los scripts con los siguientes parámetros:

    • --domain: en este parámetro, especifique el valor de Workflow (Flujo de trabajo) que copió anteriormente y añada el sufijo -domain. Este parámetro es el dominio Custom::SWF que se generó en su grupo de recursos.

    • role: especifique el valor que recopiló anteriormente para InstanceRole.

    nota

    Solo puede utilizar el parámetro --role si no está utilizando su cuenta raíz. Es mejor crear un usuario de IAM que tenga permisos para asumir su rol. Utilice el mismo rol para ejecutar las pruebas tanto localmente como con las instancias Amazon EC2.

    • --log-db: especifique el valor que recopiló anteriormente para LogDB. Este parámetro representa la tabla LogDB de DynamoDB que se generó en su grupo de recursos.

    • --config-bucket: utilice el valor que recopiló anteriormente para computefarm. Este parámetro representa el nombre del bucket de Amazon S3 de su grupo de recursos.

    • --task-list: es el TaskList.name para el flujo de trabajo que se especificó en el archivo lumberyard_version\dev\Gems\CloudGemComputeFarm\vN\AWS\resource-template.json. Para la prueba, puede utilizar el valor predeterminado de dev-task-list para este parámetro.

    • --div-task, --merge-task, --build-task: estos valores proceden también de la parte del archivo resource-template.json que especifica los ActivityTypes para su flujo de trabajo. Para la prueba, puede utilizar los valores predeterminados de task-divide, task-merge y task-build para estos parámetros.

  6. Abra una ventana de línea de comando y ejecute la tarea de decisor. Asegúrese de que incluye la opción -rd en la sintaxis.

  7. Abra una o varias ventanas de línea de comandos y ejecute las tareas de proceso de trabajo.

    nota
    • Debe ejecutar al menos una tarea de decisor y una tarea de proceso de trabajo.

    • Puede ejecutar varias tareas de proceso de trabajo para procesar tareas en paralelo, pero solo está activa una tarea de decisor al mismo tiempo.

    • Debe ejecutar cada tarea de decisor y de proceso de trabajo en una ventana diferente de línea de comando.

    • El control no vuelve automáticamente a cada símbolo del sistema. Cada ventana se suspende mientras se lleva a cabo la ejecución.

  8. En Cloud Gem Portal, confirme que la ejecución de prueba se ha completado.

    
              Confirme que la ejecución de prueba se ha completado en la gema en la nube Compute Farm.
  9. En cada ventana de comandos, pulse Ctrl+Inter para devolver cada ventana a su símbolo del sistema.

Ahora ya puede probar la herramienta con una flota de instancias Amazon EC2.

Para crear una flota de instancias Amazon EC2

  1. En Cloud Gem Portal, en la pestaña Fleet Management (Administración de flota), haga clic en New Fleet (Nueva flota).

    
              Haga clic en New Fleet (Nueva flota) en Cloud Gem Portal para la gema en la nube Computer Farm.
    nota

    Solo puede tener una flota a la vez. Si ya tiene una flota y crea una nueva, la flota existente se eliminará.

  2. En el cuadro de diálogo Create launch configuration (Crear configuración de lanzamiento), introduzca la información que se le pida.

    
              Cree la configuración de lanzamiento para una flota en la gema en la nube Compute Farm.
    • En Configuration name (Nombre de la configuración), escriba un nombre único.

    • En Amazon Machine Images (AMI) [Imágenes de máquina de Amazon (AMI)], elija el nombre de la AMI que creó anteriormente. Esta es la imagen de máquina que va a implementar en la flota.

    • (Opcional) En Key Pair (Par de claves), seleccione el valor que especificó para --key-pair-name cuando creó la AMI.

    • En Instance Type (Tipo de instancia), seleccione el tipo de instancia que se utilizará en la flota. Para obtener más información acerca de los tipos de instancia de Amazon EC2, consulte Tipos de instancias de Amazon EC2.

  3. Haga clic en Continue.

  4. En el cuadro de diálogo Create fleet (Crear flota), introduzca la información que se le pida.

    
              Introduzca un nombre de grupo para la flota en la gema en la nube Compute Farm.
    • En group name (nombre del grupo), escriba un nombre de grupo único para la flota. Se recomienda utilizar una variante del nombre de la configuración.

    • En instance number (número de instancias), introduzca el número de instancias que desea lanzar. Si no desea lanzar ninguna instancia todavía, especifique 0.

    • Seleccione la opción Auto-Terminate (Terminación automática) si desea que su flota se termine automáticamente (es decir, pase a tener 0 instancias) cuando termine de procesar un flujo de trabajo.

  5. Haga clic en Create. La pestaña Fleet Management (Administración de flotas) muestra el nuevo grupo en Current fleet (Flota actual).

    
              La nueva flota aparece en la gema en la nube Compute Farm.
    nota

    Se necesita tiempo para aumentar o disminuir las instancias de manera que coincidan con la cantidad solicitada. Se aplicarán los límites de su cuenta de AWS. Para solicitar un aumento de límite, consulte AWS Support Center.

  6. Para cambiar el número de instancias activas en cualquier momento, edite el campo Number of Instances (Número de instancias) y haga clic en Save Changes (Guardar los cambios).

    
              Cambie el número de instancias activas en la gema en la nube Compute Farm.

Para ejecutar y ver el progreso de un flujo de trabajo, utilice la pestaña Overview (Información general) como hizo con la herramienta de prueba local. La pestaña Overview (Información general) proporciona gráficos del progreso de la ejecución de flujos de trabajo.

Para ejecutar un flujo de trabajo

  1. En Cloud Gem Portal, haga clic en la pestaña Overview (Información general).

  2. Haga clic en Run Workflow (Ejecutar flujo de trabajo).

    
              Haga clic en Run Workflow (Ejecutar flujo de trabajo) en la gema en la nube Compute Farm.
  3. (Opcional) En el cuadro de diálogo Run Workflow (Ejecutar flujo de trabajo), escriba un nombre único para la ejecución.

    
              Introduzca un nombre para la ejecución del flujo de trabajo en la gema en la nube Compute Farm.

    Si opta por no proporcionar un nombre de ejecución (recomendado), se crea uno automáticamente con el formato exec-YYYY-MM-DDThh.mm.ss.

  4. Haga clic en Run (Ejecutar).

  5. En Progress Visualization (Visualización del progreso), puede cambiar entre Activity View (Vista de actividad) y Progress View (Vista del progreso).

    
              Cambie entre Activity View (Vista de actividad) y Progress View (Vista del progreso).

    Cuando la ejecución termine, se completa el gráfico.

    
              Gráfico de progreso en Compute Farm Cloud Gem Portal.

Después de que termine el flujo de trabajo, puede descargar el resultado de la compilación en la pestaña Build Configuration (Configuración de la compilación).

Para descargar el resultado de la compilación

  1. En Cloud Gem Portal, haga clic en Build Configuration (Configuración de la compilación).

  2. Haga clic en Download Build Result (Descargar el resultado de la compilación).

    
              Haga clic en Download Build Result (Descargar el resultado de la compilación).
  3. Seleccione el archivo shuffled_words_sorted.zip.

    
              Elija el archivo procesado

    También puede descargar cualquiera de los archivos intermedios que se hayan generado.

  4. Haga clic en Download (Descargar). Una vez que se haya descargado el archivo de resultados, puede ver su contenido para confirmar que la lista de palabras desordenadas se ha vuelto a ordenar.

Después de haber ejecutado una serie de flujos de trabajo, puede ver los resultados de compilaciones anteriores en la pestaña Overview (Información general).

Para ver una compilación anterior

  1. En la pestaña Overview (Información general), haga clic en View Previous Builds (Ver compilaciones anteriores).

    
              Haga clic en View Previous Builds (Ver compilaciones anteriores)
  2. Elija la compilación que desea ver en la lista. Si lo que quiere es borrar la lista, haga clic en Clear Logs (Borrar logs).

    
              Elija una compilación anterior para verla en Compute Farm Cloud Gem Portal.
  3. Haga clic en View (Ver). En la pestaña Overview (Información general), aparece la compilación que eligió.

    
              Se muestra la compilación anterior en la pestaña Overview (Información general)

Puede personalizar la herramienta para realizar tareas como las siguientes:

  • Descargar y descomprimir datos desde Amazon S3.

  • Ejecutar software de terceros en un shell.

  • Realizar la lógica de negocio para comprender y distribuir un problema.

  • Ejecutar algoritmos para crear o combinar datos si no usa software de terceros para todas las fases.

  • Devolver información al resto de la herramienta sobre los resultados de una tarea de división, creación o combinación.

  • Comprimir y cargar resultados en Amazon S3.

La propia herramienta se encarga de interpretar los eventos de Amazon SWF y realiza un seguimiento de forma recursiva de las dependencias de las diversas tareas.

Para personalizar la herramienta que se incluye con la gema en la nube Compute Farm para su propia aplicación informática, modifique los siguientes archivos:

  • Puede modificar los scripts divide.py, build.py y merge.py para implementar tareas que resuelvan otros problemas distribuidos.

  • Puede modificar el archivo lumberyard_version\dev\Gems\CloudGemComputeFarm\vN\AWS\cgp-resource-code\src\workflow-config.ts para hacer que los parámetros que el script utiliza estén disponibles para la configuración en Cloud Gem Portal.

  • Utilice el archivo lumberyard_version\dev\Gems\CloudGemComputeFarm\vN\Harness\ami_build\manifest.json para especificar el software que se instala en la AMI. Ejecute comandos de PowerShell según sea necesario para configurarlo.

Configuración de permisos

Puede que tenga que personalizar el rol de IAM predeterminado utilizado para las instancias de Amazon EC2 con permisos adicionales distintos de los permisos de Amazon SWF y Amazon S3 que necesita la herramienta y que se incluyen de forma predeterminada. Puede editar estos permisos en el archivo resource-template.json de la gema.