标签: amazon-cloudfront

Cloudfront Custom Origin导致重复的内容问题

我使用CloudFront的服务于图片,CSS和JS文件使用与子域CNAMEd习俗起源选项在我的帐我的网站.它工作得很好.

主要网站:www.mainsite.com

  1. static1.mainsite.com
  2. static2.mainsite.com

示例页面:www.mainsite.com/summary/page1.htm

此页面从static1.mainsite.com/images/image1.jpg调用图像

如果Cloudfront尚未缓存图像,则会从www.mainsite.htm/images/image1.jpg获取图像

一切正常.

问题是谷歌警报已报告在以下两个位置找到该页面:

该页面只能从www访问.现场.不应从CNAME域访问页面.

我试图在.htaccess文件中放一个mod重写,我也尝试在主脚本文件中放一个exit().

但是当Cloudfront在其缓存中找不到该文件的static1版本时,它会从主站点调用它,然后对其进行缓存.

那么问题是:

1. What am I missing here?
2. How do I prevent my site from serving pages instead of just static components to cloudfront?
3. How do I delete the pages from cloudfront? just let them expire?
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

cname duplicates amazon-cloudfront

12
推荐指数
2
解决办法
4568
查看次数

Lambda 别名和 CloudFront:函数 ARN 必须引用特定的函数版本

我有一个 Lambda,当使用包含版本(例如...:function:MyFunction:123)的 ARN 引用时,它用作 CloudFront 源请求处理程序。我已经PROD为版本 123创建了一个别名,我想改用它。

使用...:function:MyFunction:PRODARN 会产生以下错误

com.amazonaws.services.cloudfront.model.InvalidLambdaFunctionAssociationException:
The function ARN must reference a specific function version. (The ARN
must end with the version number.) ARN: 
...:function:MyFunction:PROD (Service: AmazonCloudFront; Status Code:
400; Error Code: InvalidLambdaFunctionAssociation; Request ID:
d407f350-bc7f-11e9-8498-e7f23762c03e)
Run Code Online (Sandbox Code Playgroud)

完全删除版本(即...:function:MyFunction)根据文档应该是最新的,使用$LATESTLATEST版本都失败并出现相同的错误。

我发现的所有文档都表明这应该有效,所以我不确定我在这里搞砸了什么。我创建的 IAM 角色的权限可能有问题吗?

amazon-web-services amazon-cloudfront aws-lambda

12
推荐指数
1
解决办法
1469
查看次数

Amazon S3是否需要时间来更新CORS设置?多久?

最近我启用了Amazon S3 + CloudFront作为我的rails应用程序的CDN.为了使用字体资源并在Firefox或IE中显示它们,我必须在我的S3存储桶上启用CORS.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

然后我用了curl -I https://small-read-staging-assets.s3.amazonaws.com/staging/assets/settings_settings-312b7230872a71a534812e770ec299bb.js.gz,我得到了:

HTTP/1.1 200 OK
x-amz-id-2: Ovs0D578kzW1J72ej0duCi17lnw+wZryGeTw722V2XOteXOC4RoThU8t+NcXksCb
x-amz-request-id: 52E934392E32679A
Date: Tue, 04 Jun 2013 02:34:50 GMT
Cache-Control: public, max-age=31557600
Content-Encoding: gzip
Expires: Wed, 04 Jun 2014 08:16:26 GMT
Last-Modified: Tue, 04 Jun 2013 02:16:26 GMT
ETag: "723791e0c993b691c442970e9718d001"
Accept-Ranges: bytes
Content-Type: text/javascript
Content-Length: 39140
Server: AmazonS3
Run Code Online (Sandbox Code Playgroud)

我应该看看'Access-Control-Allow-Origin'哪里?S3是否需要时间来更新CORS设置?如果缓存它们,我可以强制过期标头吗?

amazon-s3 font-face cors amazon-cloudfront ruby-on-rails-3.2

11
推荐指数
1
解决办法
4447
查看次数

通过CDN服务受保护的资产

我们希望从少数可用的AWS区域提供大量视频文件.目标受众来自全球多个地点.连接速度无法保证.因此绝对需要CDN(最好是CloudFront).

视频需要受到保护,因此只有在用户通过身份验证并有权查看这些视频后才能播放.显然,谁可以看到什么和什么时候是应用程序的一部分的逻辑.从原点流式传输视频会慢得令人无法接受.使视频公开且可缓存也不是一种选择.

人们如何解决这类问题?

cdn amazon-cloudfront

11
推荐指数
1
解决办法
2353
查看次数

Cloudfront和EC2

如何在EC2实例前设置Cloudfront?我有兴趣让用户点击Cloudfront网址而不是EC2源.

因此,用户不会点击ec2-52-64-xxx-xxx.ap-southeast-2.compute.amazonaws.com,而是点击d111111abcdef8.cloudfront.net.

我的目的是通过减少EC2实例的流量和CPU负载来节省托管费用,同时为海外用户提供更快的加载时间.

我只是将我的DNS指向Cloudfront网址而不是EC2源吗?

amazon-web-services amazon-cloudfront

11
推荐指数
2
解决办法
2万
查看次数

Heroku + Rails4.2:Cloudfront设置

我正在尝试为我的heroku应用程序设置Cloudfront.文件似乎缺乏独立的立场.

以下是我遵循的步骤:

 1. Setup Cloudfront in AWS console
 2. Added cloudfront domain name to production.rb `config.action_controller.asset_host = 'XXXX.cloudfront.net'`
 3. Set `config.assets.compile = true` in production.rb
 4. Verified AWS_SECRET_ACCESS_KEY is correct in heroku config
 5. I have added `gem 'rails_12factor', group: :production`
