Lumberyard
Guía del usuario (Version 1.21)

Definiciones de recursos

Las definiciones de recursos para un proyecto de juego son archivos de plantillas de AWS CloudFormation que determinan los recursos (por ejemplo, bases de datos de DynamoDB, funciones Lambda e información de control de acceso) que se crearán en AWS para el juego. El código del juego utiliza recursos de AWS y espera que dichos recursos existan y estén configurados de manera específica. Las definiciones de los recursos determinan esta arquitectura y configuración.

Definiciones de recursos de juegos

Una descripción de los recursos que exige el juego se almacena en archivos en el directorio dev\{game}\AWS, donde dev es el subdirectorio \dev de la instalación de Lumberyard y {game} es el directorio que identifica la propiedad sys_game_folder en el archivo dev\bootstrap.cfg. Por ejemplo, si el juego es Samples Project, la ruta de la definición de los recursos será C:\lumberyard_version\dev\SamplesProject\AWS. Estos archivos deberían protegerse en el sistema de control de código fuente del proyecto junto con otros datos y código del juego.

El contenido del directorio predeterminado {game}\AWS lo crea el comando lmbr_aws project create.

Además, algunos datos de configuración específicos del usuario se mantienen en el directorio dev\Cache\{game}\{OS}\user\AWS. El contenido de este directorio no debe protegerse en el sistema de control de código fuente del proyecto.

En el siguiente ejemplo se muestra el contenido de estos directorios AWS.

dev\{game}\AWS\ resource-group\ {resource-group-name}\ lambda-function-code\ (Lambda function Code) resource-template.json local-project-settings.json dev\Cache\{game}\{OS}\user\AWS\ user-settings.json

Los archivos .json se describen en las siguientes secciones.

Directorio resource-group\{resource-group}

Los recursos de AWS que usa el juego se organizan en grupos de recursos independientes. El directorio resource-group los contiene en subdirectorios {resource-group} individuales. Cada subdirectorio {resource-group} suele llamarse igual que el proyecto de juego y puede contener un directorio lambda-function-code y un archivo resource-template.json.

Directorio lambda-function-code

El subdirectorio lambda-function-code está presente cuando un recurso de plantilla define los recursos de la función Lambda. Este directorio puede contener archivos de código fuente que implementan dichas funciones. Lumberyard carga el código desde este directorio cuando se usa la plantilla para actualizar la pila de AWS CloudFormation.

nota

El directorio lambda-function-code está obsoleto. Para obtener más información, consulte Directorios de código Lambda.

resource-template.json

Un archivo resource-template.json es una plantilla de AWS CloudFormation que define los recursos de AWS asociados a cada grupo de recursos. Puede especificar cualquier tipo de recurso de AWS compatible con AWS CloudFormation en el archivo resource-template.json. Para obtener una lista de los tipos de recursos disponibles, consulte la referencia de AWS CloudFormation Referencia de tipos de recursos de AWS.

Para determinar las pilas de grupos de recursos que se incluyen en una implementación, Lumberyard lee los archivos resource-template.json en los subdirectorios AWS\resource-group y AWS de las gemas en la nube habilitadas. A continuación se muestran dos ejemplos.

\dev\CloudGemSamples\AWS\resource-group\CloudGemAWSBehavior\resource-template.json \dev\Gems\CloudGemMessageOfTheDay\AWS\resource-template.json

local-project-settings.json

El archivo dev\<project name>\AWS\local-project-settings.json contiene un identificador ProjectStackId que apunta a AWS, el número de versión de Cloud Gem Framework y a una lista de los grupos de recursos que se han deshabilitado para el proyecto. En el siguiente ejemplo se muestra el formato del archivo local-project-settings.json para el proyecto Cloud Gem Samples:

{ "ProjectStackId": "arn:aws:cloudformation:{aws-region}:{aws-access-id}:stack/CloudGemSamples/{uuid}", "DisabledResourceGroups": [], "FrameworkVersion": "1.1.1" }

nota

Antes de Lumberyard 1.11, el archivo local-project-settings.json mantenía una lista de grupos de recursos habilitados. De forma predeterminada, todos los grupos de recursos de una gema en la nube se habilitan cuando se habilita la gema en la nube. Publicar solo los grupos de recursos deshabilitados facilita su identificación para la depuración. Consulte resource-group disable.

nota

A partir de Lumberyard 1.8, el archivo project-settings.json se almacena en Bucket de configuración del proyecto. La plantilla de pila de AWS CloudFormation del proyecto define el bucket.

