Resolver
The Resolver resource lets you manage AWS AppSync Resolvers for connecting GraphQL operations to data sources.
Minimal Example
Section titled “Minimal Example”Create a basic AppSync resolver with required properties and a common optional property:
import AWS from "alchemy/aws/control";
const basicResolver = await AWS.AppSync.Resolver("basicResolver", { TypeName: "Query", FieldName: "getUser", ApiId: "your-api-id", DataSourceName: "UserDataSource", RequestMappingTemplate: ` { "version": "2017-02-28", "operation": "GetItem", "key": { "id": $util.dynamodb.toDynamoDBJson($ctx.args.id) } } `, ResponseMappingTemplate: ` $util.toJson($ctx.result) `});
Advanced Configuration
Section titled “Advanced Configuration”Configure a resolver with additional options, including caching and a pipeline configuration:
import AWS from "alchemy/aws/control";
const advancedResolver = await AWS.AppSync.Resolver("advancedResolver", { TypeName: "Mutation", FieldName: "createUser", ApiId: "your-api-id", DataSourceName: "UserDataSource", MaxBatchSize: 10, CachingConfig: { Ttl: 300, CacheKeys: ["$ctx.args.id"] }, RequestMappingTemplate: ` { "version": "2017-02-28", "operation": "PutItem", "key": { "id": $util.dynamodb.toDynamoDBJson($ctx.args.id) }, "attributeValues": { "name": $util.dynamodb.toDynamoDBJson($ctx.args.name), "email": $util.dynamodb.toDynamoDBJson($ctx.args.email) } } `, ResponseMappingTemplate: ` $util.toJson($ctx.result) `});
Pipeline Resolver Example
Section titled “Pipeline Resolver Example”Create a resolver that utilizes a pipeline configuration to handle complex logic:
import AWS from "alchemy/aws/control";
const pipelineResolver = await AWS.AppSync.Resolver("pipelineResolver", { TypeName: "Query", FieldName: "searchUsers", ApiId: "your-api-id", DataSourceName: "UserDataSource", PipelineConfig: { Functions: ["function1", "function2"] }, RequestMappingTemplate: ` $util.toJson($ctx.args) `, ResponseMappingTemplate: ` $util.toJson($ctx.result) `});
Using S3 for Mapping Templates
Section titled “Using S3 for Mapping Templates”Leverage S3 for storing request and response mapping templates:
import AWS from "alchemy/aws/control";
const s3Resolver = await AWS.AppSync.Resolver("s3Resolver", { TypeName: "Mutation", FieldName: "updateUser", ApiId: "your-api-id", DataSourceName: "UserDataSource", RequestMappingTemplateS3Location: "s3://your-bucket/request-mapping-template.vtl", ResponseMappingTemplateS3Location: "s3://your-bucket/response-mapping-template.vtl"});
This document provides a comprehensive overview of how to manage AWS AppSync Resolvers using Alchemy, showcasing different configurations and use cases for effective integration with your GraphQL APIs.