大体要点,必参考
1、S3 可以使用aws的sdk集合包,也可以使用S3专用的包:@aws-sdk/client-s3;
2、通过sdk上传的文件,不带自动设置 Content-Type 的逻辑(同样的情况发生在阿里云),所以这里的设置应该属于前端web代码。sdk就不带了,所以要自备mime表;
3、CloudFront 会根据源站的 Content-Type 自动应用压缩算法;
4、可以启用Content-Type的类型参考链接:
提供压缩文件 - Amazon CloudFront
但是请注意!!! CF 的自动压缩,测试有大小限制。大约大于6M的文件就要注意是否被CF原样输出了(因为他们认为过大的文件会导致计算资源消耗),网络消耗惊人。
5、CloudFront的CDN缓存策略,会跟阿里云类似,会根据源站的 Cache-Control 来。当然也可以用他们的TTL设定。不过源站的缓存策略完备的话,这里肯定用不着;
6、CloudFront有一个名词叫缓存键,cache key,其实就是定位唯一一条资源的意思。为什么不是直接用文件名呢,是因为CDN还可以根据上发的header或者 cookies 或query_string 做key来映射缓存。比如,假设一个文件 a.txt,设定 header t 为缓存,那此cache的key就可能类似 a.txt_header_t_xx 来缓存所有t = xx 的时候,a.txt。
注意!!!此处有一个巨大的差异,阿里云在默认情况下,会对 query_string 做key。所以客户端的 update 文件夹下的文件,客户端之前在国内是用类似 xxx.game.net/5/update/update.txt?t=135456614 的方法强制CDN回源失效的。
但是!AWS在设置CloudFront 回源S3时,默认的策略,是只把url当key的!由此客户端的取巧全部失效。所以只能老老实实的设置 cache-control。
7、由于6的失误引起的需要no-cache的CDN节点资源已经缓存在外,就需要清空CDN节点了。AWS没有阿里云类似的图形操作界面直接刷新,需要用他们的命令行客户端。
文档:安装或更新最新版本的 AWS CLI - AWS Command Line Interface
步骤:
安装:
$
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
配置config(生成在 $HOME/.aws/credentials):
$ aws configure
AWS Access Key ID [None]: XXXXXX
AWS Secret Access Key [None]: XXXXX
Default region name [None]:
Default output format [None]:
使其失效:
aws cloudfront create-invalidation --distribution-id --paths "/*"
具体的部署步骤
1、在对应的区域,创建对应的S3的bucket。注意不要开放公有访问(省的被偷流量,CF免费,这个要钱的!)
其他保持默认,创建即可。
2、创建一个CF分发
选择S3,不需要自己输入(走外网端口会起反效果):
选填名字
选择Legacy access,然后创建一个OAI,并对这个bucket应用更新(不然就要去S3修改了,很难受)
如果这个时候回到S3,就可以看到 bucket 已经生效私有访问策略:
其他不用动,选择Cache策略:
这个策略是AWS对S3的建议,其实很基础,如下:
这个策略提到了上面的很多要素。
CF有每个用户1个月1TB免费流量的 Free Tier,薅羊毛!
然后这里要填入自己的CNAME(也就是用户直接用到的域名了)
注意代理https需要选择对应的证书。
创建好之后,在DNSPod或者其他DNS运营商,解析一下CF的CNAME即可:
文章来源:https://www.toymoban.com/news/detail-802034.html
至此可以愉快的访问了。在海外AWS的素质一流。文章来源地址https://www.toymoban.com/news/detail-802034.html
到了这里,关于AWS 的S3 与 CloudFront 配合纪要的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!