我试图使整个静态网站无效.以下命令似乎没有失效,/index.html并给出了一个奇数输出的项目,如下所示.这个AWS CLI行为是正常还是我遗漏了什么?谢谢!
aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths /*
Run Code Online (Sandbox Code Playgroud)
输出:
/index.html
command-line-interface amazon-web-services amazon-cloudfront
我有一个支持SSL的域名(example.com).尝试从www.example.com- > 重定向请求时遇到问题https://example.com.
我在尝试访问www.example.com时遇到的错误是:
请求无法满足.
错误的请求.
这些URL有效(重定向到https://example.com)
example.comhttp://example.comhttps://example.comhttp://www.example.com 表明该网站不安全,这意味着它不使用该证书.
S3
我创建了2个S3 buckets example.com和www.example.com(分别为A和B).Bucket A的静态网站托管使网站托管指向example.com.Bucket B的Static Website Hosting已将所有请求重定向到example.com.
CloudFront的
我有一个包含2个备用域名(CNAME),example.com和www.example.com的发行版.我也有这个dist的SSL证书.
53号公路
我有一个带有2个A类别名的托管区域,example.com和www.example.com都指向Cloudfront的发行版(XX.cloudfront.net)
让我先简单介绍一下我正在考虑迁移到S3 + Cloudfront的系统架构.
我们在树中有许多实体订单.树的叶子有许多资源(具体的jpg图像),通常在20-5000的数量级,平均为~200.每个资源都有一个唯一的URL,通过我们今天的colo设置提供.
我可以将所有这些资源转移到S3,在此基础上设置Cloudfront并完成.如果我没有保护资源.
大多数实体是公共的(即约99%),其余的以多种方式(登录,IP,时间等)保护.一旦实体受到保护,所有资源也必须受到保护,并且只能在执行有效授权后才能访问.
我可以通过创建两个S3桶来解决这个问题 - 一个是私有,一个是公共.对于私人内容,我会在用户获得授权后生成签名的Cloudfront URL.但是,实体的状态可能会随意地从公共状态变为私有状态,反之亦然.系统管理员可能会在实体树的任何级别更改实体,从而导致整个树中的级联更改.一个变化可能导致~20k实体的变化,乘以200个资源,这将影响400万个资源.
我可以在后台监控状态更改中运行服务,但这很麻烦,更改400万个S3项目的ACL需要相当长的时间,而当发生这种情况时,我们要么会有未经保护的私有内容,要么公开内容我们必须生成签名的URL.
另一种可能性是默认情况下将所有资源设为私有.在对实体发出的每个请求中,我们将生成一个自定义策略,为该特定用户授予对实体中包含的所有资源的访问权限(通过在自定义策略中使用通配符URL).这需要为每个实体创建一个策略 - 这不会是一个问题.但是,这意味着我们的用户无法再缓存任何内容,因为每个新会话的URL都会更改.虽然对私人内容不是一个问题,但对于99%的公共实体而言,我们会放弃所有缓存.
另一种选择是将所有内容保密,并将上述方法用于私人实体.对于公共实体,我们可以为每个公共实体生成一个所有用户都可以共享的自定义策略.如果我们将生命周期设置为6小时并确保在5小时后生成新策略,则将确保用户的策略生命周期至少为一小时.这样做的好处是可以实现长达6小时的缓存,同时允许私有内容在状态更改后最多可以公开6个小时.这是可以接受的,但我不确定它是否值得(尝试计算当前请求的缓存/命中率).显然,我们可以调整5/6小时的边界以启用更长/更短的缓存,但代价是更长/更短的私有实体暴露.
有没有人部署类似的解决方案?我忽视的任何AWS功能都可能有用吗?一般的评论?
我尝试了很多很多不同的配置,文件,编码,浏览器等等,但这是演示我遇到的问题的最简单的例子.
如果在FF 8.0.1中粘贴JSPlayer的示例视频的URL,则视频将内联播放:
http://video-js.zencoder.com/oceans-clip.webm
如果我拍摄相同的视频并将其上传到我的s3存储桶,则会触发下载:
https://s3.amazonaws.com/turingvideos/oceans-clip.webm - 或 - http
(读取文件和存储桶中每个人的权限)
那么,让我们试试Cloud Front.
d2yat6m71lu23b dot cloudfront dot net slash oceans-clip.webm(下载触发器)
和云前端流媒体:
strzsu4h2ax96 dot cloudfront dot net slash oceans-clip.webm(无限微调器)
使用html视频标签时也会发生相同的基本情况.从zencoder工作正常,除了本地磁盘读取以外的其他任何东西.
那么,zencoder管理的魔力是什么,完全超出了我对S3/CloudFront的影响?我完全难过了.
编辑:
将内容类型和处置设置为"video/webm"和"inline"就可以了.谢谢你的快速反应.
亚马逊最近在CloudFront上推出了一项新功能,该功能使用SNI(服务器名称指示)免费支持自定义SSL证书.
我使用StartSSL的免费Class 1证书设置了我的发行版,当我注意到该站点在部署后的短时间内发生故障时,一切正常.运行SSL Checker会返回我的证书正常工作:

但是当我尝试通过HTTPS访问网站时,我会点击此错误页面(它将适用于第一个请求,然后在后续尝试连接时关闭).

使用ssl访问时,这是一个详细的输出(在索引上成功):
$ curl -I -v -ssl https://wikichen.is
* Adding handle: conn: 0x7f9f82804000
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7f9f82804000) send_pipe: 1, recv_pipe: 0
* About to connect() to wikichen.is port 443 (#0)
* Trying 54.230.141.222...
* Connected to wikichen.is (54.230.141.222) port 443 (#0)
* TLS 1.2 connection using TLS_RSA_WITH_RC4_128_MD5
* Server certificate: www.wikichen.is (6w984WNu7vM5OrdU)
* Server certificate: StartCom Class 1 Primary …Run Code Online (Sandbox Code Playgroud) 访问我的网站时,我一直收到来自控制台的错误消息:
font from origin 'https://xxx.cloudfront.net' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.example.com' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
我尝试了一切:
配置了application.rb文件
config.font_assets.origin = 'http://example.com'
Run Code Online (Sandbox Code Playgroud)上的Cloudfront列入白名单的头在解释此文章到
Access-Control-Allow-Origin
Access-Control-Allow-Methods
Access-Control-Allow-Headers
Access-Control-Max-Age
Run Code Online (Sandbox Code Playgroud)但没有,零,虚无...
我在Heroku上使用Rails 4.1.
AWS现在支持通过CloudFront gzipping文件
我已经按照服务压缩文件中的所有说明进行操作,但是gzipping不起作用.
我将一个S3存储桶设置为CloudFront用作源的网站.
Compress Objects Automatically 已启用application/javascript和text/cssContent-Length据我所知,S3网站提供的文件尽管如此,我还是无法工作.我已经完成了包括SSL在内的所有其他工作,您可以访问以下网站:https://formulagrid.com/
如果你打开chrome控制台,你会注意到从S3提供的文件都没有被gzip压缩.唯一的gzip压缩文件,如谷歌字体是我从其他CDN抓取的.
我正在使用API Gateway和Lambda创建一个api.使用API Gateway Stage编辑器中指定的url一切正常; 但是,当我尝试移动到自定义域时,我遇到了一些问题.
我尝试的第一件事是直接从我的域使用Route 53中的CNAME记录到我从API网关获得的域.那是一些错误,我认为这是不正确的解决方案是正确的吗?
接下来,我尝试了API网关中的自定义域名功能.我的理解是,这将卷起一个CloudFront分配,然后我可以从Route 53映射到.当我创建自定义域并添加了域映射时,它为我提供了一个我认为是CloudFront分发的URL.该链接返回403响应,并且未在CloudFront中进行分发.调试此问题的好方法是什么?
我用一些文件创建了s3存储桶.我使用该S3存储桶创建了CloudFront分配,并将状态更改为已部署.
当我为任何文件卷曲CloudFront时,我得到:
<Error><Code>TemporaryRedirect</Code><Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message><Bucket>MY-BUCKET</Bucket><Endpoint>MY-BUCKET.s3-eu-west-1.amazonaws.com</Endpoint><RequestId>...</RequestId><HostId>...</HostId></Error>
Run Code Online (Sandbox Code Playgroud)
当我为任何文件卷曲我的S3存储桶时,我得到了该文件内容.
我究竟做错了什么?如何强制cloudfront缓存文件,以便客户端不需要直接从S3获取数据?
使用Akamai与CloudFront有什么好处?据我所知,Akamai似乎更贵,但他们的CDN似乎有更大的网络.CloudFront在另一端是更新的,亚马逊甚至在2008年推出CloudFront时使用Akamai作为他们的电子商务网站.从那时起,这可能已经发生了变化,这不会让我感到惊讶.
我喜欢CloudFront,因为我的应用程序将托管在AWS上,因此使用CloudFront而不是Akamai可能会带来显着的好处.CloudFront似乎也有更好的文档记录,它们的API很容易访问,而Akamai则不然.我希望在选择Akamai和CloudFront之间获得利弊.提前致谢!
architecture caching cdn amazon-web-services amazon-cloudfront