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'uneAWS::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 AWS SAM télécharge les fichiers locaux lors du déploiement.
Si aucun
CodeUri
des deuxInlineCode
n'est fourni, AWS SAM généreraInlineCode
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'uneAWS::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'uneAWS::AppSync::Resolver
ressource. InlineCode
-
Code de votre résolveur contenant les fonctions de demande et de réponse.
Si aucun
CodeUri
des deuxInlineCode
n'est fourni, AWS SAM généreraInlineCode
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'uneAWS::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'uneAWS::AppSync::Resolver
ressource. OperationType
-
Type d'opération GraphQL associé à votre résolveur. Par exemple,
Query
,Mutation
ouSubscription
. Vous pouvez imbriquer plusieurs résolveursLogicalId
au sein d'un mêmeOperationType
.Type : chaîne
Obligatoire : oui
AWS CloudFormation compatibilité : cette propriété est transmise directement à la
TypeName
propriété d'uneAWS::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 ressourceAWS::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'uneAWS::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; }