Administración de recursos mediante AWS CloudFormation - Amazon GameLift

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.

Administración de recursos mediante AWS CloudFormation

Puede utilizar AWS CloudFormation para administrar sus recursos de Amazon GameLift. En AWS CloudFormation, puede crear una plantilla que sirva como modelo para cada recurso y, a continuación, utilizarla para crear los recursos. Para actualizar recursos, realice los cambios en la plantilla y utilice AWS CloudFormation para implementar las actualizaciones. Puede organizar sus recursos en grupos lógicos, llamados "pilas" y "conjuntos de pilas".

El uso de AWS CloudFormation para mantener sus recursos de alojamiento de Amazon GameLift ofrece una forma más eficiente de administrar conjuntos de recursos de AWS. Puede utilizar el control de versiones para realizar un seguimiento de los cambios en las plantillas a lo largo del tiempo y coordinar las actualizaciones realizadas por varios miembros del equipo. También puede reutilizar las plantillas. Por ejemplo, al implementar un juego en varias regiones, puede usar la misma plantilla para crear recursos idénticos en cada región. También puede utilizar estas plantillas para implementar los mismos conjuntos de recursos en otra partición.

Para obtener más información sobre AWS CloudFormation, consulte la AWS CloudFormationGuía del usuario de . Para ver información de la plantilla de recursos de Amazon GameLift, consulte la Referencia de tipos de recursos de Amazon GameLift.

Prácticas recomendadas

Para obtener instrucciones detalladas sobre el uso de AWS CloudFormation, consulte Prácticas recomendadas de AWS CloudFormation en la Guía del usuario de AWS CloudFormation. Además, estas prácticas recomendadas tienen especial relevancia cuando se utiliza Amazon GameLift.

  • Administre de forma coherente los recursos que utiliza mediante AWS CloudFormation. Si cambia sus recursos fuera de AWS CloudFormation, sus recursos se desincronizarán de sus plantillas de recursos.

  • Utilice pilas y conjuntos de pilas de AWS CloudFormation para administrar eficazmente varios recursos.

    • Utilice pilas para administrar grupos de recursos conectados. Por ejemplo, una pila que contiene una compilación, una flota que hace referencia a la compilación y un alias que hace referencia a la flota. Si actualiza la plantilla para reemplazar una compilación, AWS CloudFormation reemplaza las flotas conectadas a la compilación. AWS CloudFormation actualiza después los alias existentes para que apunten a las nuevas flotas. Para obtener más información, consulte Trabajo con pilas en la Guía del usuario de AWS CloudFormation.

    • Utilice conjuntos de pilas de AWS CloudFormation si va a implementar pilas idénticas en varias regiones o cuentas de AWS. Para obtener más información, consulte Trabajo con conjuntos de pilas en la Guía del usuario de AWS CloudFormation.

  • Si utiliza instancias de spot, incluya una flota bajo demanda como respaldo. Es recomendable que configure las plantillas con dos flotas en cada región, una con instancias de spot y otra con instancias bajo demanda.

  • Agrupe los recursos específicos de la ubicación y los recursos globales en pilas distintas cuando administre recursos en varias ubicaciones.

  • Coloque sus recursos globales cerca de los servicios que los utilizan. Los recursos como las colas y las configuraciones de emparejamiento suelen recibir un gran volumen de solicitudes de orígenes específicos. Al colocar sus recursos cerca del origen de esas solicitudes, minimiza el tiempo de viaje de la solicitud y puede mejorar el rendimiento general.

  • Coloque su configuración de emparejamiento en la misma región que la cola de sesiones del juego que utiliza.

  • Cree un alias distinto para cada flota de la pila.

Uso de pilas de AWS CloudFormation

Recomendamos utilizar las siguientes estructuras recomendadas al configurar pilas de AWS CloudFormation para recursos de Amazon GameLift. La estructura óptima de la pila varía en función de si va a implementar el juego en una sola región o en varias regiones.

Pilas para una sola ubicación

