A "Public Subnet" is defined as a subnet that has a Route Table entry that points to an Internet Gateway.
Thus, if you want instances in the private subnet to have direct access to the Internet via the Internet Gateway, you will need to convert the private subnet into a public subnet. This can be done by adding a Route to the subnet's Route Table that directs traffic with a destination of 0.0.0.0/0
to the Internet Gateway.
Resources in the VPC that need to communicate with the Internet will need to be assigned Public IP addresses. This can be done for existing resources by assigning an Elastic IP address (which is a static IP address). However, there is a limit on the number of Elastic IP addresses available in each region.
Any new Amazon EC2 instances launched can be given a public IP address during launch, so they won't need an Elastic IP address.