AWS Api网关自定义域路由到错误的基本URL

时间:2019-02-21 15:40:44

标签: amazon-web-services aws-api-gateway amazon-cloudfront amazon-route53

我正在AWS Lambda / Api网关中开发Angular Universalless服务器应用程序。该应用程序可以使用标准api网址({api-id} .execute-api。{region} .amazonaws.com / {stage} /)完美运行,但现在我正尝试使用Api将其部署在人类可读的网址中网关的自定义域名。

为此,我遵循the docs并使用其他stackoverflow的问题进行了故障排除,但是现在我遇到了一个问题,找不到另一个看起来像我的问题的问题。

我已经设置了API,自定义域名(创建了一个Cloudfront发行版)以及一个Route53 A型ALIAS路由到此新的Cloudfront发行版以及该路由类型。 我面临的问题是,当我使用新域名时,Angular应用程序无法找到CSS,Icon等资产。使用标准的api网址,但使用自定义网址时,它们都可以正常工作。

要进行一些调试,我将Api Gateway配置为将请求记录到CloudWatch,并且可以看到,当我使用标准url时,资源路径日志如下:

HTTP Method: GET, Resource Path: /main.4d57a71fd195330e8ee9.js

但是当我使用自定义URL时,相同的日志如下:

HTTP Method: GET, Resource Path: /development/main.4d57a71fd195330e8ee9.js

我猜想它与Api Gateway的自定义域名配置中的基本URL有关,我试图将其更改为我能想到的所有内容,但没有任何解决方法。

这是我的Api Gateway配置的屏幕截图。

Api gateway - Custom Domain Names configuration

如果您需要更多帮助,请告诉我,如果英语不好,请对不起。

谢谢。

编辑:我应该明确指出,我要指向我的api的“开发”阶段

2 个答案:

答案 0 :(得分:1)

我相信您只需要重新配置您的自定义域。更改以下内容就足够了;

在“基本路径映射”部分中,将路径从“ / development”更改为仅“ /”

答案 1 :(得分:0)

我有类似的问题。对我而言,唯一的解决方法是在environment.serverless.ts中将baseHref设置为“ /”,并将自定义域名中的单个映射从“ /”映射为“ {YOUR-API}:production”。

这会中断对API的直接网址访问,但通过自定义域名的访问可以正常工作。