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.
,如果有人知道发生了什么事在这里我会很感激。
我发现这个问题是误解基础路径映射的工作原理。
我所有的配置都是正确的。
我的API资源不是在/但在/端点
要使用自定义域,而不是访问https://api。{我的域名}的.com /端点,它需要去https://api。{我的域名} .com /端点/端点
当然这是愚蠢和多余的。
我有两个选择。我要么设置基本路径映射到/而不是/端点,要么我只能使用API资源/而不是/端点。
因为如果基本路径映射设置为/,my api。{my domain} .com将只能托管一个API(我仍然可以在相同API下使用资源,但为什么浪费额外的抽象层?)。
这似乎是转储,但我仍然很高兴我明白了。
目前还不清楚为什么你会期望一个名为'/ endpoint'的资源的'/ endpoint'基路径会导致因为资源是在base-path + resource处访问的,所以除了需要请求转到'/ endpoint/endpoint'外,其他任何行为都是* other。 –
我实际上使用lambda的模板设置了api网关,模板自动将它放在API的名称下,而不是API的根目录下。这是我第一次使用它,所以我没有想到这种行为。我预计资源是在API的根下创建的,这意味着API的名称应该只是API的名称,默认情况下根用于第一个资源。 – jlai
我明白你的意思了。 –
你还设置了一个'Route53-Record-Set'指向'CloudFront-Distribution'吗? – MaiKaY
@MaiKaY是的。我有一个A记录作为api的别名。{my domain} .com。别名目标是CloudFront分配域名 – jlai
我想你需要将'BasePath Mapping'更改为:'/ endpoint:prod'。或者尝试使用现有的'BasePath Mapping'来访问'https:// api。{我的域名}。com' – MaiKaY