I don't believe Juju expects public addresses for all machines. It *does* expect a public address for the controller, because you need external access to be able to connect for things like "juju status" from your machine.
I don't know how you would have been able to bootstrap and 'ssh' into the machine, but not be able to connect to port 17070. That sounds like you have a firewall in your own network that doesn't let you connect to remote hosts on ports that aren't SSH (22) or HTTP(s) (80/443).
For machines other than controllers, the requirement is that they be able to reach the controller, but not that they are accessible externally, or even accesible from the controller (all agents initiate the connection to the controller, the controller doesn't initiate to the agents).
Obviously if you want to "juju ssh unit/3" you need to have a route to that unit (either a VPN into the VPC or a public address on that machine).
I don't believe Juju expects public addresses for all machines. It *does* expect a public address for the controller, because you need external access to be able to connect for things like "juju status" from your machine.
I don't know how you would have been able to bootstrap and 'ssh' into the machine, but not be able to connect to port 17070. That sounds like you have a firewall in your own network that doesn't let you connect to remote hosts on ports that aren't SSH (22) or HTTP(s) (80/443).
For machines other than controllers, the requirement is that they be able to reach the controller, but not that they are accessible externally, or even accesible from the controller (all agents initiate the connection to the controller, the controller doesn't initiate to the agents).
Obviously if you want to "juju ssh unit/3" you need to have a route to that unit (either a VPN into the VPC or a public address on that machine).