Propiedad ProjectStackId

La propiedad ProjectStackId identifica la pila de AWS CloudFormation para el proyecto. Esta pila contiene los recursos que usa Cloud Canvas para administrar el proyecto de Lumberyard. Inicialmente, la propiedad ProjectStackId no está presente en el archivo local-project-settings.json. Después de crear la pila del proyecto, la propiedad ProjectStackId se escribe en el archivo y es el ID de la pila de AWS CloudFormation del proyecto.

La propiedad ProjectStackId la establece el comando project create. Si por alguna razón desea asociar el proyecto con una pila de proyecto ya existente, puede utilizar la Consola de administración de AWS para buscar el ARN de la pila y pegarlo en el archivo local-project-settings.json (vaya a AWS CloudFormation, seleccione la pila, seleccione Overview (Información general) y, a continuación, copie el valor de la propiedad Stack Id).

user-settings.json

El archivo user-settings.json contiene datos de configuración específicos del usuario. El archivo se crea en la primera ejecución del administrador de recursos de Cloud Canvas o la primera vez que se ejecuta lmbr_aws en un proyecto.

Ubicación del archivo

El archivo user-settings.json se encuentra en dev\Cache\{game}\{OS}\user\AWS\user-settings.json. No está en el directorio dev\{game}\AWS junto con los demás archivos que se describen en esta sección porque no debe protegerse en el sistema de control de código fuente del proyecto.

Perfil de AWS predeterminado

La sección DefaultProfile del archivo user-settings.json contiene el perfil de AWS que utiliza el comando lmbr_aws para el proyecto. Para establecer el perfil para un proyecto de Cloud Canvas, utilice el siguiente comando:

lmbr_aws profile default --set profile_name

Para obtener más información, consulte profile default.

Archivos de plantilla de proyecto

Los archivos de plantilla de proyecto de Cloud Canvas son plantillas de AWS CloudFormation que definen los recursos, las pilas y los permisos de implementación de un proyecto. A continuación se muestran los archivos de plantilla de proyecto:

  • project-template.json

  • deployment-template.json

  • deployment-access-template.json

El contenido de cada uno de estos archivos se puede complementar con un archivo *-extensions.json correspondiente. A partir de Lumberyard 1.10, estos archivos se encuentran en el directorio \Gems\CloudGemFramework\vN\ResourceManager\resource_manager\templates, donde N representa el número de versión de Cloud Gem Framework.

project-template.json

El archivo project-template.json es una plantilla de AWS CloudFormation que define los recursos de todo el proyecto compatibles con el sistema de administración de recursos de Cloud Canvas. Para obtener información acerca del administrador de recursos de Cloud Canvas, consulte Cómo funciona el administrador de recursos de Cloud Canvas. Para obtener información relacionada con la seguridad, consulte Descripción del sistema de seguridad del administrador de recursos.

deployment-template.json

En versiones de Lumberyard anteriores a la 1.10, la copia del proyecto del archivo deployment-template.json contenía las definiciones de pila de cada uno de los grupos de recursos del proyecto. Ahora, estos recursos se insertan en la plantilla base antes de pasarla a AWS CloudFormation. Para determinar las pilas de los grupos de recursos que se incluyen, Lumberyard lee los archivos resource-template.json de los subdirectorios AWS\resource-group y AWS de las gemas habilitadas.

deployment-access-template.json

El archivo deployment-access-template.json es una plantilla de AWS CloudFormation que define los recursos utilizados para asegurar una implementación. Para obtener información acerca del administrador de recursos de Cloud Canvas, consulte Cómo funciona el administrador de recursos de Cloud Canvas. Para obtener información relacionada con la seguridad, consulte Descripción del sistema de seguridad del administrador de recursos.

Parámetros

La pila de acceso de la implementación define los parámetros que identifican la implementación y otros recursos necesarios para configurar la seguridad de la implementación. Cloud Canvas proporciona un valor para cada uno de estos parámetros cuando se crea una implementación.

Recursos

En esta sección se describen algunos de los recursos esenciales que se definen en el archivo de ejemplo deployment-access-template.json.

Jugador

El recurso Player describe el rol de IAM que determina el acceso concedido al jugador. Por ejemplo, para que el juego llame a una función Lambda, se debe permitir al jugador la acción lambda:InvokeFunction en el recurso de función Lambda.

