博客转向Amazon
之前的CDN是由render的cdn托管的,之前的cdn属于fastly,国内访问速度还是可以的,但是最近render将CDN转为free的cloudflare了,那么完全没有了优势,所以将网站转为手动上传到aws的s3,再进行cloudfront托管。
预计流程
1.下架相关域名,
2.更改上传方式,添加ignore将public屏蔽。
chocolate 安装
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
3.添加rclone到系统Path位置,添加s3的秘钥
chocolatey.exe install rclone
4.考虑使用Picgo上传的图床方式,还是硬编码将链接格式不直接用static。而是将网址硬编码进去。
chocolatey.exe install picgo
5.public 写好脚本上传。
6.添加cloudfront,调整流量限流方式,防止被打DDOS。
7.计费项高于3刀时,手动将图片转为自己的VPS图床,使用lysky图床自建。(其他静态资源可以用cdn)
本机配置rclone,aws-cli
按照提示来,
测试:
rclone ls blog.fengidea.com:blog.fengidea.com.1/
rclone sync -P .\public\ blog.fengidea.com:blog.fengidea.com.1/
写脚本到git目录下。
本地配置aws-cli
因为cloudfront 需要缓存刷新,所以需要安装aws-cli,下载位置是
https://awscli.amazonaws.com/AWSCLIV2.msi
下载后安装,配置sk,ak。
aws-cli 报 ssl错误
查找后是代理没有认证可用的证书,需要手动添加证书到环境变量中。
setx AWS_CA_BUNDLE "C:\Program Files\Amazon\AWSCLIV2\awscli\botocore\cacert.pem"
windows下找到对应的ca证书,设置变量,请仔细检查ca位置,不要漏路径。
或者用–no-verify-ssl 命令
aws s3 ls --no-verify-ssl
可能需要添加代理
setx http_proxy http://127.0.0.1:10809
setx https_proxy http://127.0.0.1:10809
aws s3 ls
测试成功
aws-cli 刷新cloudfront 缓存
失效次数,会进行计费,但是全部刷新/*
只会记一次的失效费用。当然s3的流量费另计。
自行更换对应的d-id。
aws cloudfront create-invalidation --distribution-id E3Q0O3D0J34TN6 --paths "/*"
设置s3 sync cp命令
aws s3 sync .\public\ s3://blog.fengidea.com.1
sync 默认上传修改过的内容,不上传全站
aws s3 cp .\public\ s3://blog.fengidea.com.1/ --recursive
cp强制覆盖全部内容,上传全站。
Amazon配置S3
区域选择
因为要选用cloudfront,利用1T流量,同时防止访问量打在S3上,不选择Hong Kong 节点,而是Japan节点,同时有DDOS防御。
创建同名存储桶。选择ACL为“阻止公有访问”。(公开访问可能会有用户直接访问s3,)
配置静态网页
在存储桶的“属性”选项卡,“静态网站托管”一栏,选择“启用”,同时添加默认“index.html”和错误“404.html”.
配置cloudfront 源
配置cloudfront 证书
需要配置cname确认本人拥有域名
到DNS上配置CNAME验证
基本配置成功
编辑cloudfront源
1.源域选择对应的AWS源。这里选择s3存储桶上的源。
2.源路径默认不写,如果有子文件夹作为源路径,那就要写。
3.使用OAI创建更新存储桶策略,限制只访问Cloudfront.
这里会更新s3存储桶上的Policy策略,限制允许Cloudfront访问。
4.启用源护盾。默认选择东京节点。部分网站会直接访问源护盾。
添加Lambda@Edge关联
5 .Lambda@Edge函数关联 : arn:aws:lambda:us-east-1:676045833814:function:serverlessrepo-standard-r-StandardRedirectsForClou-YMVnvbBHqete:1
这里需要注意,需要末尾加上版本号 :1
函数的目的将所有的无index.html 位置内部定向到index.html。
因为函数会创建IAM权限,所以使用网络上的配置好的cloudformation函数。https://github.com/digital-sailors/standard-redirects-for-cloudfront
在这个页面添加cloudformation https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:621073008195:applications~standard-redirects-for-cloudfront
只有弗吉尼亚北部区域有edge
通过以下网址登录 AWS Management Console并打开 AWS Lambda 控制台:https://console.aws.amazon.com/lambda/。
重要
确保您位于 **US-East-1(弗吉尼亚北部)**区域 (us-east-1)。您必须位于该区域,才能创建 Lambda@Edge 函数。
在这个页面添加cloudformation https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:621073008195:applications~standard-redirects-for-cloudfront
配置cloudfront 证书
需要配置cname确认本人拥有域名
基本配置成功
配置index.html 的转发
hugo中,默认导向只有根号,没有index.html,需要配置lambda@Edge将所有子文件夹的请求转向到index.html上。
选择cloud formation 创建
https://github.com/digital-sailors/standard-redirects-for-cloudfront
标准重定向,可以创建出IAM函数,注意需要先将Lambda函数区域转到us-east-1,仅这个存在对应Lambda@Edge。
其他备注
arn的使用版本
您可以使用限定的 ARN 或非限定的 ARN 来引用您的 Lambda 函数。
限定的 ARN – 具有版本后缀的函数 ARN。以下示例引用
helloworld
函数的版本 42。arn:aws:lambda:aws-region:acct-id:function:helloworld:42
非限定的 ARN – 不具有版本后缀的函数 ARN。
arn:aws:lambda:aws-region:acct-id:function:helloworld
Note:不使用HongKong节点
Don’t choose an Amazon S3 bucket in any of the following Regions, because CloudFront doesn’t deliver standard logs to buckets in these Regions:
- Africa (Cape Town) af-south-1
- Asia Pacific (Hong Kong) ap-east-1
- Asia Pacific (Jakarta) ap-southeast-3
- Europe (Milan) eu-south-1
- Middle East (Bahrain) me-south-1
Amplify Build
Amplify Build需要付费,说是选择了8G的服务器build,价格比较贵,我就是一个hugo应用没必要使用。
所以还是本地build后转到s3存储桶吧。
CloudFront缓存刷新
由于cloudfront默认缓存是24小时,所以每次上传后需要aws 命令行刷新,或者指定缓存失效,这里需要使用命令行,rclone的方式不行(好伤感)。
Lambda@Edge 定价详情
Lambda@Edge 根据三个因素向您收费:函数调用总数、所需的计算容量和计算持续时间。 Lambda@Edge 针对全球的 CloudFront 事件每开始执行一次响应,就计算一次调用。调用定价为每 100 万次调用 0.60 USD(每次调用 0.0000006 USD)。容量和持续时间按使用的 GB/秒数量一起计算。持续时间从代码开始执行时算起,直到它返回或终止为止。对于所使用的 GB/秒数量,您需要支付 0.00005001 USD。例如,如果您每调用一次 Lambda@Edge 函数即可分配 128MB 的可用内存,那么您的持续时间费用为每使用 128MB/秒收费 0.00000625125 USD。注意,Lambda@Edge 函数的最小计费时间单位为 1ms。Lambda@Edge 目前不提供免费套餐。
被DDos的思路
虽然我们用不了WAF,太贵了,但是我们可以使用SNS报警通知系统,用cloud Function 的触发器设置高流量报警后的工作流,达到每分钟超过一定量之后就关Cloudfront的思路。
同时SNS可以接入aws chatbot,手机自动提醒。nice。
警报的免费层级
博客换到oss的香港如何
17**dfkjgklfdjg** 315 天前阿里云 OSS,基本买个域名( 1 年 10+),OSS 选香港,买个对象存储 OSS 资源包( 2 年才 18 ),然后开通一下免费的 Web 应用托管服务,SSL 证书找个免费的就好。
阿里云的新客没有便宜了
以后各大云厂商也会是现在的情况了。所以huawei云的可以考虑买了,可以做
1.网站
2.nps
3.frp代理
4.卖备案码