Is it possible to have an aws EKS infrastructure as code?
Is it possible to declare &quot;a complete production level EKS with other aws services&quot; using terraform?

Yes, and that is what many larger organizations do. I have implemented Kubernetes with other AWS resources this way for larger companies e.g. a bank, using Terraform.

I want to learn aws by experimenting. But I cannot afford spending that much money. So I need to be able to destroy everything and recreate the exact infrastructure whenever it's needed.

That should go well. You can use e.g. terraform apply to provision infrastructure and terraform destroy to take it down. I would also recommend to add tests on your infrastructure using e.g. Terratest and perhaps use tfsec in a pipeline so that you are comfortable that new changes does not break your cluster - using Infrastructure as Code the full way.

Is there a reliable way of declaring everything once and recreate the whole infrastructure declaratively (without touching aws console)?

Yes, that is a best practice.