具有Api网关的AWS Route 53通配符子域

问题描述 投票:4回答:1

我在AWS Route53 DNS服务上有一个托管区域名称example.com。我有多个子域记录集,如:

api.example.com - type A - ALIAS xxx.cloudfront.net
www.example.com - type A - ALIAS xxx.cloudfront.net
app.example.com - type A - ALIAS xxx.cloudfront.net

所有记录都指向由Api Gateway Custom Domain生成的Cloudfront。

我想为所有用户提供自定义子域名:

USERNAME.example.com
alice.example.com
bob.example.com
...

我事先并不知道所有用户的用户名,并且可能有1000个用户名。

如何设置Route53以将所有未定义的子域路由到特定的Cloudfront => Api Gateway => AWS Lambda实例?

amazon-web-services subdomain aws-api-gateway amazon-route53 wildcard-subdomain
1个回答
4
投票

来自amazon route53 docs:https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html

在托管区域和记录的名称中使用星号(*)您可以在名称中创建包含*的托管区域。请注意以下事项:

您不能在域名的最左侧标签中包含*。例如,不允许使用* .example.com。

如果在其他位置包含*,则DNS会将其视为*字符(ASCII 42),而不是通配符。

您还可以在名称中创建包含*的记录。 DNS将*字符视为通配符或*字符(ASCII 42),具体取决于它在名称中的显示位置。请注意以下在记录名称中使用*作为通配符的限制:

*必须替换域名中最左侧的标签,例如.example.com。它无法替换任何中间标签,例如marketing..example.com。

*必须替换整个标签。例如,您无法指定prod.example.com或prod.example.com。

对于类型为NS的记录,不能将*用作通配符。

对于记录,如果在域名中最左边的标签以外的任何位置包含*,则DNS会将其视为*字符(ASCII 42),而不是通配符。

之后,您可以在API中获取请求的子域,并为其执行特定操作,例如,使用子域名按用户名选择用户。

编辑:遗憾的是,AWS API Gateway不支持通配符子域名,我们可以在此链接的第一点看到:Api Gateway Known Issues

© www.soinside.com 2019 - 2024. All rights reserved.