They provide private access to supported services. Currently DynamoDB and S3 are supported
A private only resource inside VPC can access public services using Gateway Endpoints
Gateway end points need to be created per service per region
A Gateway is attached to a VPC. This results in a Prefix List being added to route table. The prefix list has Gateway Endpoint as target
One needs to specify which subnets are going to use the gateway
An Endpoint Policy can be used to control access. E.g. only access certain buckets within S3
Gateway end points can't access cross region services
A bucket policy can be configured to allow access from a specific gateway end making the S3 bucket private only
Gateway Endpoints are not accessible outside VPC they are defined in
Interfaces Endpoints
Provide private access to AWS public services.
All services except DynamoDB are supported
Not highly available by default as they Interface Endpoints are added to specific subnets
One Interface Endpoint is required for each Subnet
Security Groups can be used to allow access unlike Gateway Endpoints. Endpoint Policies can still be used to restrict what can be done with the endpoint
Support TCP and IPV4 only. Behind the scene they use PrivateLink which helps inject AWS as well as 3rd party services directly into VPC
Interface Endpoints do not use prefix list, they use DNS. i.e. each service gets a new service endpoint DNS
Each endpoint gets a Regional DNS as well as Zonal DNS
Additionally they get Private DNS which associates a R53 Private Zone with VPC. This means the default DNS of the service, automatically resolves to private endpoint