Questions tagged «amazon-cloudfront»

Amazon CloudFront是Amazon Web Services提供的内容交付网络(CDN)。

5
带有S3的Amazon Cloudfront。拒绝访问
我们正在尝试通过Cloudfront分发S3存储桶,但是由于某些原因,唯一的响应就是一个AccessDenied XML文档,如下所示: <Error> <Code>AccessDenied</Code> <Message>Access Denied</Message> <RequestId>89F25EB47DDA64D5</RequestId> <HostId>Z2xAduhEswbdBqTB/cgCggm/jVG24dPZjy1GScs9ak0w95rF4I0SnDnJrUKHHQC</HostId> </Error> 这是我们正在使用的设置: 这是水桶的政策 { "Version": "2008-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity *********" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::x***-logos/*" } ] }

2
Chrome S3 Cloudfront:初始XHR请求中没有“ Access-Control-Allow-Origin”标头
我有一个网页(https://smartystreets.com/contact),该网页使用jQuery通过CloudFront CDN从S3加载一些SVG文件。 在Chrome浏览器中,我将打开隐身窗口和控制台。然后,我将加载页面。当页面加载时,我通常会在控制台中收到6到8条类似于以下内容的消息: XMLHttpRequest cannot load https://d79i1fxsrar4t.cloudfront.net/assets/img/feature-icons/documentation.08e71af6.svg. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://smartystreets.com' is therefore not allowed access. 如果我对页面进行标准重新加载,即使是多次加载,也会继续遇到相同的错误。如果执行Command+Shift+R此操作,则将加载大多数(有时是全部)图像而不会出现XMLHttpRequest错误。 有时即使在图像加载后,我也会刷新,并且其中一幅或多幅图像将无法加载,并XMLHttpRequest再次返回该错误。 我已经检查,更改并重新检查了S3和Cloudfront上的设置。在S3中,我的CORS配置如下所示: <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedOrigin>http://*</AllowedOrigin> <AllowedOrigin>https://*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <AllowedHeader>Authorization</AllowedHeader> </CORSRule> </CORSConfiguration> (注意:最初只有<AllowedOrigin>*</AllowedOrigin>,有同样的问题。) 在CloudFront中,分发行为设置为允许HTTP方法:GET, HEAD, OPTIONS。缓存的方法是相同的。转发标题设置为“白名单”,该白名单包括“访问控制请求头,访问控制请求方法,来源”。 它在无缓存浏览器重新加载后可以工作的事实似乎表明,S3 / CloudFront方面一切正常,否则为什么要交付内容。但是,为什么不能在初始页面浏览中传递内容? 我正在macOS上使用Google Chrome浏览器。Firefox每次都获取文件没有问题。Opera从不获取文件。Safari会在几次刷新后拾取图像。 使用curl我没有任何问题: …

1
没有来自带有S3 Origin的AWS CloudFront的文件的缓存控制标头
我们刚刚迁移到Amazon AWS。当前,我们有一个运行良好的EC2实例。它在前端运行Nginx,在后端运行Apache。运行也很好。所有站点均已正确启动,并包含从EC2提供的文件的Cache-Control标头。 问题在于,我们放置在Amazon S3中的所有静态文件都可以通过CloudFront CDN访问。我们可以很好地访问文件(CORS没问题),但是显然CloudFront不提供带有Cache-Control标头的文件。我们想利用浏览器缓存。 我认为,EC2实例在这里没有作用,因为静态文件是由S3 + CloudFront直接提供的,请求不会发送到EC2中的Web服务器。 我完全迷路了。 问题:1)在这种情况下,如何设置缓存控件?2)是否可以设置缓存控件?是从S3还是CloudFront? 注意:我在Google中打了几页,您可以在S3中为单个对象设置页眉。实际上,这并不是特别有效的方法,因为在我的案例中,我们正在谈论多个对象。 谢谢!

2
为什么CloudFront不遵循S3网站重定向位置?
我有一个托管在Amazon S3上的网站。它是WordPress托管的旧网站的新版本。 我已经使用元数据设置了一些文件Website Redirect Location来处理旧位置,并将它们重定向到新的网站页面。 例如:我http://www.mysite.com/solution想重定向到,http://mysite.s3-website-us-east-1.amazonaws.com/product.html所以我在solution存储桶中创建了一个带有正确元数据的空文件: Website Redirect Location= /product.html S3重定向元数据等效301 Moved Permanently于SEO很好的。直接从S3域访问URL时,这非常有用。 我还基于网站存储桶设置了CloudFront发行版。当我尝试通过分发访问时,重定向不起作用,即: http://xxxx123.cloudfront.net/solution 不会重定向,而是下载空文件。 所以我的问题是如何通过CloudFront分发保持重定向?或关于如何处理重定向而不降低SEO的任何想法? 谢谢

5
CloudFront的蓝色/绿色部署
我正在寻找一种使用CloudFront进行蓝色/绿色部署的方法。 有没有人有一个很好的解决方案,可以从一个CloudFront发行版迁移到另一个,或者每个人真的只是在创建他们的发行版,然后再也没有碰过它吗? 我的CloudFront发行版包含一个用于静态内容(JavaScript等)的S3 源和一个指向AWS ELB的自定义源。 CloudFront不变 通常情况下,我们根本不会对CloudFront发行版进行任何更改。我们通过更改S3中的静态内容文件的名称来在S3原始版本中对静态内容进行版本控制,并在Elastic Load Balancer(ELB)下将部署滚动部署到EC2实例。但是,有时我们需要测试CloudFront发行版本身并对其进行更改,或者对我们的环境进行足够大的更改,因此我们需要在新环境中指向新的ELB。 两个CloudFront发行版 我尝试的第一个选项是拥有两个单独的CloudFront Web发行版,一个用于我当前的环境,即A环境,另一个用于我的新环境,即B环境。我尝试使用Route53 加权路由策略,在其中为我的www.domain.com Route53记录添加了两个记录,一个记录指向权重为1的CloudFront分布A,另一个指向权重为0的CloudFront分布B。我想从分配A迁移到分配B时,计划是更改权重。但是,一次只能注册一个CloudFront分配可以注册www.domain.com 备用域名(CNAME),否则会出现以下错误: com.amazonaws.services.cloudfront.model.CNAMEAlreadyExistsException: One or more of the CNAMEs you provided are already associated with a different resource. (Service: AmazonCloudFront; Status Code: 409; Error Code: CNAMEAlreadyExists; Request ID: ef84a5f0-44e7-11e5-9315-0ba167bb108a) 一个CloudFront发行版 第二种选择是保留一个CloudFront Web分发。我有同时指向A和B环境的S3和自定义来源,然后当我想从一个环境转移到另一个环境时,我更新了CloudFront 缓存行为以指向另一个来源。这非常混乱,因为这些更新需要15至60分钟,无法看到更新进度,并且根据更改的性质,您可能需要使用CloudFront Invalidation进行后续操作,以便不提供缓存的内容来自旧环境以及新内容。 谢谢你的建议!

2
在Cloudfront上设置访问控制允许来源
我在使用AWS Cloudfront向Firefox提供静态资产时遇到问题。 Chrome可以完美运行,但Firefox返回CORS错误。 如果执行curl,我得到: HTTP/1.1 200 OK Content-Type: application/x-font-opentype Content-Length: 39420 Connection: keep-alive Date: Mon, 11 Aug 2014 21:53:50 GMT Cache-Control: public, max-age=31557600 Expires: Sun, 09 Aug 2015 01:28:02 GMT Last-Modified: Fri, 08 Aug 2014 19:28:05 GMT ETag: "9df744bdf9372cf4cff87bb3e2d68fc8" Accept-Ranges: bytes Server: AmazonS3 Age: 2743 X-Cache: Hit from cloudfront Via: …

3
如何在不支付600美元上传证书的情况下将https与AWS Cloudfront结合使用?
我可以通过Amazon CloudFront托管动态网站,因为它们具有CNAME通配符支持。但是,我的网站的某些页面使用HTTPS。亚马逊有一些有关如何将您的SSL证书与CloudFront发行版关联的文档,但价格显示它每月花费600美元,对我来说太高了。 我的问题是...是否可以配置CloudFront以便从CloudFront提供HTTP请求,但HTTPFront请求被CloudFront忽略并直接传递到源(在我的情况下,是一个Elastic Load Balancer,可以免费解密SSL) ?

1
什么是Amazon Route53“别名” DNS记录?
AWS Route53别名值 考虑在AWS Route53上注册的域。到该域的HTTP请求应通过AWS CloudFront CDN分发进行服务。为了实现这一点,A定义了一个别名记录: dig 结果 但是,dig结果显示实际IP地址。实际上,这些IP地址不是恒定的,并且会随着时间变化: # dig @1.1.1.1 serverlessdaystlv.io ... ;; ANSWER SECTION: serverlessdaystlv.io. 60 IN A 13.32.67.21 serverlessdaystlv.io. 60 IN A 13.32.67.27 serverlessdaystlv.io. 60 IN A 13.32.67.97 serverlessdaystlv.io. 60 IN A 13.32.67.122 serverlessdaystlv.io. 60 IN A 13.32.67.141 serverlessdaystlv.io. 60 IN A 13.32.67.159 serverlessdaystlv.io. 60 IN …

3
强制CloudFront传递S3中的最新HTML文件
背景 我在S3上托管一个静态站点,而CloudFront位于顶部。我的问题是我的HTML文件。 根据CloudFront的常见问题解答: Amazon CloudFront使用这些缓存控制标头来确定它需要多久检查一次该文件的更新版本的来源 到目前为止我做了什么 考虑到这一点,我在S3存储桶中设置了HTML文件,以添加以下标头: Cache-Control: no-cache, no-store, max-age=0, must-revalidate Expires: Fri, 01 Jan 1990 00:00:00 GMT 在第一次致电my时samplefile.htm,我看到以下响应标头(Content-Type为了明确说明起见,我已经排除了明显的标头(例如): Cache-Control:no-cache, no-store, max-age=0, must-revalidate Date:Sat, 10 Dec 2011 14:16:51 GMT ETag:"a5890ace30a3e84d9118196c161aeec2" Expires:Fri, 01 Jan 1990 00:00:00 GMT Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT Server:AmazonS3 X-Cache:Miss from cloudfront 如您所见,我的Cache-Control标题位于其中。问题是,如果我更新此文件并刷新,则会得到缓存的内容(而不是最新的文件),并且通过查看响应头可以看到CloudFront正在提供其缓存的版本: X-Cache:Hit from …


3
带有S3重定向的Amazon Cloudfront
我正在尝试做一些相对简单的事情-我想设置一些域和子域以重定向到我们网站的核心域,但是我想将重定向放在Cloudfront上。除重定向根路径外,其他所有操作均有效-这使我得到了一个XML文件,其中部分描述了S3存储桶。 背景 S3 S3允许您设置全重定向存储桶,例如: 通过测试,Web终结点(brass9-com.s3-website-us-west-1.amazonaws.com)会执行应做的工作-将其重定向到brass9.com。好。 云前 Cloudfront允许您指向S3存储桶,但是它建议您这样做的方式是错误的- 您需要使用上面的Web端点,而不是像Brass9-com.s3.amazonaws.com这样指向存储桶。除此之外,您可以将所有内容保留为默认值,并获得良好的重定向行为。因此,像www.brass9.com/portfolio这样的路径会正确地重定向到它应该在的位置。也不错。 问题-根域重定向 然后无法正常工作的一件事是从纯www.brass9.com重定向。与其让您获得重定向,不如让您得到这个奇怪的结果: <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>brass9-com</Name><Prefix></Prefix> <Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated> </ListBucketResult> 好... 。因此,这并不是完全意外的 -因为没有默认根对象。但是,为防止这种行为,我可能会指定哪个默认根对象?我需要指向的S3重定向对象的名称是什么?还是有其他适当的配置,或者这仅仅是Amazon需要修复的Cloudfront和S3交互方式中的错误? 已知的不起作用的解决方案:默认根对象 可以指定index.html的默认根对象,但是它没有任何帮助-只是改变了问题。相反,Cloudfront URL重定向到主站点上的/index.html,该站点是404(我们不使用index.html文件,它是服务器端框架驱动的站点)。我可以在服务器上放一个index.html,但这首先使使用Cloudfront的速度提高不大。 类似问题 一个问题提出了类似的要求,但由于某种原因而不是我所看到的XML响应,返回了一个空白的0字节响应。它不包含有关该问题或解决方案的问题。 相关文章 一篇文章建议您仅在裸域和www域上为整个网站提供服务。这与任何用户的书签,您的搜索排名等有关。您不应该这样做。 一些人讨论了在S3和Cloudfront上托管静态网站而不是重定向方案,因此没有关系。 那么,如何正确执行此操作? Cloudfront配置的屏幕快照-无默认根对象,指向S3起源。忽略进行中-我刚刚打开和关闭默认根对象进行测试。 以及该发行版的Origin配置:

4
如何针对同一个域并排使用AWS CloudFront和API网关?
我将网站的静态资产放在S3上,并设置CloudFront进行分发。这些本质上是用户对我的网站上的任何GET请求所需的内容,都包含到现有路径中,并且包含所有错误。 我也有一些POST请求需要处理。表单提交,发送电子邮件,通知,与数据库交互。 如何在同一域中与CloudFront并排设置Lambda(或API网关),以便CloudFront处理GET请求,而API Gateway处理带有正文或POST请求的请求。还是我可以通过单个URL做到这一点?

4
AWS CloudFront是否应“增加”不经常访问的文件的加载时间?
我是CDN的新手,正在尝试CloudFront。我已经完成所有设置,并且看起来一切正常。我可以在页面上创建静态图像,并通过我的CloudFront发行版访问它。我正在使用自定义来源(即不是s3存储桶)。 我担心从性能的角度来看可能会更糟。我有一个测试页,可以加载和不加载CDN的相同20张左右的图像。在Firebug的网络面板中,我第一次加载此页面时,直接从源服务器加载的图像的速度要快得多。在随后的页面加载中,CDN的好处显而易见-在3-5次刷新后,CDN的性能要优于原始服务器。 因此,我可以看到在我们网站上一个经常被访问的受欢迎页面上,这将是一个好处。而且我应该会受益匪浅,因为我在西雅图(在亚马逊附近)并且我的服务器在CA中。 关键是,如果我离开页面几分钟然后重新加载,事情又回到了第一点,CloudFront比原始服务器差。这是预期的吗?事情会这么快地退出CDN“缓存”吗? 我的设置中是否有可能损害性能?还是CDN只会对目前平均每隔几秒钟访问一次的内容产生积极影响? (交叉从AWS论坛发布,因为我永远被SO的周转时间宠坏了) 更新: 如果您对CloudFront性能有疑问,下面有两个不错的答案值得一看。最近,我发现没有提及针对我的具体问题的一种解释。我在第5分钟离开了TTL作为监督。由于我也使用自定义来源,因此需要进行一次往返于权威名称服务器的往返操作,以将其解析为实际的Amazon CloudFront域。现在,TTL设置已恢复到12小时,似乎长负载的情况很少出现了。

2
AWS Cloudfront多个来源-如果在第一个来源中找不到,我们如何退回到第二个来源
我们正在尝试建立一个默认来源为S3的Cloudfront发行版,但是如果在S3上找不到该内容,我们希望它从EC2实例中获取它。 我们是否可以设置以下多个来源:S3和EC2以及两个行为,都默认为(*),并在需要时将其故障转移到第二个来源(EC2)? 流程如下: 我们的后端在EC2实例上生成映像。 我们会尽快将它们上传到S3,但这不是立即的。 当用户尝试访问cdn.example.com/images/picture.jpg时,它将Cloudfront定向到我们的S3存储桶,如果该图像还不存在,我们希望将该请求重定向到EC2服务器。 我们可以在这里使用临时重定向解决方案,直到在S3上对其进行更新为止。 S3重定向不是解决方案,因为S3重定向似乎仅适用于现有对象或整个存储桶,而不会丢失对象。 我们如何实现这一目标? 谢谢阿多拉姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.