# How to do a (serverless) web redirection in AWS Route53?

Imagine you are using a DNS provider and you have a domain [example.com](http://example.com) and [example.net](http://example.net) redirecting to [example.com](http://example.com). It's pretty easy to set up.

One day you migrate to AWS Route53 because you want geolocation, load balancing, or something of the sort. And disaster! There is no web redirection.

With this article, you will know how to solve that and set up a serverless web redirection at a low cost and a little effort.

# Steps

## 1\. Lambda

Please find below an example of a NodeJS lambda:

```javascript
export const handler = async(event) => {
    const res = {
        statusCode: 301,
         headers: {
            Location: 'https://example.com'
        }
    };
    return res;
};
```

and Python

```python
def lambda_handler(event, context):

    return {
        "statusCode": 301,
        "headers": {
            'Location': "https://example.com"
        }
    }
```

## 2\. API Gateway

* Select a `REST API` (\*\*not Private \*\*)
    
* In the next page,
    
    * confirm `REST API`, not Websocket
        
    * create a `New API`
        
    * give it a name like web-redirection
        
    * endpoint type select `Edge Optimized`
        
* In the API detail page,
    
    * Click on `Actions` and select `Create Method`
        
    * Select `GET` method under the path / and confirm
        
* In the / GET method details,
    
    * Select the lambda you created in the first section and save.
        
* Finally, publish the API by clicking on `Actions` &gt; `Deploy API`
    
    * Enter a stage name for your deployment something like `production`
        

## 3\. Custom Domain Name

* Still in the API Gateway service, click on  `Custom Domain Names`
    
* For each domain you want to redirect, Create a Custom Domain Name
    
    * Select `Edge Optimized` to match the API Gateway we created above
        
    * And select (or create) a certificate that matches the domain
        
* Once created, setup API mapping to the API gateway we created before with no path required
    

## 4\. CloudFront

* Go to CloudFront and create a distribution
    
* Do not define any alternate domain, and no certificate
    
* For the origin enter the API gateway endpoint and specify for the origin path `/prod` as the stage name you defined earlier
    

## 5\. Route53

* Add a Route53 record on the domain
    
* And point at the CloudFront from the previous section
    

# Conclusion

Go to your domain [example.net](http://example.net) and validate that the redirection to [example.com](http://example.com) is working!
