I'm going to walk you through the steps for setting up a AWS Lambda to talk to the internet and a VPC. Let's dive in.
So it might tbe really unintuitive but lambda functions have three states.
- No VPC, where it can talk openly to the web, but can't talk to any of your AWS services.
- VPC, the default setting where the lambda function can talk to your AWS services but can't talk to the web.
- VPC with NAT, The best of both worlds, AWS services and web.
This is where your gonna edit the setting for the lambda to enable VPC and set the subnets.
VPC Dashboard > Subnets
Here I noticed I had a couple of subnets already set up. Below is a totally fake ip I pulled from the internet. But the patten of increments of 16 is recreated here.
Note: DO NOT use
131.179.0.0/16as your number use your vpc local ip and substitute the pattern.
| VPC | CIDR |
|---|---|
| vpc-████████ (131.179.0.0/16) | 131.179.0.0/20 |
| vpc-████████ (131.179.0.0/16) | 131.179.16.0/20 |
| vpc-████████ (131.179.0.0/16) | 131.179.32.0/20 |
| vpc-████████ (131.179.0.0/16) | 131.179.48.0/20 |
Here I created three four new subnets.
| VPC | CIDR | name |
|---|---|---|
| vpc-████████ (131.179.0.0/16) | 131.179.64.0/20 | lambda-subnet-point-to-nat-1 |
| vpc-████████ (131.179.0.0/16) | 131.179.80.0/20 | lambda-subnet-point-to-nat-2 |
| vpc-████████ (131.179.0.0/16) | 131.179.96.0/20 | lambda-subnet-point-to-nat-3 |
| vpc-████████ (131.179.0.0/16) | 131.179.112.0/20 | lambda-subnet-point-to-igw |
Note: Here
igwstands forInternet Gatewayandnatstands fornetwork address translation gateway (NAT Gateway).
Three of them will point to the nat and one points to the igw.
Your going to want to set up two routing tables
One that points to your nat:
| Destination | Target |
|---|---|
| 131.179.0.0/16 | local |
| 0.0.0.0/0 | nat-█████████████████ |
One that points to your igw:
| Destination | Target |
|---|---|
| 131.179.0.0/16 | local |
| 0.0.0.0/0 | igw-████████ |