This library provides a construct which creates a Lambda@Edge which is intended to be attached to the Origin Request in a CloudFront distribution. The construct allows a CloudFront website to perform GeoIP redirects to redirect users to a version of the website related to their location such as .com
.com.au
or .co.nz
etc.
The Lambda@Edge function will check if the viewer's country code matches any supported regions. The user's country code for each request is pulled from the cloudfront-viewer-country
. The construct will match the code to the record with the corresponding regex lookup.
interface RedirectFunctionOptions {
supportedRegions?: Record<string, DomainOverwrite>;
defaultRegionCode: string;
defaultDomain: string;
}
Property | Definition |
---|---|
supportedRegions |
A record with domain codes as a key (regex) and a domain to redirect to as a value |
defaultRegionCode |
The default region code(s) as regex. These are the regions supported by defaultDomain . When multiple codes are used the default will be the first code the default site eg. AU,NZ will treat AU as the default |
defaultDomain |
The website's main domain. This will act as a fallback for any unsupported regions |
enablePathRedirect |
Will toggle adding a path suffix for a region such as .com/au or whether it should just be .com |
The two main ways you can use this package are as follows:
First off your website has a basic domain let's say www.aligent.com.au
and you serve all content for all regions of the world here such as www.aligent.com.au/au
or www.aligent.com.au/nz
. For this approach you should use the below method
redirectBehaviourOptions: {
defaultDomain: "www.iamawesome.com/au",
defaultRegionCode: "AU,NZ",
}
Any region codes that are regexed to be XX,YY
(note the comma ,
) will automatically add the matching region as a path suffix to the url.
However in order to redirect to a website that is different from the base domain such as www.aligent.co.nz
you can "hardcode" a domain for a region to use by using the supportedRegions
value.
redirectBehaviourOptions: {
defaultDomain: "www.example.com",
defaultRegionCode: "AU,US",
supportedRegions: { "NZ": "www.example.co.nz" }
}
this package has not been tested with interplanetary domains