You can restrict by hosted zone, but not by sub-domain. Your Route53 hosted zones should be split up by subdomain if you'd like to restrict to specific subdomains. You can create a hosted zone for a subdomain:
For example if you wanted a subdomain named test
you can do as the answer here summarizes well:
Create a hosted zone for test.example.com.
Note the 4 name servers that Route 53 assigns to it the new hosted
zone.
Back in the master zone, create a new resource record, with hostname
"test" using record type NS, and enter the 4 name servers that Route
53 assigned, in the box below.
The above delegates control of that subdomain to this new hosted zone, which has a unique zone id we can use in an IAM policy
You can then build an IAM policy that restricts actions to this zone:
{
"Statement":[
{
"Action":[
"route53:*"
],
"Effect":"Allow",
"Resource":[
"arn:aws:route53:::hostedzone/<The new zone ID>"
]
},
{
"Action":[
"route53:ListHostedZones"
],
"Effect":"Allow",
"Resource":[
"*"
]
}
]
}
From here you can tweak this policy to fit the actions you'd like the user to be able to take in this zone.