One of the best ways to learn AWS is to actually use it. You can spin up small-scale projects on AWS for free and play with the dashboard app.
Kubernetes is even easier, since you can simply download and install MiniKube, which will bootstrap itself into a complete local Kubernetes environment, including a
test VM.
Actually, the biggest challenge with AWS is that there's simply so much of it. You can create your own virtual machines and run them in their own private network. You can spin up Elastic Beanstalk services, where you don't even have a full VM of your own, just the service that you require (for example a
Tomcat server). You can use their cloud storage and they even provide ready-made relational database servers.
Several years ago, I was subscribed to a service that would email me job leads in batches once or more a day. I was interested specifically in doing remote work, but too many of the postings actually carried the statement "No remote work allowed" or something similar, and the dumb email sender was simply scanning for keywords, not context, so I got a lot of trash.
In my case, I spun up a copy of Apache Karaf and coded a micro-service in OSGi. This service received mail from that sender and scanned each posting. It deleted the unwanted postings and then passed on the rest to my inbox. Kafka could probably do this, too, but I don't think is was available back then.
Since hurricanes are a concern around here, I also coded another micro-service that would poll the National Hurricane Center for information and format that as email sent to my inbox. The NHC does have its own feeds and bulletins, but I wanted something more personalized.
The Karaf server was in turn embedded within a Docker Container, so it could be administered with Kubernetes.