-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
317149a
commit 47430b0
Showing
5 changed files
with
55 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -77,4 +77,3 @@ cdk.out | |
|
||
# Used during the publish stage | ||
.npmignore | ||
*.tgz |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,53 @@ | ||
# Geo-IP Redirect | ||
This library provides a construct which creates a Lambda@Edge functions to perform GeoIP redirects. | ||
# Geo-IP Redirect | ||
|
||
These functions are intended to be added to an existing Cloudfront distribution | ||
![TypeScript version](https://img.shields.io/github/package-json/dependency-version/aligent/cdk-constructs/dev/typescript?filename=packages/geoip-redirect/package.json&color=red) ![AWS CDK version](https://img.shields.io/github/package-json/dependency-version/aligent/cdk-constructs/dev/aws-cdk?filename=packages/geoip-redirect/package.json) ![NPM version](https://img.shields.io/npm/v/%40aligent%2Fcdk-geoip-redirect?color=green) | ||
|
||
## Overview | ||
|
||
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. | ||
|
||
## Usage and Default Geo-IP Redirect options | ||
|
||
### `redirectHost` (string) | ||
|
||
``` | ||
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 | | ||
|
||
### Using this package | ||
|
||
The two main ways you can use this package are as follows: | ||
First off your website has a basic domain let's say `www.iamawesome.com` and you serve all content for all regions of the world here such as `www.iamawesome.com/us` or `www.iamawesome.com/au`. For this approach you should use the below method | ||
|
||
``` | ||
redirectBehaviourOptions: { | ||
defaultDomain: "www.iamawesome.com", | ||
defaultRegionCode: "AU|US", | ||
} | ||
``` | ||
|
||
Any region codes that are regexed to be `XX|YY` (note the pipe `|`) will automatically add the matching region as a path suffix to the url. | ||
|
||
However perhaps you also have `www.iamawesome.co.nz`. How to redirect to a website that is different from the base domain? To achieve this, 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_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.