我设置了CloudFront分配以使用自定义源 - 我的客户端的Web服务器(www.mydomain.com).
当我加载网页并检查Chrome网络检查器的"网络"标签时,资产显示为来自原始服务器(www.mydomain.com),"启动器"列将CloudFront网址显示为重定向.我认为这意味着CloudFront正在将资产请求重定向到我的原始服务器,这几乎违背了目的.
当我设置发行版时,我将TTL保留为默认值,我认为这意味着24小时.
如果我使用S3存储桶作为源而不是Web服务器,则资产将按预期直接从CloudFront加载.
我最近改用CloudFront作为CDN,使用简单的服务
config.action_controller.asset_host = "url of your cloudfront distribution" 在我的配置文件中。
一切运行良好,CF吸收了它还不够好的资产,为它们提供了很好的服务,比使用资产管道更快。
但是,由于多种原因,从CF而非我们自己的服务器提供服务时,我们的某些JS会中断。因此,我正在寻找一种仅将CF用于图像(或图像/ css)资产的方法,并且仍然直接从我们自己的服务器提供已编译的application.js文件。
有任何想法吗?
从Amazon Cloudfront发行版立即播放HTML5视频的最佳方法是什么?
我已经对该主题进行了大量研究,但似乎并没有找到最佳的方法。
我目前正在使用popcorn.js,并且也尝试使用video.js。视频可以正常运行,只是不能立即在所有浏览器上播放。在IE中,它似乎是先下载整个文件。
目前,在Amazon Cloudfront发行版上使用MP4的HTML5视频最简单的解决方案是什么?
将SSL证书上传到AWS IAM以进行cloundfront时,我遇到了问题.我认为该命令没问题且文件正常但仍然出错.
我们使用以下命令上传SSL证书:
aws iam upload-server-certificate --server-certificate-name SSL-CloudFront --certificate-body Public.cer --private-key keyStore.pem --certificate-chain STAR_xxxxxx_com.ca-bundle --path /cloudfront/ICE_SSL/
Run Code Online (Sandbox Code Playgroud)
错误:
调用UploadServerCertificate操作时发生客户端错误(MalformedCertificate):无法解析证书.请确保证书是PEM格式.
我该如何解决这个问题?
Cloudfront配置为缓存来自我们应用的图像.我发现这些图像很快就从缓存中逐出.由于图像是动态生成的,因此对于我们的服务器来说这是非常激烈的.为了解决这个问题,我设置了一个测试用例.
该图像是由我们的原始服务器送达正确Last-Modified和Expires头.
由于该站点仅为HTTPS,因此我将其设置Viewer Protocol Policy为HTTPS.Forward Headers被设置为None与Object Caching对Use Origin Cache Headers.
我在11:25:11请了一张照片.这返回了以下状态和标题:
缓存:没有
到期日:2016年9月29日星期四09:24:31 GMT
稍后重新加载(11:25:43)返回图像:
缓存:是的
到期日:2016年9月29日星期四09:24:31 GMT
差不多三个小时后(14:16:11)我去了同一页面,图片载满了:
缓存:是的
到期日:2016年9月29日星期四09:24:31 GMT
由于图像仍然由浏览器缓存,因此可以快速加载.但我无法理解Cloudfront如何无法返回缓存的图像.因此,应用程序必须再次生成图像.
我读到Cloudfront在闲置几天后会从其缓存中驱逐文件.如上所述,情况并非如此.怎么会这样?
在Amazon S3上,您可以按域限制对存储桶的访问。
但是据我从一个有用的StackOverflow用户那里了解到,您无法在CloudFront上执行此操作。但为什么?如果我是对的,CloudFront仅允许基于时间的限制或IP限制(->,所以我需要知道随机访问者的IP。
这是来自S3文档的引文,暗示可能存在按域限制:
--->“要允许从您的网站上对这些对象进行读取访问,您可以添加一个存储桶策略,该存储桶策略使用aws:referer键,允许带有条件的s3:GetObject权限,该get请求必须源自特定的网页。
->有没有办法使这种方法也可以在CloudFront上使用?还是为什么CloudFront上没有类似的东西?
->是否有类似的服务可以实现,更容易设置?
由于我们的博客已移至Cloudfront,tinyMCE编辑器不会显示。根据我们的服务器管理员的说法,博客安装是“在标准ec2实例上,其前端带有Cloudfront,但除了静态内容外,不缓存任何内容”。
此外,它还在nginx上运行。
我们做了全新的WP安装,仅从备份中替换了我们的配置文件和wp-content。我没有包括检查它们是否是问题的插件。仍然不是tinyMCE。
我已经在Google上搜索了很多,但是没有任何效果,或者该修复不适用于我们的服务器配置。
TIA-D
我有一个Cloudfront发行版,它将我的s3存储桶之一作为其原始服务器。这些文件由第三方附件上传器上传到s3。
当我尝试通过cloudfront在s3中访问文件时,出现“ 403禁止访问”错误,并显示访问被拒绝XML(如下所示)。但是,当我手动将文件上传到s3存储桶时,我可以通过cloudfront访问该文件。
除文件所有者外,这两个文件的权限相同。对于由我手动上传的文件,文件所有者是我的帐户,对于由上传者上传的文件,它就是上传者。第三方附件上传器将对象的完整访问权限授予存储桶所有者。另外,我限制了存储桶访问权限,但没有查看者访问权限。
可能导致此错误的原因是什么?我该如何调试呢?
我将一个S3存储桶配置为网站终结点,以托管静态网页。
我想将Cloudfront放在它前面。
我从S3存储桶的“属性” :: “静态网站托管”中复制了“端点” 。
它的形式为: “ example.com.s3-website-us-east-1.amazonaws.com”
当我尝试使用Aws SDK CloudFront客户端进行create_distribution时,出现以下错误:
Aws::CloudFront::Errors::InvalidArgument
The parameter Origin DomainName does not refer to a valid S3 bucket.
Run Code Online (Sandbox Code Playgroud)
Ruby代码示例如下:
cloudfront = Aws::CloudFront::Client.new()
cloudfront.create_distribution({
distribution_config: {
...
origins: {
quantity: 1,
items: [{
id: "Custom-example.com.s3-website-us-east-1.amazonaws.com",
domain_name: "example.com.s3-website-us-east-1.amazonaws.com",
s3_origin_config: {
origin_access_identity: ""
},
origin_path: ""
}]
},
...
}
Run Code Online (Sandbox Code Playgroud)
})
我可以通过GUI和CLI使用相同的“原始域名”创建分发
aws cloudfront create-distribution \
--origin-domain-name example.com.s3-website-us-east-1.amazonaws.com \
--default-root-object index.html
Run Code Online (Sandbox Code Playgroud) 我正在尝试限制对S3存储桶的访问,并且只允许基于引用者的列表中的某些域.
存储桶策略基本上是:
{
"Version": "2012-10-17",
"Id": "http referer domain lock",
"Statement": [
{
"Sid": "Allow get requests originating from specific domains",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example.com/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"*othersite1.com/*",
"*othersite2.com/*",
"*othersite3.com/*"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
这个otherite1,2和3调用一个对象,我已经存储在域example.com下的s3存储桶中.我还有一个附加到存储桶的云端分发.我在字符串条件之前和之后使用*通配符.引用者可以是othersite1.com/folder/another-folder/page.html.引用者也可以使用http或https.
我不知道为什么我得到403 Forbidden错误.
我这样做基本上是因为我不希望其他网站调用该对象.
任何帮助将不胜感激.