Para administrar los recursos de Amazon GameLift en una sola ubicación, recomendamos una estructura de dos pilas:

  • Pila de respaldo: esta pila contiene recursos de los que dependen los recursos de Amazon GameLift. Como mínimo, esta pila debe incluir el bucket de S3 donde almacena el servidor de juegos personalizado o los archivos de script de Realtime. La pila también debe incluir un rol de IAM que conceda a Amazon GameLift permiso para recuperar los archivos del bucket de S3 al crear un recurso de compilación o script de Amazon GameLift. Esta pila también puede contener otros recursos de que se utilicen con el juego, como tablas de DynamoDB, clústeres de Amazon Redshift y funciones de Lambda.

  • Pila de Amazon GameLift: esta pila contiene todos los recursos de Amazon GameLift, incluida la compilación o el script, un conjunto de flotas, alias y una cola de sesiones de juego. AWS CloudFormation crea un recurso de compilación o script con los archivos almacenados en la ubicación del bucket de S3 e implementa la compilación o el script en uno o más recursos de la flota. Cada flota debe tener su alias correspondiente. La cola de sesiones del juego hace referencia a algunos o todos los alias de la flota. Si utiliza FlexMatch para el emparejamiento, esta pila también contiene una configuración de emparejamiento y un conjunto de reglas.

El siguiente diagrama ilustra una estructura de dos pilas para implementar recursos en una sola región de AWS.

El diagrama muestra dos pilas de AWS CloudFormation. Una contiene recursos de Amazon GameLift y la otra contiene recursos compatibles con GameLift. Esta última pila incluye el bucket de S3 que se utiliza para almacenar archivos de compilación o script y el rol de IAM que permite a Amazon GameLift recuperar archivos del bucket de S3.

Pilas para varias regiones

Al implementar el juego en más de una región, tenga en cuenta cómo los recursos pueden interactuar entre regiones. Algunos recursos, como las flotas de Amazon GameLift, solo pueden hacer referencia a otros recursos de la misma región. Otros recursos, como una cola de Amazon GameLift, son independientes de la región. Para administrar recursos de Amazon GameLift en varias regiones, recomendamos la siguiente estructura.

  • Pilas de respaldo regional: estas pilas contienen recursos de los que dependen los recursos de Amazon GameLift. Esta pila debe incluir el bucket de S3 en el que almacena el servidor de juegos personalizado o los archivos de script de Realtime. También pueden contener otros recursos de AWS para el juego, como tablas de DynamoDB, clústeres de Amazon Redshift y funciones de Lambda. Muchos de estos recursos son específicos de cada región, por lo que debe crearlos en cada una. Amazon GameLift también necesita un rol de IAM que permita obtener acceso a estos recursos de soporte. Puesto que un rol de IAM es independiente de la región, solo necesita un recurso de rol, colocado en cualquier región y al que se haga referencia en todas las demás pilas de respaldo.

  • Pilas de Amazon GameLift regionales: esta pila contiene los recursos de Amazon GameLift, que debe haber en cada región en la que se implementa el juego, incluida la compilación o el script, un conjunto de flotas y alias. AWS CloudFormation crea un recurso de compilación o script con los archivos en una ubicación del bucket de S3 e implementa la compilación o el script en uno o más recursos de la flota. Cada flota debe tener su alias correspondiente. La cola de sesiones del juego hace referencia a algunos o todos los alias de la flota. Puede mantener una plantilla para describir este tipo de pila y utilizarla para crear conjuntos de recursos idénticos en cada región.

  • Pila global de Amazon GameLift: esta pila contiene la cola de sesiones de juego y los recursos de emparejamiento. Estos recursos se pueden colocar en cualquier región, aunque se suelen colocar en la misma región. La cola puede hacer referencia a flotas o alias que se encuentran en cualquier región. Para colocar colas adicionales en diferentes regiones, cree pilas globales adicionales.

Los diagramas siguientes ilustran una estructura de varias pilas para implementar recursos en varias regiones de AWS. El primer diagrama muestra una estructura para una sola cola de sesiones del juego. El segundo diagrama muestra una estructura con varias colas.

Este diagrama muestra varias pilas de AWS CloudFormation para tres regiones. Las pilas de respaldo de cada región contienen recursos auxiliares, como un bucket de S3. Una de estas pilas también contiene un rol de IAM, que Amazon GameLift puede utilizar para obtener acceso a cualquiera de los recursos auxiliares, independientemente de la región. Las pilas de Amazon GameLift regionales contienen compilaciones, flotas y alias de Amazon GameLift. Una pila global de Amazon GameLift contiene recursos de emparejamiento y una cola, que puede hacer referencia a flotas o alias de varias regiones.
Este diagrama muestra varias pilas de AWS CloudFormation para tres regiones, incluidas las pilas de globales de Amazon GameLift con colas de sesiones del juego en dos regiones. Cada cola hace referencia a los alias de las pilas de Amazon GameLift regionales.

Actualización de las compilaciones