Run Code Online (Sandbox Code Playgroud)

资产不再加载.我在设置中缺少的任何步骤?


UPDATE1:

在chrome调试器中,通过此URL从cloudfront正确请求资产:http://XXXXX.cloudfront.net/assets/application-22c7c249df1a24541d86603b0715eefe.css

但是在请求标题中看到了Status Code:302 Moved Temporarily.我想知道我是否有重定向循环以及如何调试它.

UPDATE2

谢谢大家的建议.更多信息:

  1. 当我尝试从我的应用程序下载资产时,我在浏览器上重定向到主页但使用curl我能够获得资产.ex:curl'http://www.myapp.com/assets/application-c9a778bb55ad4152d956fd34fe6f7839.css'
  2. 该应用程序不使用SSL.但是,根据@Omar的建议,我仍然将Origin Protocol Policy设置为Match Viewer
  3. 我尝试在浏览器上从我的应用程序下载资产,并且能够访问资产.例如:"HTTP://www.myapp.com/assets/application-c9a778bb55ad4152d956fd34fe6f7839.css"不过试图直接访问CloudFront的(d1ax5oefcdtdki.cloudfront.net/assets/application-c9a778bb55ad4152d956fd34fe6f7839.css)资产重定向它MYAPP. COM
  4. cloudfront DS的屏幕截图:

https://www.dropbox.com/s/bkg480d4it6zl2r/Screenshot%202015-12-06%2014.01.28.png?dl=0

http://glui.me/?i=7ah73hffrhvmpt7/2015-12-06_at_2.02_PM.png/

https://www.dropbox.com/s/dd4wwgm3md8w7qn/Screenshot%202015-12-06%2014.05.20.png?dl=0

ruby-on-rails cdn heroku amazon-web-services amazon-cloudfront

11
推荐指数
1
解决办法
817
查看次数

同一域上的CloudFront和API网关服务

我想要:

  • 在我的域www.example.com上分发网站的静态部分(html,css,js).
  • 将API网关服务放在我的域下的文件夹www.example.com/v1下.

我该如何做到这一点?

在路线53中,根据我的理解,我只能指向一个云端分布,因此我选择启用S3/CloudFront的存储桶.

因此,最终结果应该是,按优先级/映射的顺序:

  • www.example.com/v1/*< - > API网关< - > Lambda < - > DynamoDB
  • www.example.com/*< - > CloudFront < - > S3存储桶内容

我能以什么方式实现这一目标?如果没有,我有什么选择,因为我需要在Web浏览器中弯曲到相同的原始要求.

amazon-s3 amazon-web-services amazon-cloudfront amazon-route53 aws-api-gateway

11
推荐指数
1
解决办法
2141
查看次数

带有签名 URL 的 AWS CloudFront:403 访问被拒绝

我正在使用用于存储媒体文件的Amazon S3 Bucket和用于受限分发目的的Amazon CloudFront配置环境。

对这些媒体文件的访问需要是私密的,并且应该通过签名 URL来完成。所以我在区域上创建了S3 BucketSouth America (São Paulo)并上传了一些测试文件。然后我用之前的存储桶创建了一个CloudFront 分配,因为它是受限的。我创建了一个新的OAI(Origin Access Identity)并选择了该选项,以便它自动配置S3。我只使用默认值,它配置了查看器协议策略允许的方法。被设置,并且被设置为。OriginBucket AccessYes, Update Bucket Policy Bucket Policies BehaviorHTTP and HTTPS GET, HEAD Restrict Viewer Access (Use Signed URLs or Signed Cookies)Trusted SignerSelf

这里有一些图像来阐明设置:

S3 存储桶策略 S3 存储桶策略

分布的起源 分布的起源

分布行为 分布行为

我有一段HTTP 403时间试图访问使用awsclicfsign.pl生成的签名 URL

<Error> …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services amazon-cloudfront

11
推荐指数
3
解决办法
6133
查看次数

如何将 CloudFront 设置为每个源都有一个自定义错误页面

我正在尝试使用 S3 和 Cloudfront 在 AWS 上部署一个 Angular 应用程序。我们的 Angular 应用程序正在一个 Spring 应用程序上进行通信,该应用程序作为我们驻留在 EC2 实例上的后端应用程序。我已经将 CloudFront 配置为将/api请求重定向到我们的后端,并将其他所有内容重定向到前端。现在,我已经为 403 和 404 设置了 Cloudfront 的自定义错误响应,以返回我们的 angular 的 index.html。问题是当我们的 fontend 尝试向我们的后端发送 API 调用并返回 404 和有效的 json 响应时,而不是接收 json。我们得到 index.html 文件。

我想要实现的是,如果用户访问http://somedomain.com/invalid-path,他们会得到 index.html 但如果他们尝试 API 调用 http://somedomian.com/api /v1/invalid-path他们应该得到后端服务器返回的信息。

amazon-web-services amazon-cloudfront

11
推荐指数
2
解决办法
3322
查看次数

Route53 和 Cloudfront 请求无法满足?

我只想在 cdn.mydomain.com 上提供我的 s3 文件

所以我创建了在https://dxxxxxxxx.cloudfront.net/test.jpg上运行良好的 cloudfront 发行版- 我得到了图像。

现在我想将我的域 atcdn.domain.com与 route53 中的 cloudfront相关联。

所以我创建了 A 记录类型 A-IPv4 地址。与名称cdn.domain.com别名目标我手动放置dxxxxxxxx.cloudfront.net

但是当我打开网址时:

http://cdn.mydomain.com/test.jpg

我收到错误:

403 ERROR
The request could not be satisfied.
Bad request. We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
If you provide content to customers …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudfront amazon-route53

11
推荐指数
2
解决办法
1万
查看次数