标签: amazon-cloudfront

具有自定义来源的CloudFront分配重定向请求

我设置了CloudFront分配以使用自定义源 - 我的客户端的Web服务器(www.mydomain.com).

当我加载网页并检查Chrome网络检查器的"网络"标签时,资产显示为来​​自原始服务器(www.mydomain.com),"启动器"列将CloudFront网址显示为重定向.我认为这意味着CloudFront正在将资产请求重定向到我的原始服务器,这几乎违背了目的.

当我设置发行版时,我将TTL保留为默认值,我认为这意味着24小时.

如果我使用S3存储桶作为源而不是Web服务器,则资产将按预期直接从CloudFront加载.

amazon-web-services amazon-cloudfront

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

仅使用Rails从CloudFront服务图像资产

我最近改用CloudFront作为CDN,使用简单的服务

config.action_controller.asset_host = "url of your cloudfront distribution" 在我的配置文件中。

一切运行良好,CF吸收了它还不够好的资产,为它们提供了很好的服务,比使用资产管道更快。

但是,由于多种原因,从CF而非我们自己的服务器提供服务时,我们的某些JS会中断。因此,我正在寻找一种仅将CF用于图像(或图像/ css)资产的方法,并且仍然直接从我们自己的服务器提供已编译的application.js文件。

有任何想法吗?

ruby-on-rails cdn asset-pipeline amazon-cloudfront

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

对HTML5中的视频流感到困惑

从Amazon Cloudfront发行版立即播放HTML5视频的最佳方法是什么?

我已经对该主题进行了大量研究,但似乎并没有找到最佳的方法。

我目前正在使用popcorn.js,并且也尝试使用video.js。视频可以正常运行,只是不能立即在所有浏览器上播放。在IE中,它似乎是先下载整个文件。

目前,在Amazon Cloudfront发行版上使用MP4的HTML5视频最简单的解决方案是什么?

javascript video html5 amazon-cloudfront

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

AWS CloudFront SSL证书 - MalformedCertificate错误

将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格式.

我该如何解决这个问题?

ssl amazon-web-services amazon-cloudfront aws-cli

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

为什么Cloudfront会在几小时内从缓存中驱逐对象?

Cloudfront配置为缓存来自我们应用的图像.我发现这些图像很快就从缓存中逐出.由于图像是动态生成的,因此对于我们的服务器来说这是非常激烈的.为了解决这个问题,我设置了一个测试用例.

原始标题

该图像是由我们的原始服务器送达正确Last-ModifiedExpires头.

原始标题

Cloudfront缓存行为

由于该站点仅为HTTPS,因此我将其设置Viewer Protocol PolicyHTTPS.Forward Headers被设置为NoneObject CachingUse Origin Cache Headers.

cloudfront缓存行为设置

初始图像请求

我在11:25:11请了一张照片.这返回了以下状态和标题:

  • 代码:200(OK)
  • 缓存:没有

  • 到期日:2016年9月29日星期四09:24:31 GMT

  • 最后修改时间:2015年9月30日星期三09:24:31 GMT
  • X-Cache:来自云端的小姐

初始请求标头

后续请求

稍后重新加载(11:25:43)返回图像:

  • 代码:304(未修改)
  • 缓存:是的

  • 到期日:2016年9月29日星期四09:24:31 GMT

  • X-Cache:来自云端

后续请求标头

几个小时后的请求

差不多三个小时后(14:16:11)我去了同一页面,图片载满了:

  • 代码:200(OK)
  • 缓存:是的

  • 到期日:2016年9月29日星期四09:24:31 GMT

  • 最后修改时间:2015年9月30日星期三09:24:31 GMT
  • X-Cache:来自云端的小姐

在此输入图像描述

由于图像仍然由浏览器缓存,因此可以快速加载.但我无法理解Cloudfront如何无法返回缓存的图像.因此,应用程序必须再次生成图像.

我读到Cloudfront在闲置几天后会从其缓存中驱逐文件.如上所述,情况并非如此.怎么会这样?

caching image amazon-cloudfront

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

Amazon CloudFront与S3->限制按域访问?

在Amazon S3上,您可以按域限制对存储桶的访问。

但是据我从一个有用的StackOverflow用户那里了解到,您无法在CloudFront上执行此操作。但为什么?如果我是对的,CloudFront仅允许基于时间的限制或IP限制(->,所以我需要知道随机访问者的IP。

这是来自S3文档的引文,暗示可能存在按域限制:

--->“要允许从您的网站上对这些对象进行读取访问,您可以添加一个存储桶策略,该存储桶策略使用aws:referer键,允许带有条件的s3:GetObject权限,该get请求必须源自特定的网页。

->有没有办法使这种方法也可以在CloudFront上使用?还是为什么CloudFront上没有类似的东西?

->是否有类似的服务可以实现,更容易设置?

amazon amazon-s3 amazon-web-services amazon-cloudfront

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

由于移至Cloudfront WordPress tinyMCE,因此未显示

由于我们的博客已移至Cloudfront,tinyMCE编辑器不会显示。根据我们的服务器管理员的说法,博客安装是“在标准ec2实例上,其前端带有Cloudfront,但除了静态内容外,不缓存任何内容”。

此外,它还在nginx上运行。

我们做了全新的WP安装,仅从备份中替换了我们的配置文件和wp-content。我没有包括检查它们是否是问题的插件。仍然不是tinyMCE。

我已经在Google上搜索了很多,但是没有任何效果,或者该修复不适用于我们的服务器配置。

TIA-D

wordpress tinymce amazon-cloudfront

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

访问另一个帐户上传的文件时,Cloudfront 403错误

我有一个Cloudfront发行版,它将我的s3存储桶之一作为其原始服务器。这些文件由第三方附件上传器上传到s3。

当我尝试通过cloudfront在s3中访问文件时,出现“ 403禁止访问”错误,并显示访问被拒绝XML(如下所示)。但是,当我手动将文件上传到s3存储桶时,我可以通过cloudfront访问该文件。

除文件所有者外,这两个文件的权限相同。对于由我手动上传的文件,文件所有者是我的帐户,对于由上传者上传的文件,它就是上传者。第三方附件上传器将对象的完整访问权限授予存储桶所有者。另外,我限制了存储桶访问权限,但没有查看者访问权限。

Cloudfront返回的错误

可能导致此错误的原因是什么?我该如何调试呢?

file-upload amazon-s3 amazon-web-services amazon-cloudfront

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

您如何使用SDK创建指向S3(静态托管)网站终端节点的AWS 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)

ruby amazon-web-services amazon-cloudfront aws-sdk-ruby

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

基于引用来限制对AWS S3存储桶的访问

我正在尝试限制对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错误.

我这样做基本上是因为我不希望其他网站调用该对象.

任何帮助将不胜感激.

policy amazon-s3 amazon-web-services amazon-cloudfront

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