Las compilaciones de Amazon GameLift son inmutables, al igual que la relación entre una compilación y una flota. Por consiguiente, cuando actualice sus recursos de alojamiento para usar un nuevo conjunto de archivos de compilación del juego, proceda de la siguiente forma:

  • Cree una nueva compilación usando el nuevo conjunto de archivos (reemplazo).

  • Cree un nuevo conjunto de flotas para implementar la nueva compilación del juego (reemplazo).

  • Redirija los alias para que apunten a las nuevas flotas (actualización sin interrupción).

Para obtener más información, consulte Comportamientos de actualización de los recursos de la pila en la Guía del usuario de AWS CloudFormation.

Implementación de actualizaciones de compilación automáticamente

Al actualizar una pila que contiene recursos de compilación, flota y alias relacionados, el comportamiento predeterminado de AWS CloudFormation es realizar automáticamente estos pasos en orden. Esta actualización se activa al cargar primero los nuevos archivos de compilación en una nueva ubicación de S3. A continuación, modifica la plantilla de compilación de AWS CloudFormation para que apunte a la nueva ubicación de S3. Cuando actualiza la pila con la nueva ubicación S3, se desencadena la siguiente secuencia de AWS CloudFormation:

  1. Se recuperan los nuevos archivos de S3, se validan los archivos y se crea una nueva compilación de Amazon GameLift.

  2. Se actualiza la referencia de compilación en la plantilla de flota, lo que desencadena la creación de una nueva flota.

  3. Una vez activadas las nuevas flotas, se actualiza la referencia de flota en el alias, lo que hace que el alias se actualice para apuntar a las nuevas flotas.

  4. Se elimina la flota antigua.

  5. Se elimina la compilación antigua.

Si la cola de sesiones del juego utiliza alias de flota, el tráfico de jugadores se cambia automáticamente a las nuevas flotas en cuanto se actualizan los alias. Las flotas antiguas se van quedando poco a poco sin jugadores a medida que terminan las sesiones del juego. El escalado automático controla la tarea de añadir y eliminar instancias de cada conjunto de flotas a medida que fluctúa el tráfico de jugadores. También puede especificar un recuento inicial de las instancias deseadas para que el cambio se produzca rápidamente y habilitar el escalado automático más adelante.

También puede mantener los recursos de AWS CloudFormation en lugar de eliminarlos. Para obtener más información, consulte RetainResources en la Referencia de la API de AWS CloudFormation.

Implementación de actualizaciones de compilación manualmente

Si desea tener más control sobre cuándo se activan las nuevas flotas para los jugadores, dispone de algunas opciones. Puede elegir administrar los alias manualmente mediante la consola de Amazon GameLift o la CLI. Otra opción es añadir un segundo conjunto de definiciones de compilación y flota en la plantilla, en lugar de actualizar la plantilla de compilación para reemplazar la compilación y las flotas. Al actualizar la plantilla, AWS CloudFormation crea un segundo recurso de compilación y las flotas correspondientes. Dado que los recursos existentes no se reemplazan, estos no se eliminan y los alias siguen apuntando a las flotas originales.

La principal ventaja de este enfoque es que le ofrece flexibilidad. Puede crear recursos distintos para la nueva versión de su compilación, probar los nuevos recursos y controlar cuándo se activan las nuevas flotas para los jugadores. Un posible inconveniente es que requiere el doble de recursos en cada región durante un breve período de tiempo.

En el siguiente diagrama se ilustra este proceso.

El diagrama muestra varias pilas de AWS CloudFormation para tres regiones, incluidas las pilas de Amazon GameLift globales con colas de sesiones de juego en dos regiones. Cada cola hace referencia a los alias de las pilas de Amazon GameLift regionales.

Cómo funcionan las restauraciones

Al ejecutar una actualización de recursos, si algún paso no se completa correctamente, AWS CloudFormation inicia automáticamente una restauración. Este proceso invierte cada paso en orden, eliminando los recursos recién creados.

Si necesita activar manualmente una restauración, cambie la clave de ubicación de S3 de la plantilla de compilación a la ubicación original y actualice la pila. Se crea una nueva compilación y flota de Amazon GameLift, y el alias cambia a la nueva flota una vez que la flota esté activa. Si administra alias por separado, debe cambiarlos para que apunten a las nuevas flotas.

Para obtener más información sobre cómo controlar una restauración que da un error o se bloquea, consulte Continuación de la restauración de una actualización en la Guía del usuario de AWS CloudFormation.