The problem with AWS is that they tend to make the IPv6 enabled endpoint completely separate as can be seen with the s3.dualstack.region.amazonaws.com and the lambda.region.api.aws endpoints. (The latter is not even on amazonaws.com!) It is strange given that Linux (I assume they run Amazon Linux on their systems) has dual-stack support, and even if some of their internal layers don’t, only their front end, public facing layer needs to be IPv6 enabled, and the rest can run over IPv4.
At the language level, most languages will automatically bind to all interfaces and addresses if you pass in an empty string for the host. At the network level, I find it difficult to believe that Amazon can’t pull it off given that they literally run a CDN that has IPv6 support in all regions.
the switch to dot aws is meant to long-term decouple aws api endpoints from a domain that is also used for a bunch of other stuff, like marketing websites and docs. of course, like all aws things they have no consistency over adoption.
as for using a different hostname for dual stack, the reasoning is that they cannot guarantee that all clients of a given service will handle dual stack dns correctly (ex NAT filtering, IAM policies, &c). so they opt to give clients explicit control over migrating to dual stack.
At the language level, most languages will automatically bind to all interfaces and addresses if you pass in an empty string for the host. At the network level, I find it difficult to believe that Amazon can’t pull it off given that they literally run a CDN that has IPv6 support in all regions.