AWS Api网关+ Lambda +自定义域(Route53)缺少身份验证令牌问题

问题描述:

我知道许多类似的问题已发布并在此处得到解答,但其中没有一个与我所遇到的情况完全相同。AWS Api网关+ Lambda +自定义域(Route53)缺少身份验证令牌问题

我有一个处理传入请求(GET和POST)的Lambda函数。我还设置了一个api网关作为面向公众的端点。此外,我设置了以下自定义域Set up Custom Domain Name for API Host Name

该测试呼叫在lambda和api网关控制台中都起作用。一切都可以使用invoke URL,但不能与我设置的自定义域一起使用。

这里有一些更多的细节:

调用URL(工程):

https://{api gateway id}.execute-api.us-west-2.amazonaws.com/prod/endpoint 

自定义域endpint(不工作):

https://api.{my domain}.com/endpoint 

基本路径映射:

/endpoint endpoint:prod 

All Met HOD验证:

Authorization None 
API Key Not required 

Route53:

A record as alias that points api.{my domain}.com to the cloudfront distribution domain name as alias target. 

,如果有人知道发生了什么事在这里我会很感激。

+0

你还设置了一个'Route53-Record-Set'指向'CloudFront-Distribution'吗? – MaiKaY

+0

@MaiKaY是的。我有一个A记录作为api的别名。{my domain} .com。别名目标是CloudFront分配域名 – jlai

+1

我想你需要将'BasePath Mapping'更改为:'/ endpoint:prod'。或者尝试使用现有的'BasePath Mapping'来访问'https:// api。{我​​的域名}。com' – MaiKaY

我发现这个问题是误解基础路径映射的工作原理。

我所有的配置都是正确的。

我的API资源不是在/但在/端点

要使用自定义域,而不是访问https://api。{我的域名}的.com /端点,它需要去https://api。{我的域名} .com /端点/端点

当然这是愚蠢和多余的。

我有两个选择。我要么设置基本路径映射到/而不是/端点,要么我只能使用API​​资源/而不是/端点。

因为如果基本路径映射设置为/,my api。{my domain} .com将只能托管一个API(我仍然可以在相同API下使用资源,但为什么浪费额外的抽象层?)。

这似乎是转储,但我仍然很高兴我明白了。

+0

目前还不清楚为什么你会期望一个名为'/ endpoint'的资源的'/ endpoint'基路径会导致因为资源是在base-path + resource处访问的,所以除了需要请求转到'/ endpoint/endpoint'外,其他任何行为都是* other。 –

+1

我实际上使用lambda的模板设置了api网关,模板自动将它放在API的名称下,而不是API的根目录下。这是我第一次使用它,所以我没有想到这种行为。我预计资源是在API的根下创建的,这意味着API的名称应该只是API的名称,默认情况下根用于第一个资源。 – jlai

+1

我明白你的意思了。 –