Lumberyard
Guía del usuario (Version 1.21)

API de servicio de Cloud Gem Framework

Esta documentación es preliminar y está sujeta a cambios.

Las gemas en la nube de Lumberyard proporcionan servicios como Cloud Gem Portal (CGP) que configuran y administran el funcionamiento de un juego. Los servicios se implementan por medio de recursos de funciones de AWS Lambda. El juego y las herramientas obtienen acceso a estos servicios a través de Amazon API Gateway. El código que proporciona se ejecuta en una función Lambda. API Gateway administra el acceso al servicio, proporciona almacenamiento en caché para los resultados utilizados con frecuencia y admite la limitación controlada de solicitudes.

En el diagrama siguiente se muestra cómo la API de servicio de Cloud Gem Framework interactúa con el cliente de juego, Cloud Gem Portal, AWS Lambda y API Gateway.


            Interacciones de la API de servicio

Descripciones de API swagger de gema de nube

Las herramientas y el motor de videojuegos Lumberyard utilizan operaciones API para comunicarse con su servicio de gema de nube. Estas API se describen en el archivo /dev/Gems/<gem-name>/AWS/swagger.json de la gema en la nube. En este archivo se describen los datos de entrada y salida para cada una de las operaciones que puede realizar el servicio. El archivo swagger.json utiliza el formato de definición de API de swagger, que es un marco de código fuente para operaciones API RESTful.

A continuación se muestra un ejemplo de un archivo swagger.json.

{ "swagger": "2.0", "info": { "version": "1.0.0", "title": "$RestApiResourceName$", "description": "API for the $ResourceGroupName$ service ($DeploymentName$ deployment)." }, "schemes": [ "https" ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "x-amazon-cloud-canvas-lambda-dispatch": { "lambda": "$ServiceLambdaArn$" }, "paths": { "/service/status": { "x-amazon-cloud-canvas-lambda-dispatch": { "module": "service_status" }, "get": { "operationId": "get_service_status", "description": "Returns the service's status. Useful for testing connectivity.", "responses": { "200": { "description": "A successful service status response.", "schema": { "$ref": "#/definitions/ServiceStatus" } } } } }, "/admin/messages": { "post": { "description": "Add a message to the message table", "parameters": [ { "name": "msg", "in": "body", "required": true, "schema": { "$ref": "#/definitions/MessageData" } } ], "responses": { "200": { "description": "Unique ID for this new message", "schema": { "$ref": "#/definitions/DetailedMessageData" } } } }, "get": { "description": "Get the list of N messages starting at a given index and filter with all, active, expired or planned", "parameters": [ { "description": "The index number of the page to fetch first. Example: 0", "name": "index", "in": "query", "required": true, "type": "integer" }, { "description": "The maximum number of messages to fetch. Example: 1000", "name": "count", "in": "query", "required": true, "type": "integer" }, { "description": "Options available here are 'active', 'planned', 'expired'. Example: active", "name": "filter", "in": "query", "required": true, "type": "string" } ], "responses": { "200": { "description": "The list of detailed messages ", "schema": { "$ref": "#/definitions/DetailedMessageList" } } } } }, "/admin/messages/{msg_id}": { "delete": { "description": "Delete an existing message", "parameters": [ { "name": "msg_id", "description": "The message id to edit.", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "Status of the deletion", "schema": { "format": "string" } } } }, "put": { "description": "Edit an existing message", "parameters": [ { "name": "msg_id", "description": "The message id to edit.", "in": "path", "required": true, "type": "string" }, { "name": "msg", "in": "body", "description": "The new localized message body.", "required": true, "schema": { "$ref": "#/definitions/MessageData" } } ], "responses": { "200": { "description": "Status of the addition", "schema": { "format": "string" } } } } }, "/player/messages": { "get": { "description": "Get the list of messages scheduled for a given time and language", "parameters": [ { "name": "time", "description": "The player's local time. Example: Jul 18 2017 13:43", "in": "query", "type": "string" }, { "name": "lang", "description": "The ISO 639-1 language code. Example: en", "in": "query", "type": "string" } ], "responses": { "200": { "description": "The list of messages for that time and language. If no time or lang is provided ti falls back to UTC Eng", "schema": { "$ref": "#/definitions/MessageList" } } } } } }, "definitions": { "ServiceStatus": { "type": "object", "properties": { "status": { "type": "string" } }, "required": [ "status" ] }, "MessageData": { "type": "object", "properties": { "message": { "description": "Required - The localized message of the day text.", "type": "string" }, "priority": { "description": "The priority in which to view the message. 0 has the highest priority.", "type": "integer" }, "startTime": { "description": "The date time in which to start displaying the message. Example: Jul 18 2017 00:00", "type": "string" }, "endTime": { "description": "The date time in which to stop displaying the message. Example: Jul 19 2017 16:00", "type": "string" } }, "required": [ "message" ] }, "DetailedMessageData": { "type": "object", "properties": { "UniqueMsgID": { "description": "The unique message id.", "type": "string" }, "message": { "description": "The localized message body.", "type": "string" }, "priority": { "description": "The priority in which to view the message. 0 has the highest priority.", "type": "integer" }, "startTime": { "description": "The date time in which to start displaying the message. Example: Jul 18 2017 00:00", "type": "string" }, "endTime": { "description": "The date time in which to stop displaying the message. Example: Jul 19 2017 16:00", "type": "string" } } }, "MessageList": { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/definitions/MessageData" } } } }, "DetailedMessageList": { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/definitions/DetailedMessageData" } } } } } }

Cloud Canvas utiliza estas descripciones de API para generar componentes de motor de Lumberyard que ejecutan API de servicio para el juego. La aplicación web Cloud Gem Portal también utiliza las descripciones de API cuando realiza solicitudes de servicio. Además, las descripciones de API se utilizan para configurar API Gateway para trabajar con su servicio.