Solucionador - AWS Serverless Application Model

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.

Solucionador

Configure los resolutores para los campos de su API. GraphQL AWS Serverless Application Model (AWS SAM) admite solucionadores de JavaScript canalizaciones.

Sintaxis

Para declarar esta entidad en tu plantilla AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis.

YAML

OperationType: LogicalId: Caching: CachingConfig CodeUri: String FieldName: String InlineCode: String MaxBatchSize: Integer Pipeline: List Runtime: Runtime Sync: SyncConfig

Propiedades

Caching

La configuración de almacenamiento en caché para un solucionador que tiene la caché activada.

Tipo: CachingConfig

Obligatorio: no

AWS CloudFormation compatibilidad: esta propiedad se pasa directamente a la CachingConfig propiedad de un AWS::AppSync::Resolver recurso.

CodeUri

El código de la función de solucionador es el URI de Amazon Simple Storage Service (Amazon S3) o la ruta a una carpeta local.

Si especifica una ruta a una carpeta local, AWS CloudFormation requiere que el archivo se cargue primero en Amazon S3 antes de la implementación. Puede utilizar la CLI de AWS SAM para facilitar este proceso. Para obtener más información, consulte Cómo cargar archivos locales durante la implementación con AWS SAMCLI.

Si no InlineCode se proporciona CodeUri ninguna de las dos, AWS SAM generará un InlineCode generador que redireccionará la solicitud a la primera función de canalización y recibirá la respuesta de la última función de canalización.

Tipo: cadena

Obligatorio: no

AWS CloudFormation compatibilidad: esta propiedad se transfiere directamente a la CodeS3Location propiedad de un AWS::AppSync::Resolver recurso.

FieldName

El nombre de su solucionador. Especifique esta propiedad para anular el valor LogicalId.

Tipo: cadena

Obligatorio: no

AWS CloudFormation compatibilidad: esta propiedad se pasa directamente a la FieldName propiedad de un AWS::AppSync::Resolver recurso.

InlineCode

El código de solucionador que contiene las funciones de solicitud y respuesta.

Si no InlineCode se proporciona CodeUri ninguna de ellas, se AWS SAM generará un InlineCode generador que redireccionará la solicitud a la primera función de canalización y recibirá la respuesta de la última función de canalización.

Tipo: cadena

Obligatorio: no

AWS CloudFormation compatibilidad: esta propiedad se transfiere directamente a la Code propiedad de un AWS::AppSync::Resolver recurso.

LogicalId

El nombre único para su solucionador. En un esquema GraphQL, el nombre del solucionador debe coincidir con el nombre del campo para el que se usa. Use el mismo nombre de campo para LogicalId.

Tipo: cadena

Obligatorio: sí

AWS CloudFormation compatibilidad: esta propiedad es exclusiva AWS SAM y no tiene un AWS CloudFormation equivalente.

MaxBatchSize

El número máximo de entradas de solicitud de resolución que se enviarán a una sola función de AWS Lambda en una operación de BatchInvoke.

Tipo: entero

Obligatorio: no

AWS CloudFormation compatibilidad: esta propiedad se pasa directamente a la MaxBatchSize propiedad de un AWS::AppSync::Resolver recurso.

OperationType

El tipo de operación GraphQL que está asociado al solucionador. Por ejemplo, Query, Mutation o Subscription. Puede agrupar varios solucionadores LogicalId en un solo OperationType.

Tipo: cadena

Obligatorio: sí

AWS CloudFormation compatibilidad: esta propiedad se pasa directamente a la TypeName propiedad de un AWS::AppSync::Resolver recurso.

Pipeline

Funciones vinculadas con el solucionador de canalización. Especifique las funciones mediante un identificador lógico en una lista.

Tipo: lista

Obligatorio: sí

AWS CloudFormation compatibilidad: esta propiedad es exclusiva AWS SAM y no tiene un AWS CloudFormation equivalente. Es similar a la propiedad PipelineConfig de un recurso AWS::AppSync::Resolver.

Runtime

El tiempo de ejecución de su función o solucionador de canalización. Especifica el nombre y la versión que se utilizará.

Tipo: tiempo de ejecución

Obligatorio: sí

AWS CloudFormation compatibilidad: esta propiedad es exclusiva AWS SAM y no tiene un AWS CloudFormation equivalente. Es similar a la propiedad Runtime de un recurso AWS::AppSync::Resolver.

Sync

Describe una configuración de sincronización para un solucionador.

Especifica la estrategia de detección de conflictos y la estrategia de resolución que se utilizará cuando se invoque el resolver.

Tipo: SyncConfig

Obligatorio: no

AWS CloudFormation compatibilidad: esta propiedad se pasa directamente a la SyncConfig propiedad de un AWS::AppSync::Resolver recurso.

Ejemplos

Utilice el código de la función de resolución AWS SAM generado y guarde los campos como variables

Este es el esquema GraphQL de nuestro ejemplo:

schema { query: Query mutation: Mutation } type Query { getPost(id: ID!): Post } type Mutation { addPost(author: String!, title: String!, content: String!): Post! } type Post { id: ID! author: String title: String content: String }

Aquí hay un fragmento de nuestra AWS SAM plantilla:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyGraphQLApi: Type: AWS::Serverless::GraphQLApi Properties: ... Functions: preprocessPostItem: ... createPostItem: ... Resolvers: Mutation: addPost: Runtime: Name: APPSYNC_JS Version: 1.0.0 Pipeline: - preprocessPostItem - createPostItem

En nuestra AWS SAM plantilla, no CodeUri especificamos o. InlineCode En el momento de la implementación, genera AWS SAM automáticamente el siguiente código en línea para nuestro solucionador:

export function request(ctx) { return {}; } export function response(ctx) { return ctx.prev.result; }

Este código de solucionador predeterminado redirige la solicitud a la primera función de canalización y recibe la respuesta de la última función de canalización.

En nuestra primera función de canalización, podemos usar el campo args proporcionado para analizar el objeto de solicitud y crear nuestras variables. Luego podemos usar estas variables dentro de nuestra función. A continuación, se muestra un ejemplo de nuestra función preprocessPostItem:

import { util } from "@aws-appsync/utils"; export function request(ctx) { const author = ctx.args.author; const title = ctx.args.title; const content = ctx.args.content; // Use variables to process data } export function response(ctx) { return ctx.result; }