我正在尝试使用对象在S3上设置301重定向,这里引用了http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html.我遇到了一些问题,似乎无法弄清楚我做错了什么.
我得到的是一个空白页面(0字节文件),好像没有设置'网站重定向位置'元数据值.
我究竟做错了什么?
此外,这是否适用于AWS CloudFront?
我的S3控制台设置

值得注意的事情:
我有这个设置来托管一个静态网站.我正在使用ssl/https将我自己的证书上传并设置在cloudfront发行版上.除重定向对象外,所有页面似乎都有效.我已经尝试设置路由规则,但它们似乎在Cloudfront中不起作用.
我正试图通过cloudfront url和s3 url访问重定向(https://s3.amazonaws.com/ {bucket}/users/sign_in)
我的应用程序将图像存储在S3上,然后通过Cloudfront代理它们.我很高兴使用新的S3 CORS支持,以便我可以使用HTML5 canvas方法(具有跨源策略),但似乎无法正确配置我的S3和Cloudfront.当我尝试将图像转换为canvas元素时,仍然遇到"Uncaught Error:SECURITY_ERR:DOM Exception 18".
这是我到目前为止所拥有的:
S3
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>MY_WEBSITE_URL</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>MY_CLOUDFRONT_URL</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
CloudFront的
起源
Origin Protocol Policy: Match Viewer
HTTP Port: 80
HTTPS Port: 443
Run Code Online (Sandbox Code Playgroud)
行为
Origin: MY_WEBSITE_URL
Object Caching: Use Origin Cache Headers
Forward Cookies: None
Forward Query Strings: Yes
Run Code Online (Sandbox Code Playgroud)
这里有什么我想念的吗?
更新:刚尝试将标题更改为
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
Run Code Online (Sandbox Code Playgroud)
基于这个问题的Amazon S3 CORS(跨域资源共享)和Firefox跨域字体加载
仍然没有去.
更新:更多信息请求
Request
URL:https://d1r5nr1emc2xy5.cloudfront.net/uploaded/BAhbBlsHOgZmSSImMjAxMi8wOS8xMC8xOC81NC80Mi85NC9ncmFzczMuanBnBjoGRVQ/32c0cee8
Request Method:GET
Status Code:200 OK (from cache)
Run Code Online (Sandbox Code Playgroud)
UPDATE
我想也许我的请求不正确,所以我尝试启用CORS
img.crossOrigin = '';
Run Code Online (Sandbox Code Playgroud)
但然后图像没有加载,我得到错误:跨源资源共享策略拒绝跨源图像加载.
我创建了一个S3存储桶,上传了一个视频,在CloudFront中创建了一个流媒体分发.使用静态HTML播放器测试它,它的工作原理.我已通过帐户设置创建了密钥对.我目前在桌面上有私钥文件.那就是我.
我的目标是达到我的Django/Python网站创建安全URL的程度,除非他们来自我的某个页面,否则人们无法访问这些视频.问题是我对亚马逊铺设的方式过敏,而且我变得越来越困惑.
我意识到这不会是StackOverflow上最好的问题,但我确信我不能成为这里唯一无法解决如何设置安全的CloudFront/S3情况的傻瓜.我真的很感激你的帮助,我愿意(一旦两天过去)给予最好的答案500pt赏金.
我有几个问题,一旦回答,应该适合我如何完成我所追求的一个解释:
在文档中(下一点有一个例子),有很多XML可以告诉我,我需要把POST东西带到各个地方.这样做是否有在线控制台?或者我真的必须通过cURL(等)来强迫这个?
如何为CloudFront创建Origin Access Identity并将其绑定到我的发行版?我已经阅读了这份文件,但是,从第一点开始,我不知道如何处理它.我的密钥对如何适合这个?
完成后,如何限制S3存储桶只允许人们通过该标识下载内容?如果这是另一个XML作业,而不是点击Web UI,请告诉我我应该在哪里以及如何将其纳入我的帐户.
在Python中,为文件生成过期URL的最简单方法是什么.我已boto安装,但我没有看到如何从流分发中获取文件.
是否有任何应用程序或脚本可能难以设置此服装?我使用Ubuntu(Linux),但如果它只是Windows,我在VM中有XP.我已经看过CloudBerry S3 Explorer Pro - 但它与在线UI一样有意义.
我刚刚在Amazon S3上部署了一个静态网站,目前可以在这里查看:http://www.rdegges.com.s3-website-us-east-1.amazonaws.com/
如果单击任何文章链接,您会注意到以下错误:
S3抱怨该文件不存在.现在,这就是奇怪的 - 我在我的域名上使用CloudFront.因此,当您单击该文章链接时,它会将请求发送到CloudFront,然后CloudFront尝试从S3存储桶中取回文件.
但是,如果您直接从S3访问相同的URL,例如:http://www.rdegges.com.s3-website-us-east-1.amazonaws.com/2015/building-a-heroku-addon-planning/页面加载就好了.
看来这里有些东西在翻译中迷失了.
有人建议我可以做些什么来修复我的设置?
我刚开始使用Amazon S3和Amazon CloudFront.我可以使用哪些适当的客户端工具来管理我的帐户?就像上传文件等.是的我是开发人员,但是,我很紧张,我只是想部署我的应用程序.
我遇到了这个S3浏览器.这几乎就是我要找的东西.
编辑〜是否可以将存储桶映射为Windows驱动器?
我有Amazon S3对象,对于每个对象,我都设置了
Cache-Control: public, max-age=3600000
Run Code Online (Sandbox Code Playgroud)
那大概是41天.
我的Amazon CloudFront Distribution设置了最小TTL,也有3600000.
这是清除缓存后的第一个请求.
GET /1.0.8/web-atoms.js HTTP/1.1
Host: d3bhjcyci8s9i2.cloudfront.net
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Run Code Online (Sandbox Code Playgroud)
而响应是
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Content-Length: 226802
Connection: keep-alive
Date: Wed, 28 Aug 2013 10:37:38 GMT
Cache-Control: public, max-age=3600000
Last-Modified: Wed, 28 Aug 2013 10:36:42 GMT
ETag: "124752e0d85461a16e76fbdef2e84fb9"
Accept-Ranges: bytes
Server: AmazonS3
Age: 342557
Via: 1.0 6eb330235ca3971f6142a5f789cbc988.cloudfront.net (CloudFront)
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: 92Q2uDA4KizhPk4TludKpwP6Q6uEaKRV0ls9P_TIr11c8GQpTuSfhw==
Run Code Online (Sandbox Code Playgroud)
即使亚马逊明确发送Cache-Control,Chrome仍然会发出第二个请求,而不是从Cache中读取它. …
google-chrome cache-control amazon-s3 http-headers amazon-cloudfront
我正在尝试添加指向我的云端分发的路由53记录集.但是,当我在路径53中选择"创建记录集"并单击后续面板中的别名目标时,不会列出云前沿分布.我得到的是"没有目标可用".我的分发已创建并已启用(并且正在运行).我在我的发行版中添加了一个CName,其中包含我在Route53中设置的相同域名,但它仍然没有显示.
如何让我的发行版显示在Alias Target字段中,以便我可以将Route53'a'记录指向它?
谢谢
我正在尝试在Cloudflare上设置CNAME以指向Amazon API Gateway端点.CNAME用于引用我的某个子域名时使用.网关反过来指向DigitalOcean上的服务器的IP.我是亚马逊网络服务的新手,如果有人能够概述DNS,亚马逊网关和Cloudfront的正确配置(我认为需要将网关暴露给亚马逊外部的DNS服务器),我将不胜感激.任何帮助将非常感激.
UPDATE
我已经在这方面做了一段时间而没有取得多大进展.有没有人知道这是否是一种可行的方法或者如何做到这一点?
UPDATE2
我以为我需要将CNAME记录添加到cloudFlare并且刚刚进入重定向循环,观察到:
curl -L -i -v https://sub.mydomain.com/
Run Code Online (Sandbox Code Playgroud) 有没有人知道在使用您自己的CNAME时是否可以使用您自己的证书通过https服务于cloudfront?我甚至找不到通过S3设置我自己的SSL证书的方法......所以我不确定这是否可能.
更新:如果有人对此问题的更新感兴趣 - maxcdn.com提供在您的域上托管您的SSL证书,每月只需59美元的固定费用.
它不是亚马逊,但它甚至支持永久地从您的服务器和托管中提取,或者如果您在指定的任何时间发送缓存控制头,直到它再次获取原始URL.
整个报价非常整洁.:d
我在S3存储桶上托管了一个React应用程序.使用yarn build(这是一个基于create-react-app的应用程序)缩小代码.该build文件夹看起来像:
build
??? asset-manifest.json
??? favicon.ico
??? images
? ??? map-background.png
? ??? robot-icon.svg
??? index.html
??? js
? ??? fontawesome.js
? ??? packs
? ? ??? brands.js
? ? ??? light.js
? ? ??? regular.js
? ? ??? solid.js
? ??? README.md
??? service-worker.js
??? static
??? css
? ??? main.bf27c1d9.css
? ??? main.bf27c1d9.css.map
??? js
??? main.8d11d7ab.js
??? main.8d11d7ab.js.map
Run Code Online (Sandbox Code Playgroud)
我永远不想index.html被缓存,因为如果我更新代码(导致十六进制后缀main.*.js更新),我需要用户下次访问以获取<script src>更改index.html以指向更新的代码.
在CloudFront中,我似乎只能排除路径,排除"/"似乎无法正常工作.我得到奇怪的行为,我更改代码,如果我打刷新,我看到它,但如果我退出Chrome和回去,我看到非常过时代码的某些原因.
我不想在每个代码版本上触发失效(通过CodeBuild).还有其他方法吗?我认为,挑战之一是,因为这是使用路由器作出反应的应用程序,我在用错误的文件设置为做一些挂羊头卖狗肉index.html,并迫使HTTP状态200,而不是403.