Django Zappa生成的Cloudfront生成403错误

时间:2019-05-10 09:21:19

标签: aws-lambda aws-api-gateway http-status-code-403 zappa amazon-cloudfront

我使用无服务器Zappa框架运行部署在AWS lambda上的Django项目。可以通过AWS API Gateway的随机生成的链接访问该链接,说:-

  

randomly-generation-link.aws.amazon.com/production

我还从ACM创建了SSL证书,并用我的域验证了

  

example.com

现在,当我运行zappa certify时,此命令将成功认证我的域并在API网关控制台下使用以下配置创建自定义域:-

  

优化了端点配置边缘

     

目标域名 d25ihv8a5022zi.cloudfront.net

     

托管区域ID A2FDTNGATAQYW6

     

ACM证书 example.com(c504428e)

现在,我需要将域名example.com指向randomly-generated-link.aws.amazon.com/production,因此我使用CNAME更新了Godaddy上的记录,如下所示:-

  

TYPE-CNAME NAME-example.com VALUE-d25ihv8a5022zi.cloudfront.net   TTL-1小时

预期结果-我在randomly-generated-link.aws.amazon.com上运行的应用程序可以从example.com访问。

我得到了-403错误 无法满足该请求。错误的请求。 由cloudfront(CloudFront)生成

编辑:-因此,我摆脱了zappa创建的自定义域,并手动创建了新的Cloudfront发行版,如下所示:-

  

传送方式-网络域名-d35ihv8a5022fe.cloudfront.net   来源-随机产生的link.aws.amazon.com/production cNAMES-   example.com状态-部署状态-启用

之所以这样做,是因为zappa生成的Cloudfront分发隐藏在AWS控制台中。但是,我注意到Zappa生成的分发端点在我在浏览器中检查地址时被禁止,并且新创建的分发端点重定向到我的应用程序。

仍然,转到example.com会给我403错误。

3 个答案:

答案 0 :(得分:0)

  • 在调试时,我希望将TTL保持尽可能短。我将CNAME TTL设置为1分钟
  • 检查api-gateway自定义域名是否列出了您的域,并且您正确设置了“基本路径映射”。

基本路径映射

路径/
目标[lambda端点]。 [制作]

如果可能的话,在route53上托管域也是一个好主意

答案 1 :(得分:0)

这不再是DNS问题,可能是因为Edge经过优化使用CloudFront并需要一些时间将新的自定义域部署到所有边缘位置吗?启用自定义域名后,您等待了多长时间?

答案 2 :(得分:0)

显然,我可以使用它。将我的域名服务器移至route53,并在class A: pass class B: pass class visitor: def __init__(self, f): self.f = f self.cases = {} def case(self, type1, type2): def call(fun): self.cases[(type1, type2)] = fun return call def __call__(self, arg1, arg2): fun = self.cases[type(arg1), type(arg2)] return fun(arg1, arg2) @visitor def f(x, y): pass @f.case(A, int) def fun1(a, b): print("called with A and int") @f.case(B, str) def fun2(a, b): print("called with B and string") f(A(), 5) f(B(), "hello") 中添加了

  

“ route53_enabled”:是

,然后使用zappa_settings.json命令再次进行认证。

必须等待40分钟才能成功!

尽管,我不知道为什么在使用Godaddy进行域管理时它不起作用。可以说route53目前是一种快速的解决方法。