Las políticas del rol las determinan los elementos de metadatos de PlayerAccess que se encuentran en las plantillas de recursos del proyecto (consulte resource-template.json). Las políticas del rol las actualizan los recursos PlayerAccess personalizados que aparecen en los archivos deployment-access-template.json resource-template.json. El recurso del grupo de identidades PlayerAccessIdentityPool de Amazon Cognito permite a los jugadores asumir este rol.

Para obtener más información, consulte PlayerAccessIdentityPool y Control del acceso a los recursos.

PlayerLoginRole

Los recursos PlayerLoginRole describen el rol de IAM que asume temporalmente el jugador como parte del proceso de inicio de sesión.

Para obtener más información, consulte Control del acceso a los recursos.

PlayerLoginIdentityPool

El recurso PlayerLoginIdentityPool describe el grupo de identidades de Amazon Cognito que proporciona una identidad temporal al jugador durante el proceso de inicio de sesión.

Para obtener más información, consulte Control del acceso a los recursos.

PlayerAccessIdentityPool

El recurso PlayerAccessIdentityPool describe el grupo de identidades de Amazon Cognito que proporciona una identidad temporal al jugador durante el proceso de inicio de sesión.

Para obtener más información, consulte Control del acceso a los recursos.

Archivos de extensión de plantilla

A partir de Lumberyard 1.10, puede utilizar los siguientes archivos de extensión para añadir recursos a las plantillas de proyecto:

  • deployment-access-template-extensions.json

  • deployment-template-extensions.json

  • project-template-extensions.json

Puede utilizar los archivos de extensión para definir nuevos resultados, metadatos y recursos. No se admite la incorporación de parámetros de plantillas.

Para crear archivos de extensión, puede utilizar el comando lmbr_aws project create-extension-template. Para crear un archivo de plantilla de un determinado tipo, utilice el argumento correspondiente, como se muestra en los siguientes ejemplos.

  • Para crear un archivo project-template-extensions.json, escriba:

    lmbr-aws project create-extension-template --project
  • Para crear un archivo deployment-template-extensions.json, escriba:

    lmbr-aws project create-extension-template --deployment
  • Para crear un archivo deployment-access-template-extensions.json, escriba:

    lmbr-aws project create-extension-template --deployment-access

En los archivos base de plantilla (sinextensión), la propiedad Custom::AccessControl del recurso DependsOn incluye todos los recursos definidos en los archivos de extensión en caso de que la propiedad DependsOn no especifique AccessControl.

Directorios de código

La ubicación y nomenclatura de los directorios de código ha cambiado en Lumberyard 1.10. Para obtener más información, consulte Cloud Gem Framework y control de versiones del administrador de recursos.

Directorios de código Lambda

A partir de Lumberyard 1.10, le recomendamos que ponga el código de Lambda en directorios AWS\lambda-code\<lambda-name> (por ejemplo, dev\Gems\CloudGemPlayerAccount\AWS\lambda-code) y el código compartido en un directorio common-code (por ejemplo, dev\Gems\CloudGemPlayerAccount\AWS\common-code).

En versiones de Lumberyard anteriores a 1.10, el código de las funciones de Lambda de un grupo de recursos estaba en un directorio AWS\lambda-function-code. A partir de Lumberyard 1.10, no se recomienda el uso de los directorios AWS\lambda-function-code y AWS\<lambda-name>-lambda-code. La compatibilidad se eliminará en una próxima versión. En lugar de ello, recomendamos que ponga el código de Lambda en directorios AWS\lambda-code\<lambda-name>.

Además, el uso del directorio shared-lambda-code ya no está recomendado. La compatibilidad también se eliminará en una próxima versión. En su lugar, utilice el directorio common-code más flexible. Para obtener más información, consulte Uso de código compartido. Para obtener información para actualizar los proyectos y gemas en la nube a la versión 1.0.0 del Cloud Gem Framework, consulte Actualización de proyectos y Cloud Gems a la versión 1.0.0 de Cloud Gem Framework.

Directorio proyect-code

El subdirectorio dev\Gems\CloudGemFramework\vN\AWS\project-code contiene el código fuente del controlador de recursos personalizados de AWS CloudFormation que se utiliza en las plantillas de AWS CloudFormation del proyecto. Para obtener información acerca de los recursos personalizados, consulte Recursos personalizados.

También contiene el código que implementa el paso de intercambio de token del proceso de inicio de sesión de los jugadores. Para obtener más información, consulte Control del acceso a los recursos.