Operations - Lumberyard Guía del usuario

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

Operations

Una API de servicio de una gema en la nube puede implementar varias de las operaciones de. Puede definir operaciones en el paso swagger.json del archivo añadiendo operationObject de instancias a un pathItemObject. Para cada operación, puede definir los datos de entrada que el La operación de requiere y los datos de salida que produce. La entrada Los datos de pueden incluir ruta, consulta y parámetros de cuerpo. Para más información información sobre el uso de swagger para definir API, consulte http://swagger.io/.

API Gateway direcciona las solicitudes de la API a las de la gema en la nube Lambda función. Cuando carga la nube recursos de la gema para AWS, la gema en la nube swagger.json el archivo es procesado. Este procesamiento crea los mapeos de solicitud y respuesta que API Gateway utiliza para llamar a la gema en la nube Lambda función. Esta configuración está controlada por el x-amazon-cloud-canvas-lambda-dispatch objetos de extensión en la swagger.json del archivo.

Las operaciones de API de servicio se implementan en la ServiceLambda AWS Lambda Recurso de función de. El código de la Lambda la función procede de la gema en la nube lambda-function-code del directorio. El Cloud Gem Framework proporciona una solicitud de servicio del módulo de despacho. Para obtener más información, consulte Ejecución de solicitud.

El siguiente diagrama ilustra la solicitud y la carga procesando.


            Operaciones de procesamiento de solicitud y carga

Asignación de solicitud predeterminada

Se envía un objeto JSON que implementa la operación de solicitud a el Lambda función. El objeto JSON contiene el módulo y nombre de la función y los parámetros de la operación, como se indica a continuación La sintaxis esquelética muestra.

{ "module": "<module-name>", "function": "<function-name>", "parameters": { "<parameter-name>": <parameter-value>, ... } }

El nombre de módulo predeterminado se deriva de la ruta de operación. Una ruta como /player/{id}/highscores resultados en un nombre de módulo como player_highscores. Los parámetros de la ruta son se ha omitido. Las rutas /player y /player/{id} ambos se asignan a la nombre del módulo player. En este caso, la función de controlador de ese módulo puede utilizar la existencia de un id valor del parámetro para determinar el valor del comportamiento de. La ruta / (y /{param}) están asignados al nombre del módulo root.

El nombre de función predeterminado es el nombre de la operación como GETde POST, o bien PUT.

Estos valores predeterminados pueden anularse especificando el módulo y/o las propiedades de una función de x-amazon-cloud-canvas-lambda-dispatch Objeto de extensión. Para obtener más información, consulte Objeto de extensión de Cloud Gem Framework.

Los nombres de los parámetros se toman de las definiciones de parámetros en la swagger.json del archivo. Se admiten los tipos de parámetros de ruta, consulta y cuerpo.

Asignación de respuesta predeterminada

El Lambda La función de devuelve el valor al cliente como un objeto JSON como el siguiente.

{ "result":<lambda-return-value> }

Si el Lambda sale con un error (por ejemplo, mediante al generar una excepción no controlada), devuelve el objeto JSON en el siguiente formato.

{ "errorMessage":"<error-message>", "errorType":"<error-type>" }

Si el mensaje de error recibido del Lambda función empieza con el texto Client Error:, luego un HTTP 400 La respuesta se envía a la cliente. El errorMessage y errorType propiedades recibidas desde el paso Lambda La función se reenvía al cliente.

Si el mensaje de error recibido del Lambda la función no empezar con Client Error:, o ningún error se recibe un mensaje, HTTP 500 La respuesta se envía al cliente. Como medida de seguridad, la errorMessage devuelto al cliente es siempre Un error interno del servidor ha ocurrido, y errorType es ServiceError. Esto es para evitar enviar el de excepción al cliente. Hacerlo podría proporcionar información que podría permitir a un atacante descubrir vulnerabilidades en la implementación del servicio.

En ambos HTTP 400 y HTTP 500 casos, ninguna otra información (como un seguimiento de pila) se envía al cliente; esta también es una medida de seguridad.

Ejecución de solicitud

El Cloud Gem Framework tiene soporte integrado para API de servicio Lambda Las funciones de que se implementan en Python. Sin integración se proporciona compatibilidad con Node.js o Java Lambda funciones. [EMPTY] estos idiomas, implemente el Lambda controlador de funciones para buscar el module y function propiedades en el objeto de evento de que el Lambda La función de proporciona. También podría tener que anular los valores predeterminados generados para el x-amazon-cloud-canvas-lambda-dispatch module y function durante la swagger.json del archivo de procesamiento.

La service.py El archivo de módulo de se proporciona en el archivo del servicio de AWS Lambda función. Este módulo dispatch La función utiliza la función module y function las propiedades de la event objeto para enviar la solicitud al código de servicio que proporcione. Estas propiedades son establecidas por el mapeo de solicitudes que configura API Gateway.

Coloque el código de servicio en el de su grupo de recursos lambda-function-code\api del directorio. El expedidor utiliza importlib.import_module para cargar los módulos desde ese directorio. Si la función especificada tiene la @service.api del decorador, el expedidor invoca la función de en ese módulo, como en la siguiente ejemplo.

import service @service.api def post(request, submission, user_id): ...

El primer argumento que se pasa a la función es un dispatch.Request Objeto. El request el objeto tiene lo siguiente las propiedades.

  • event – El objeto de evento que AWS Lambda pasa al controlador de envío. El contenido del objeto viene determinado por la plantilla de solicitud. Propiedades adicionales añadidas a la plantilla a través de la x-amazon-cloud-canvas-lambda-dispatch del objeto additional-request-template-content del hotel también están ubicados aquí.

  • context – La pitón contexto objeto de que AWS Lambda pasa al controlador de envío.

Los parámetros del objeto de solicitud se pasan a la función de controlador como palabra clave (es decir, mediante el uso de Python **parameters).

Control de errores

La ClientError se proporciona en la errors.py del archivo. Esta clase amplía RuntimeException y garantiza que el mensaje de error tiene el prefijo Client Error:. Esto activa una HTTP 400 respuesta de API Gateway como se describe en Asignación de respuesta predeterminada.

Si se plantean otras excepciones durante el procesamiento, se Internal Service Error el mensaje se envía a el cliente.