【问题标题】:Django Zappa generated cloudfront generates 403 errorDjango Zappa 生成的 cloudfront 生成 403 错误
【发布时间】:2019-09-28 04:20:39
【问题描述】:

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

随机生成-​​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 上的记录如下:-

类型 - CNAME 名称 - example.com 值 - d25ihv8a5022zi.cloudfront.net TTL - 1 小时

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

我得到了什么 - 403 错误 无法满足请求。错误的请求。 由云端(CloudFront)生成

编辑:- 所以我摆脱了 zappa 创建的自定义域并手动创建了新的云端分发,如下所示:-

投递方式-Web域名-d35ihv8a5022fe.cloudfront.net 来源-随机生成-​​link.aws.amazon.com/production cNAMES- example.com 状态 - 已部署状态 - 已启用

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

不过,访问 example.com 时出现 403 错误。

【问题讨论】:

  • 只是为了确保 example.com 作为 CNAME 添加到 Cloudfront 并且 HOST 标头未列入白名单。
  • 是的,我已将 CNAME 中的 example.com、www.example.com 添加到 CloudFront。还检查了“cloudfront>behaviors tab> cache based on selected request headers --None”被选中
  • 移动到 Route 53 并添加 CNAME 和别名后。我碰巧访问了 www.example.com,它在 random-generated-link.aws.amazon.com/production 重定向到我的应用程序。我该如何掩饰这个?我是否必须更改任何云端设置来掩盖这一点?

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


【解决方案1】:

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

【讨论】:

  • 另外“d25ihv8a5022zi.cloudfront.net”也无法解析,你删除配置了吗?
  • 已超过 12 小时,AWS 控制台上的状态显示已部署。出于安全原因,我在问题中更改了 CloudFront 端点。
【解决方案2】:
  • 在调试时,我希望 TTL 尽可能短。我将 CNAME TTL 设置为 1 分钟
  • 检查 api-gateway 自定义域名是否列出了您的域,并且您的基本路径映射设置正确。

基本路径映射

路径/
目的地 [lambda 端点] 。 [生产]

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

【讨论】:

  • 我已在 Godaddy 控制台上将 TTL 更改为 600 秒。现在我已经在云端创建了新的发行版(请检查已编辑的问题),api 网关的自定义域不允许创建新域并给出“发生意外错误”。
  • 您可能需要删除自定义域名中的名称,并使用 zappa 重新部署。测试时可以将 TTL 降到 60 吗?等待 dns 很痛苦 :)
  • 当我尝试将其设为 60 时,Godaddy 控制台变灰。我猜 600 是最小值。那么,当我使用 Zappa 重新部署/重新认证时,自定义创建的发行版会发生什么情况? Zappa 默认会处理这个吗?
  • 据我了解,云端分发发生在 api 网关的幕后。当您重新部署时,您可能会获得一个新的云端分发名称。
  • “调用 CreateDomainName 操作时发生错误 (TooManyRequestsException)(达到最大重试次数:4):请求过多”现在我在尝试验证时收到此错误。不过我现在已经搬到了 53 号公路。
【解决方案3】:

显然,我得到了它的工作。将我的域名服务器移至 route53 并在 zappa_settings.json 中添加

“route53_enabled”:真

并使用zappa certify production 命令再次重新认证。

必须等待 40 分钟,它的工作原理!

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

【讨论】:

    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 2016-12-10
    • 2018-10-15
    • 2020-04-04
    • 1970-01-01
    • 2013-04-08
    • 2021-02-01
    • 1970-01-01
    相关资源
    最近更新 更多