如何使用 S3 存储桶的 Akamai infront?

How to use Akamai infront of S3 buckets?

我有一个静态网站,目前托管在 apache 服务器中。我有一个 akamai 服务器,它将对我站点的请求路由到这些服务器。我想将我的静态网站移动到 Amazon S3,以避免在我的服务器中托管这些静态文件。

我在亚马逊创建了一个 S3 存储桶,并为其提供了适当的策略。我还为静态网站托管设置了存储桶。它告诉我可以在

访问该站点

http://my-site.s3-website-us-east-1.amazonaws.com

我修改了我的 akamai 属性以指向此 url 作为我的源服务器。当我访问我的网站时,出现 Http 504 错误。

我在这里错过了什么?

谢谢 K

S3 buckets don't support HTTPS?

Buckets 支持 HTTPS,但不直接与静态网站托管功能结合使用。

有关 REST 端点和网站托管端点之间功能集差异的讨论,请参阅 S3 开发人员指南中的 Website Endpoints

请注意,如果您尝试使用浏览器直接连接到您的网站托管端点,您将收到超时错误。

REST 端点 https://your-bucket.s3.amazonaws.com 将用于在存储桶和 CDN 之间提供 HTTPS,只要您的存储桶名称中没有点

或者如果您需要网站托管功能(索引文档和重定向),您可以将 CloudFront 置于 Akamai 和 S3 之间,在 CloudFront 内部的流量在离开 AWS 网络前往 Akamai 的途中加密(它仍然会从 S3 到 CloudFront 是透明的,但这是 AWS 网络上的内部流量)。 CloudFront 自动为其分配给每个分配的 dddexample.cloudfront.net 主机名提供 HTTPS 支持。

我承认,最初将 CloudFront 放在另一个 CDN 后面听起来有点傻,但它确实非常明智 -- CloudFront 的设计部​​分是为了增强 S3 的功能。 CloudFront还提供了Lambda@Edge,允许在请求处理周期的4个触发点注入逻辑(CloudFront缓存之前和之后,请求期间和响应期间),您可以在其中修改请求和响应headers,生成动态响应,并在需要时发出外部网络请求以实现处理逻辑。

由于您已经在使用 Akamai 作为 CDN,您可以简单地使用他们的 NetStorage 产品线以简化的方式实现这一点。

您需要做的就是将内容从 s3 转移到 Akamai,它会处理其余的事情(托管、分发、扩展、安全、冗余)。

Luna 控制面板上的原点设置可以简单地指向 Netstorage FTP 位置。这还将消除从 Akamai 网络访问 S3 存储桶时出现的网络延迟。

我目前遇到了这个问题,正如 Michael - sqlbot 所提到的那样,将 CloudFront 放在 Akamai 和 S3 Bucket 之间可能是一种解决方法,但这样做是在另一个 CDN 后面使用一个 CDN。我强烈建议您直接在 Akamai 中配置重定向并自定义原始错误时的响应(使用存储桶中的 REST API 端点)。您需要创建三个规则,但首先,根据最后一个规则转到 CDN > Properties 和 select 您的 属性、Edit New Version 并单击在 Property Configuration Settings 部分的 Add Rule 上。第一条规则将负责将空路径重定向到 index.html,就像下图一样创建它:

builtin.AK_PATH 是 Akamai 的变量。下一步负责将不同于静态路径(html、ico、json、js、css、jpg、png、gif 等)重定向到 \index.html :

最后一步负责在 origin 抛出 HTTP 错误代码时自定义错误响应(就像 CloudFront Error Pages)。当来源 returns 404 或 403 HTTP 状态代码时,Akamai 将使用 /index.html 路径调用 Failover Hostname Edge Server(在 Akamai 网络内部)。当在浏览器中刷新页面以及应用程序具有重定向链接(例如打开新选项卡)时,将触发此设置。在 Property Hostnames 部分,添加一个新的主机名作为 Failover Hostname Edge Server,该名称应少于 16 个字符,然后向其添加 -a.akamaihd.net 后缀(这是 Akamai 模式).例如:failover-a.akamaihd.net:

最后,创建一个新的空规则,如下图所示(输入您刚刚在 Alternate Hostname in This Property 部分创建的主机名):