Solucionador
Configura los solucionadores para los campos de su API GraphQL. AWS Serverless Application Model (AWS SAM) admite solucionadores de canalizaciones de JavaScript.
Sintaxis
Para declarar esta entidad en su plantilla de AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis:
YAML
OperationType:LogicalId: Caching:CachingConfigCodeUri:StringFieldName:StringInlineCode:StringMaxBatchSize:IntegerPipeline:ListRuntime:RuntimeSync:SyncConfig
Propiedades
Caching-
La configuración de almacenamiento en caché para un solucionador que tiene la caché activada.
Type: CachingConfig
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
CachingConfigde un recursoAWS::AppSync::Resolver. 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, CloudFormation requiere que el archivo se cargue primero en Amazon S3 antes de la implementación. Puedes utilizar la AWS SAM CLI para facilitar este proceso. Para obtener más información, consulta Cómo AWS SAM carga archivos locales en el momento de la implementesción.
Si no se proporciona
CodeUrioInlineCode, AWS SAM generará un generadorInlineCodeque 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
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
CodeS3Locationde un recursoAWS::AppSync::Resolver. FieldName-
El nombre de su solucionador. Especifica esta propiedad para anular el valor
LogicalId.Tipo: cadena
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
FieldNamede un recursoAWS::AppSync::Resolver. InlineCode-
El código de solucionador que contiene las funciones de solicitud y respuesta.
Si no se proporciona
CodeUrioInlineCode, AWS SAM generará un generadorInlineCodeque 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
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
Codede un recursoAWS::AppSync::Resolver. 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. Usa el mismo nombre de campo para
LogicalId.Tipo: cadena
Obligatorio: sí
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
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
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
MaxBatchSizede un recursoAWS::AppSync::Resolver. OperationType-
El tipo de operación GraphQL que está asociado al solucionador. Por ejemplo,
Query,MutationoSubscription. Puede agrupar varios solucionadoresLogicalIden un soloOperationType.Tipo: cadena
Obligatorio: sí
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
TypeNamede un recursoAWS::AppSync::Resolver. Pipeline-
Funciones vinculadas con el solucionador de canalización. Especifica las funciones mediante un identificador lógico en una lista.
Tipo: lista
Obligatorio: sí
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation. Es similar a la propiedad
PipelineConfigde un recursoAWS::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í
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation. Es similar a la propiedad
Runtimede un recursoAWS::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.
Type: SyncConfig
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
SyncConfigde un recursoAWS::AppSync::Resolver.
Ejemplos
Utilice el código de la función de solucionador 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 }
Este es un fragmento de nuestra plantilla de AWS SAM:
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 plantilla de AWS SAM, no especificamos CodeUri ni InlineCode. En el momento de la implementación, AWS SAM genera 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; }