AWS uses the words public and private in a networking sense. Public does not mean unauthenticated, and private does not automatically mean secure.
A public AWS service is reachable through public AWS service endpoints. Amazon S3 is the classic example. You can reach the S3 endpoint from the internet, from an on-premises network with internet access, or from a VPC that has a path to that endpoint. Whether a principal can read an object is still controlled by identity and resource policies.
A private AWS service runs inside a VPC or is exposed only through private network paths. Amazon EC2, Amazon RDS, and many VPC-based endpoints are examples.
Network Zones
flowchart LR Internet["Public internet"] AwsPublic["AWS public service zone<br/>public endpoints such as S3"] VPC["AWS private zone<br/>VPC"] PrivateSvc["Private service<br/>EC2, RDS, internal ALB"] IAM["IAM / resource policy<br/>authorization"] Internet <--> AwsPublic VPC <--> AwsPublic VPC --> PrivateSvc IAM -. "authorizes API/resource access" .-> AwsPublic IAM -. "authorizes supported private resources" .-> PrivateSvc
The important separation is:
- Network reachability answers: can packets reach the endpoint?
- Authorization answers: is the caller allowed to perform the action?
You usually need both. A principal might be authorized to call S3 but lack network reachability. Another principal might have network reachability to a public endpoint but no IAM permission.
Public AWS Service
Public AWS services use public endpoints. This does not mean customer data is public. It means the service endpoint exists in the AWS public network and can be reached from networks with a route to it.
Common examples include:
- Amazon S3
- AWS STS
- IAM
- CloudWatch public APIs
- EventBridge public APIs
Security considerations:
- IAM policy, resource policy, SCPs, and service-specific controls still govern access.
- Public endpoint access can often be constrained with condition keys.
- VPC endpoints can keep traffic to supported AWS services on private AWS network paths.
Private AWS Service
Private services run inside a VPC or are reachable only through private connectivity. The VPC boundary gives you control over subnets, routing, security groups, NACLs, and private connectivity.
Common examples include:
- EC2 instances
- RDS databases
- ECS tasks using
awsvpcmode - EKS pods and nodes
- Internal Application Load Balancers
Security considerations:
- A private IP address is not a security control by itself.
- Connected VPCs, VPNs, Direct Connect, peering, Transit Gateway, and PrivateLink can extend reachability.
- Security groups and NACLs should define which sources are allowed.
Review Checklist
- Is the service public by network endpoint, private by VPC placement, or exposed through a VPC endpoint?
- Is access controlled by IAM, resource policy, network controls, or all three?
- Does the workload need internet egress, or only AWS service access?
- Would a VPC endpoint reduce exposure or NAT dependency?
- Are public endpoints restricted with conditions where possible?