I'm using AWS ECS to host my services. When I try to define task with fargate, I'm getting this below problem.
CannotPullContainerError: API error (500): Get https://xxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Further I gave full permissions to access ECR in the IAM user as well. Please help me to sort out this problem.
I've already answered this here, but copy-paste does not hurt.
The specification for creating a working NAT Gateway is lacking. At the GitHub issue Amazon technicians keep repeating you "just" need Private IP + NAT, however this is not true. I struggled with this myself a lot, but finally got it working properly without using a Public IP for my Fargate services.
To have Fargate services access internet without having a Public IP you need to set up a VPC which has 2 subnets:
You can create such a VPC in 2 ways: by going to Services
> VPC
> VPC Dashboard
, clicking on Launch VPC Wizard
and selecting "VPC with Public and Private Subnets"
; or manually:
NOTE: All of the following steps are performed in Services
> VPC
Your VPCs
and Create a VPC
Subnets
and Create subnet
2 times
private
subnet
public
subnet
Internet Gateways
and Create internet gateway
Internet Gateway
, Actions
, Attach to VPC
and attach it to the VPC in focusNAT Gateways
and Create NAT Gateway
public
subnetCreate New EIP
or use an existing one given that you have oneAvailable
Route Tables
and Create route table
2 times
private
route table
Routes
tab on the bottom, Edit routes
Add route
, destination: 0.0.0.0/0
, target the NAT Gateway created previously and Save routes
Actions
and Set Main Route Table
(if not already)public
route table
Routes
tab on the bottom, Edit routes
Add route
, destination: 0.0.0.0/0
, target the Internet Gateway created previously and Save routes
Subnet Associations
tab on the bottom, Edit subnet associations
public
subnet, Save
Every service you put in the public
subnet will have bidirectional internet access and every service you put in the private
subnet will have only outgoing internet access (yes, Fargate and EC2 services in the private
subnet without Public IPs will have internet access).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With