Skip to content
GitHubXDiscord

Resolver

The Resolver resource lets you manage AWS AppSync Resolvers for connecting GraphQL operations to data sources.

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)
`
});

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)
`
});

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)
`
});

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.