Introduction
AWS CloudFront functions as a content delivery network, mitigating network latency between users and the origin server to efficiently serve media. However, users may have specific requirements, such as implementing business logic on requests or redirecting certain requests to alternative locations. Is CloudFront equipped to handle these scenarios?
The answer is affirmative. AWS CloudFront incorporates advanced features, and one such capability is AWS CloudFront Functions.
CloudFront functions are designed to empower CloudFront users with the ability to apply customized business logic to the ongoing requests processed by AWS CloudFront. These lightweight functions are adept at executing small, efficient tasks at the edge locations during the processing of active requests. Okay, now we know what Cloudfront functions are but to understand more let's look at some use cases.
When to use CloudFront functions?
Let's consider a scenario where I own a blogging website, and within my CloudFront distribution, there exists a behavior entry designated as "/aws." This configuration dictates that any request directed to CloudFront with a path matching "/aws" should be forwarded to the S3 bucket configured for hosting all blogs related to AWS. Now, suppose I encounter a situation where I need to redirect all incoming requests targeting the "/aws" path to a new origin, but, at the moment, I prefer not to modify the existing origin configured in CloudFront. How can I accomplish this task?
In this situation, leveraging the capabilities of CloudFront Functions proves beneficial. By creating a CloudFront function, I can establish a condition within the function specifying that whenever the requested URL path begins with "/aws," the function should generate a 302 redirection response. This approach ensures that users are seamlessly redirected to the new content without necessitating alterations to the existing origin configuration on CloudFront.
What CloudFront Functions can do?
1. Modify incoming HTTP request
With CloudFront functions, you can perform request modifications like sending a 302 redirection or changing the origin based on certain logic you can execute modifications to requests, such as initiating a 302 redirection or adjusting the origin by specific logical criteria.
2. Modify incoming HTTP response
You also can alter the outgoing request by adjusting security headers or dispatching a customized response.
Charges for using the CloudFront function?
As AWS adheres to the pay-as-you-go model, the cost structure for CloudFront Functions is likewise based on usage. Users incur charges by the number of function executions. Given the lightweight nature of CloudFront Functions in comparison to Lambda@Edge, the associated costs are correspondingly lower.
It is advisable to consult the official AWS documentation for a comprehensive understanding of the cost model, as these charges are governed by AWS.
Here are the AWS docs mentioning the CloudFront function charges - Docs
You can also calculate the tentative cost using the AWS calculator
Limitations of CloudFront function
So, now we know about CloudFront function but until and unless we don't know its limitations our information is incomplete. So below are the limitations of the CloudFront function.
1. Language Support
As of now, CloudFront functions exclusively support JavaScript. If you are familiar with Lambda@Edge, you may be aware of the language options it provides. However, it's essential to note that AWS CloudFront functions currently offer only JavaScript as the language option.
2. No external library support
CloudFront functions do not permit the inclusion of external libraries in your code. It is necessary to develop your code utilizing the libraries offered by AWS. While this design choice is intended to maintain the lightweight nature of the function, it can also be considered a limitation. If there is a requirement for importing external libraries, one would need to resort to using Lambda@Edge functions instead.
3. Only two event association
In contrast to Lambda@Edge, CloudFront functions are limited to association with two events: viewer request and viewer response. Lambda@Edge, on the other hand, offers broader association capabilities, allowing attachment to four events: viewer request, viewer response, origin request, and origin response.
4. Lightweight
While the lightweight nature of CloudFront functions is advantageous, it also imposes limitations. CloudFront functions are primarily suitable for simple operations. In contrast, utilizing Lambda@Edge provides the flexibility to execute more intricate logic, including database operations.
Similar Topics
Learn how to perform redirections using cloudfront function - Blog
Understand how AWS Cloudfront caches the content - Blog