Résolveur - AWS Serverless Application Model

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolveur

Configurez des résolveurs pour les champs de votre GraphQL API. AWS Serverless Application Model (AWS SAM) prend en charge les résolveurs de JavaScript pipeline.

Syntaxe

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.

YAML

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

Propriétés

Caching

La configuration de mise en cache pour un résolveur dont la mise en cache est activée.

Type : CachingConfig

Obligatoire : non

AWS CloudFormation compatibilité : cette propriété est transmise directement à la CachingConfig propriété d'une AWS::AppSync::Resolver ressource.

CodeUri

L'URI ou le chemin d'accès à un dossier local d'Amazon Simple Storage Service (Amazon S3) du code de la fonction de résolution.

Si vous spécifiez un chemin d'accès à un dossier local, le fichier AWS CloudFormation doit d'abord être chargé sur Amazon S3 avant le déploiement. Vous pouvez utiliser la CLI  AWS SAM pour faciliter ce processus. Pour plus d’informations, consultez Comment télécharger des fichiers locaux lors du déploiement avec AWS SAMCLI.

Si aucun CodeUri des deux InlineCode n'est fourni, AWS SAM générera InlineCode qui redirigera la demande vers la première fonction de pipeline et recevra la réponse de la dernière fonction de pipeline.

Type : chaîne

Obligatoire : non

AWS CloudFormation compatibilité : cette propriété est transmise directement à la CodeS3Location propriété d'une AWS::AppSync::Resolver ressource.

FieldName

Le nom de votre résolveur. Spécifiez cette propriété pour remplacer la valeur LogicalId.

Type : chaîne

Obligatoire : non

AWS CloudFormation compatibilité : cette propriété est transmise directement à la FieldName propriété d'une AWS::AppSync::Resolver ressource.

InlineCode

Code de votre résolveur contenant les fonctions de demande et de réponse.

Si aucun CodeUri des deux InlineCode n'est fourni, AWS SAM générera InlineCode qui redirigera la demande vers la première fonction de pipeline et recevra la réponse de la dernière fonction de pipeline.

Type : chaîne

Obligatoire : non

AWS CloudFormation compatibilité : cette propriété est transmise directement à la Code propriété d'une AWS::AppSync::Resolver ressource.

LogicalId

Le nom unique de votre résolveur. Dans un schéma GraphQL, le nom de votre résolveur doit correspondre au nom du champ pour lequel il est utilisé. Utilisez le même nom de champ pour LogicalId.

Type : chaîne

Obligatoire : oui

AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent.

MaxBatchSize

Le nombre maximal d'entrées de requêtes de résolveur qui seront envoyées à une seule fonction AWS Lambda dans une opération BatchInvoke.

Type : entier

Obligatoire : non

AWS CloudFormation compatibilité : cette propriété est transmise directement à la MaxBatchSize propriété d'une AWS::AppSync::Resolver ressource.

OperationType

Type d'opération GraphQL associé à votre résolveur. Par exemple, Query, Mutation ou Subscription. Vous pouvez imbriquer plusieurs résolveurs LogicalId au sein d'un même OperationType.

Type : chaîne

Obligatoire : oui

AWS CloudFormation compatibilité : cette propriété est transmise directement à la TypeName propriété d'une AWS::AppSync::Resolver ressource.

Pipeline

Fonctions liées avec le résolveur de pipeline. Spécifiez les fonctions par ID logique dans une liste.

Type : liste

Obligatoire : oui

AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent. Elle est similaire à la propriété PipelineConfig d'une ressource AWS::AppSync::Resolver.

Runtime

Le temps d'exécution de votre résolveur ou de votre fonction de pipeline. Spécifie le nom et la version à utiliser.

Type : Temps d'exécution

Obligatoire : oui

AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent. Elle est similaire à la propriété Runtime d'une propriété AWS::AppSync::Resolver.

Sync

Décrit une configuration Sync pour un résolveur.

Spécifie la stratégie de détection de conflits et de résolution à utiliser lorsque le résolveur est appelé.

Type : SyncConfig

Obligatoire : non

AWS CloudFormation compatibilité : cette propriété est transmise directement à la SyncConfig propriété d'une AWS::AppSync::Resolver ressource.

Exemples

Utilisez le code de fonction de résolution AWS SAM généré et enregistrez les champs sous forme de variables

Voici le schéma GraphQL de notre exemple :

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 }

Voici un extrait de notre AWS SAM modèle :

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

Dans notre AWS SAM modèle, nous ne spécifions pas CodeUri ouInlineCode. Lors du déploiement, génère AWS SAM automatiquement le code en ligne suivant pour notre résolveur :

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

Ce code de résolution par défaut redirige la demande vers la première fonction de pipeline et reçoit la réponse de la dernière fonction de pipeline.

Dans notre première fonction de pipeline, nous pouvons utiliser le champ args fourni pour analyser l'objet de la requête et créer nos variables. Nous pouvons ensuite utiliser ces variables dans notre fonction. Voici un exemple de notre fonction 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; }