There is a charge for data transferred "in" and "out" from Amazon EC2, Amazon RDS, Amazon Redshift, Amazon DynamoDB Accelerator (DAX), Amazon ElastiCache instances, and Elastic Network Interfaces across Availability Zones in the same AWS Region. Data transferred between a Local Zone and an Availability Zone within the same AWS Region, and in and out from Amazon EC2 in the Local Zone is also charged.
It is free to transfer data directly (see endpoints) between Amazon S3, Amazon EBS direct APIs, Amazon Glacier, Amazon DynamoDB, Amazon SES, Amazon SQS, Amazon Kinesis, Amazon ECR, Amazon SNS, or Amazon SimpleDB and Amazon EC2 instances in the same AWS Region. (For Amazon EBS direct APIs, data transfer charges will apply if FIPS Endpoints are used.) If other AWS services are in the path of your data transfer, you will be charged their associated data processing costs. These services include, but are not limited to, AWS PrivateLink endpoints, NAT gateways, and Transit Gateways.
It is free to transfer data in and out from Amazon Classic and Application Elastic Load Balancers using private IP addresses, and between EC2 instances and the load balancer in the same AWS VPC. In the case of AWS Transit Gateway peering, data transferred out from each Transit Gateway using private IP addresses is charged in the same AWS Region. In the case of AWS Transit Gateway and AWS Cloud WAN peering, data transferred out from the Transit Gateway using private IP addresses and data transferred in and out from Cloud WAN using private IP addresses is charged.