我刚刚通过AWS API Gateway设置了自定义域名,现在我有多个域名都路由到一个lambda函数。只是一个网页。
设置如下:
我有几个具有不同域的域,希望所有人都提供相同的内容。
现在,我想添加另一个路径,例如/ getdata或仅用于提供数据库中某些数据而不是提供静态HTML的内容。
但是当我尝试添加其他路径时,出现此错误:
错误 如果基本路径为空,则仅允许一个基本路径映射。
那我怎么会有一个带有多个路径的域?
我尝试仅使用通配符路径:*,并且适用于/ test或/ getdata等多个路径,但它不仅适用于域名,而且我无法告诉每个用户确保每次都输入/ home之类的内容
答案 0 :(得分:6)
我明白了!
因此,很遗憾,显示自定义域的页面不在您进行路由的位置。
正确的过程是创建一个API(或使用现有的API,然后修改资源)并为其提供代理资源,以及从根路径起源的普通GET方法。
首先,转到您的API GateWay控制台,并创建一个新的API。
然后给它命名,然后选择类型(区域或边缘),它将显示资源页面
在这里,您将做两件事:创建一个捕获所有代理资源,以及获取根目录路径的资源。
第1步:捕获所有代理资源:
点击“操作”,然后选择“创建资源”
在向导上,单击“配置为代理”,并为其命名。保持资源路径不变。然后单击创建资源。 {proxy +}是表示AWS的资源,该资源应接受/后面有任何路径的任何路径。这意味着/ test和/ test / 1/2/3 / etc一样工作。但是,仅/单独使用将不起作用!
接下来,它将带您到此屏幕,在其中选择集成类型。我们需要lambda,这是默认值。确保选择正确的区域,对我而言,默认区域是正确的区域。然后开始输入您的lambda函数名称,它会动态弹出您的lambda函数列表。选择您想要的应用程序之一。如果这不起作用,则可以从lambda功能控制台复制并粘贴lambda ARN。点击保存。
第2步:获取根路径的获取资源
单击顶部的根斜杠,紧挨在显示资源的位置。然后单击操作,然后选择创建方法。它将在根斜杠下面弹出一个小的选择项,您应该在其中选择GET,然后单击小的对号。
在这里,请确保选中“使用Lambda代理集成”,然后此表单的其余部分应与您上一个表单相同。只需选择您的区域和lambda函数,然后单击“保存”即可。
第3步:部署
完成后,请执行操作,然后选择“部署API”,为其指定一个阶段名称和一些描述,然后就可以将该API附加到您的自定义域了。
第4步:附加
在左侧标签上,向下滚动到显示“自定义域名”的位置,然后创建一个新域名(或将其附加到现有的域名上)
输入您的域名,然后选择区域或边缘。然后选择您的证书(关于如何通过AWS制作证书的指南很多)
单击“保存”后,它将看起来像这样:
单击“显示基本路径映射”,然后单击“编辑”。
在path字段中只留下一个斜线,在Destination字段中,从下拉列表中选择刚部署的API。在右侧,选择在部署API时进行的阶段。
最后,它会花一会儿初始化时间,因此,在等待时,请记住您需要为此域创建一个route53记录集,并将其映射到API GateWay给我们的cloudfront目标URL。该目标网址如下:www.u10dsa3s5iovdk.cloudfront.net。复制该副本,然后转到Route 53,为您的域选择托管区域。创建一个记录集,并为其指定与刚创建的域相同的名称,因此,如果您创建了www.example.com,则在Route 53的名称字段中,您需要输入www。或者,如果您创建了test.example.com,则需要输入test。然后选择Alias:是,并为Alias Target粘贴API GateWay的cloudfront URL。
自定义域名初始化完成后,您可以拨打www.example.com以及www.example.com/anything/else/you/want/to/put/here
希望这对一直被我困扰的人有所帮助。请让我知道我是否错过了任何事情,或者有什么不正确的地方。
答案 1 :(得分:0)
在这种情况下,您需要为需要通过自定义域提供服务的每个API配置与“ /”不同的路径。如果您提供至少一个没有基本路径的api,则AWS Api Gateway不允许您将多个api提供到同一个自定义域中。