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