Building [uptime monitoring](https://httpscop.com) in https cop required me to deploy lambdas to multiple regions and this is my first introduction to the serverless world. I know of a very handy tool [Up](https://github.com/apex/up) to deploy to AWS Lambdas using a CLI without any hassle at all but it doesn’t support deploying to multiple regions at the time of writing (`Up version v0.5.0`).
After exchanging a few tweets with [TJ](https://twitter.com/tjholowaychuk) (creator of Up) I got to know I can specify `AWS_REGION` as an environment variable while calling Up and that will do the trick. Simply put, instead of defining regions in your `up.json` file, you can specify it at the time of invoking the command, like `AWS_REGION=us-east-1 up`.
So, one can (I did) write a bash script to do the deployments to all regions they desire at will.
Here is a quick [list of all regions](https://docs.aws.amazon.com/general/latest/gr/rande.html) where you can deploy with AWS Lambda:
US East (Ohio) | us-east-2 |
US East (N. Virginia) | us-east-1 |
US West (N. California) | us-west-1 |
US West (Oregon) | us-west-2 |
Asia Pacific (Tokyo) | ap-northeast-1 |
Asia Pacific (Seoul) | ap-northeast-2 |
Asia Pacific (Mumbai) | ap-south-1 |
Asia Pacific (Singapore) | ap-southeast-1 |
Asia Pacific (Sydney) | ap-southeast-2 |
Canada (Central) | ca-central-1 |
China (Beijing) | cn-north-1 |
EU (Frankfurt) | eu-central-1 |
EU (Ireland) | eu-west-1 |
EU (London) | eu-west-2 |
EU (Paris) | eu-west-3 |
South America (Sao Paulo) | sa-east-1 |
Pick the locations and make changes in the following bash script (remove or comment out the regions that you don’t want):
#!/usr/bin/env bash | |
declare -a regions=( | |
us-east-2 #US East (Ohio) | |
us-east-1 #US East (N. Virginia) | |
us-west-1 #US West (N. California) | |
us-west-2 #US West (Oregon) | |
ap-northeast-1 #Asia Pacific (Tokyo) | |
ap-northeast-2 #Asia Pacific (Seoul) | |
ap-south-1 #Asia Pacific (Mumbai) | |
ap-southeast-1 #Asia Pacific (Singapore) | |
ap-southeast-2 #Asia Pacific (Sydney) | |
ca-central-1 #Canada (Central) | |
cn-north-1 #China (Beijing) | |
eu-central-1 #EU (Frankfurt) | |
eu-west-1 #EU (Ireland) | |
eu-west-2 #EU (London) | |
eu-west-3 #EU (Paris) | |
sa-east-1 #South America (Sao Paulo) | |
) | |
for region in “${regions[@]}” | |
do | |
echo “Deploying to $region” | |
AWS_REGION=$region up | |
echo “Deployed: ” $(AWS_REGION=$region up url) | |
echo # echo new line | |
done |
Hope that helps you ship!
P.S. – If you need all AWS Lambdas plotted on a map to see their geographical location, here you go:
Leave a Reply