Skip to content
GitHubXDiscord

Function

The Function resource allows you to create, update, and manage AWS CloudFront Functions for lightweight serverless code execution at the edge.

Create a basic CloudFront Function with required properties and one optional property.

import AWS from "alchemy/aws/control";
const myFunction = await AWS.CloudFront.Function("myFunction", {
Name: "MyEdgeFunction",
FunctionCode: "function handler(event) { return event; }",
FunctionConfig: {
Comment: "A simple edge function",
Runtime: "cloudfront-js-1.0"
},
AutoPublish: true // Automatically publish the function upon creation
});

Configure a CloudFront Function with metadata and additional settings.

const advancedFunction = await AWS.CloudFront.Function("advancedFunction", {
Name: "AdvancedEdgeFunction",
FunctionCode: "function handler(event) { return event; }",
FunctionConfig: {
Comment: "An advanced edge function with custom settings",
Runtime: "cloudfront-js-1.0",
MemorySize: 512 // Memory size in MB for the function
},
FunctionMetadata: {
CreatedBy: "user@example.com",
LastUpdatedBy: "user@example.com"
},
AutoPublish: true // Automatically publish the function upon creation
});

Create a CloudFront Function that adopts an existing resource if it already exists.

const adoptFunction = await AWS.CloudFront.Function("adoptFunction", {
Name: "AdoptedEdgeFunction",
FunctionCode: "function handler(event) { return event; }",
FunctionConfig: {
Comment: "This function adopts an existing resource",
Runtime: "cloudfront-js-1.0"
},
adopt: true // Adopt existing resource instead of failing
});

Update an existing CloudFront Function with new code and configuration.

const updatedFunction = await AWS.CloudFront.Function("updatedFunction", {
Name: "UpdatedEdgeFunction",
FunctionCode: "function handler(event) { /* new logic */ return event; }",
FunctionConfig: {
Comment: "Updated edge function logic",
Runtime: "cloudfront-js-1.0"
},
AutoPublish: true // Publish the updated function
});