我已经设置了一个发行版,但我对可以在Cloudfront中设置的CNAME的目的感到有点困惑.假设我指定的Cloudfront域是d27fwrff25jcfdafa.cloudfront.net,我可以使用AWS管理控制台分配"nice"CNAME static.example.com.
我不明白为什么我想这样做.为什么我不在我的网站DNS记录中创建CNAME并直接指向d27fwrff25jcfdafa.cloudfront.net而不是在Cloudfront中创建CNAME?这就是我所做的,它完美无缺,但我不喜欢不理解的东西.
或者,如果我仅使用管理控制台创建CNAME,那么我是否需要将我的名称服务器设置为亚马逊,以便可以正确解析CNAME?我在文档中找不到任何提及的步骤,所以我想我必须遗漏一些东西!
谢谢你的帮助,保罗.
我有一个亚马逊S3桶,里面有大约300K商品,供大型网站使用.我想设置从S3存储桶中提供的所有CloudFront对象的到期时间,以便用户的计算机将它们缓存在浏览器中.是否有一种简单的方法可以对存储桶中当前的所有s3对象设置缓存控制,最重要的是为存储桶设置默认值,以便添加的任何新项目也可以获得过期和缓存控制标头,或者可以使用CloudFront完成此操作?
到目前为止,我已经阅读了许多AWS文档但却一无所获:
我正在尝试将特定IAM用户的访问权限授予特定的Cloudfront分发版.我试过这个政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1428659042000",
"Effect": "Allow",
"Action":["cloudfront:*"],
"Resource": [ "arn:aws:cloudfront:E3J2B3GMZI73G0" ]
}
]
}
Run Code Online (Sandbox Code Playgroud)
AWS-IAM策略检查程序表明arn无效.根据有关Cloudfront的IAM限制的文档,AWS未指出任何限制对特定分发的访问的示例.他们总是指:
"Resource":"*"
Run Code Online (Sandbox Code Playgroud)
关于如何让特定用户访问具体Cloudfront Distribution的想法?
我在S3上使用我的文件在cloudfront中创建了一个发行版.它工作正常,我的所有文件都可用.但今天我在S3上更新了我的文件并试图通过Cloudfront访问它们,但它仍然提供了旧文件.
我错过了什么?
我创建了一个用于静态网站的cloudfront发行版.S3是原始服务器.现在,如果我们访问cloudfront url,它会重定向到S3位置.
d2s18t7gwlicql.cloudfront.net或test.telekha.in
在浏览器中显示 https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/dashboard
我期待https://test.telekha.in/#/dashboard
如果我通过curl 访问https://test.telekha.in,它将返回我的index.html文档
如果我通过curl 访问http://test.telekha.in它会返回
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>CloudFront</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但在浏览器中,http和https都重定向到https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/
请让我知道如何解决此问题.
amazon-s3 amazon-web-services amazon-cloudfront amazon-route53
这个问题已经存在,但我认为它会对SO产生更大的影响.
我创建了一个AWS Lambda @ Edge函数,以便在Cloudfront URL到达Origin之前重写它.
AWS Lambda @ Edge函数在发布时会自动复制到所有区域,因此我对每个区域都看到这一点并不感到惊讶:
这里开始出现问题:
我删除了Lambda @ Edge,因为它是一个测试,我想开始一个全新的,但复制品不会同时被删除.
当时没什么大不了的,我以为我可以创建一个新的Lambda @ Edge功能.
但你不能,因为Cloudfront触发器一次只能使用一个函数(因为副本使用它,你不能创建一个新函数).
而且,触发器也不能删除.
所以现在我无法在任何地方使用Lambda @ Edge复制品,我无法删除,也无法创建类似的复制品.
TL; DR
我很感激能得到这个
弗朗索瓦的 帮助
编辑:
我绝对认为这是一个错误,因为在我的副本页面中,主ARN的链接以404响应.
lambda amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge
我尝试做的是通过AWS控制台为CloudFront发行版启用标准日志记录,如下图所示:
我设置了以下 S3 存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::931426637260:user/relu"
},
"Action": [
"s3:GetBucketAcl",
"s3:PutBucketAcl"
],
"Resource": "arn:aws:s3:::[...]"
}
]
}
Run Code Online (Sandbox Code Playgroud)
“阻止所有公共访问”已关闭。
不过,我不断收到此错误:
您为 CloudFront 日志指定的 S3 存储桶未启用 ACL 访问:[...].s3.amazonaws.com
即使我尝试以 root 用户身份启用日志记录,也会收到此错误。
有人知道可能出了什么问题吗?
我使用Amazon Cloudfront托管我所有网站的图像和视频,以便更快地为我的用户提供服务,这些用户遍布全球.我还将非常积极的前向缓存应用于Cloudfront上托管的元素,设置Cache-Control
为public, max-age=7776000
.
我最近发现我的烦恼是第三方网站正在与我的Cloudfront服务器进行热链接,以便在未经授权的情况下在自己的页面上显示图像.
我已经配置.htaccess
为阻止我自己的服务器上的热链接,但是没有找到在Cloudfront上执行此操作的方法,这似乎本身不支持该功能.而且,令人讨厌的是,亚马逊的Bucket Policies(可用于防止热链接)仅对S3产生影响,它们对CloudFront分发没有影响[ link ].如果您想利用这些政策,您必须直接从S3提供内容.
在我的服务器日志中搜索hotlinkers并手动更改文件名并不是一个真实的选择,尽管我一直在这样做以结束最明显的攻击.
欢迎大家提出意见.
我正在使用脚本开发AWS创建存储桶和分发.我已经在AWS云形成控制台中创建了一个脚本并运行堆栈模板脚本.
我正在使用脚本和规范ID为S3存储桶创建bucketpolicy.创建存储桶策略后,我想在脚本中动态地将其分配给"OriginAccessIdentity".我想将桶策略生成的id添加到"OriginAccessIdentity"属性.
如何实现这一功能?
脚本:
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "AWS CloudFormation Template S3_With_CloudFront_Distribution",
"Parameters" : {
"bucketname" : {
"Type" : "String",
"Description" : "test"
},
"cannonicalid" : {
"Type" : "String",
"Description" : "234213523145314534523452345234523452345"
}
},
"Conditions" : {
"CreateProdResources" : {"Fn::Equals" : [{"Ref" : "EnvType"}, "dev"]}
},
"Resources" : {
"testbucket" : {
"Type" : "AWS::S3::Bucket",
"Properties" : {
"BucketName" : { "Ref" : "bucketname" },
"WebsiteConfiguration" : {
"IndexDocument" : "index.html"
}
}
},
"mybucketpolicy" : …
Run Code Online (Sandbox Code Playgroud) 在发出CORS请求时,如果请求的Origin位于允许的源列表中,则响应包含Access-Control-Allow-Origin
标头和Vary: Origin
标头.
Vary:Origin告诉CDNs等,响应是根据请求者的Origin头值协商的.
问题是(我已经测试了领先的CDN提供商),如果请求者在他们的请求中没有提供Origin头,或者Origin值不是允许的那个,则响应不包括变化:起源于回应.
如果CDN预先形成CORS总是在响应头中响应Vary:Origin吗? 如果不是,CDN会认为它可以对任何Origin值提供相同的响应.然后,通过使用随机原始值进行许多请求,可以填充CDN缓存.
amazon-s3 ×4
amazon ×1
amazon-iam ×1
aws-lambda ×1
azure-cdn ×1
caching ×1
cdn ×1
cname ×1
cors ×1
hotlinking ×1
lambda ×1