我使用CloudFront的服务于图片,CSS和JS文件使用与子域CNAMEd习俗起源选项在我的帐我的网站.它工作得很好.
主要网站:www.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)
谢谢你的帮助.
乔
我有一个 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)根据文档应该是最新的,使用$LATEST或LATEST版本都失败并出现相同的错误。
我发现的所有文档都表明这应该有效,所以我不确定我在这里搞砸了什么。我创建的 IAM 角色的权限可能有问题吗?
最近我启用了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
我们希望从少数可用的AWS区域提供大量视频文件.目标受众来自全球多个地点.连接速度无法保证.因此绝对需要CDN(最好是CloudFront).
视频需要受到保护,因此只有在用户通过身份验证并有权查看这些视频后才能播放.显然,谁可以看到什么和什么时候是应用程序的一部分的逻辑.从原点流式传输视频会慢得令人无法接受.使视频公开且可缓存也不是一种选择.
人们如何解决这类问题?
如何在EC2实例前设置Cloudfront?我有兴趣让用户点击Cloudfront网址而不是EC2源.
因此,用户不会点击ec2-52-64-xxx-xxx.ap-southeast-2.compute.amazonaws.com,而是点击d111111abcdef8.cloudfront.net.
我的目的是通过减少EC2实例的流量和CPU负载来节省托管费用,同时为海外用户提供更快的加载时间.
我只是将我的DNS指向Cloudfront网址而不是EC2源吗?
我正在尝试为我的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
谢谢大家的建议.更多信息:
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
我想要:
我该如何做到这一点?
在路线53中,根据我的理解,我只能指向一个云端分布,因此我选择启用S3/CloudFront的存储桶.
因此,最终结果应该是,按优先级/映射的顺序:
我能以什么方式实现这一目标?如果没有,我有什么选择,因为我需要在Web浏览器中弯曲到相同的原始要求.
amazon-s3 amazon-web-services amazon-cloudfront amazon-route53 aws-api-gateway
我正在使用用于存储媒体文件的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
这里有一些图像来阐明设置:
我有一段HTTP 403时间试图访问使用awscli或cfsign.pl生成的签名 URL
<Error> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 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他们应该得到后端服务器返回的信息。
我只想在 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)