Skip to content

FunctionConfiguration ​

The FunctionConfiguration resource allows you to define and manage AWS AppSync FunctionConfigurations that are used to handle request and response mapping templates for AWS AppSync resolvers.

Minimal Example ​

Create a basic FunctionConfiguration with required properties and a common optional property.

ts
import AWS from "alchemy/aws/control";

const basicFunctionConfig = await AWS.AppSync.FunctionConfiguration("basicFunctionConfig", {
  apiId: "myApiId",
  name: "MyFunction",
  dataSourceName: "myDataSource",
  requestMappingTemplate: "{ \"version\": \"2018-05-29\", \"operation\": \"Query\" }",
  responseMappingTemplate: "$util.toJson($ctx.result)"
});

Advanced Configuration ​

Configure a FunctionConfiguration with additional options such as a maximum batch size and a description.

ts
const advancedFunctionConfig = await AWS.AppSync.FunctionConfiguration("advancedFunctionConfig", {
  apiId: "myApiId",
  name: "AdvancedFunction",
  dataSourceName: "myDataSource",
  requestMappingTemplate: "{ \"version\": \"2018-05-29\", \"operation\": \"GetItem\" }",
  responseMappingTemplate: "$util.toJson($ctx.result)",
  maxBatchSize: 10,
  description: "This function handles complex queries."
});

Using S3 for Mapping Templates ​

Demonstrate how to specify S3 locations for the request and response mapping templates.

ts
const s3FunctionConfig = await AWS.AppSync.FunctionConfiguration("s3FunctionConfig", {
  apiId: "myApiId",
  name: "S3Function",
  dataSourceName: "myDataSource",
  requestMappingTemplateS3Location: "s3://my-bucket/request-mapping-template.vtl",
  responseMappingTemplateS3Location: "s3://my-bucket/response-mapping-template.vtl"
});

Incorporating Sync Configurations ​

Show how to include a sync configuration in the FunctionConfiguration.

ts
const syncConfigFunctionConfig = await AWS.AppSync.FunctionConfiguration("syncConfigFunctionConfig", {
  apiId: "myApiId",
  name: "SyncConfigFunction",
  dataSourceName: "myDataSource",
  requestMappingTemplate: "{ \"version\": \"2018-05-29\", \"operation\": \"Query\" }",
  responseMappingTemplate: "$util.toJson($ctx.result)",
  syncConfig: {
    conflictHandler: "AUTOMERGE",
    conflictDetection: "VERSION"
  }
});