Aws S3 加上cloudfront,可以直接代替nginx。并且有更高的可用性。于是告诉给架构师这个方案后,就开始配置了。
- 开bucket,设置静态托管
设置bucket policy,所有资源均为public
1
2
3
4
5
6
7
8
9
10
11
12
13{
"Version": "2012-10-17",
"Id": "Policy1586756429373",
"Statement": [
{
"Sid": "Stmt1586756xxxx5",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::xxx-speedup/*"
}
]
}开始Cloudfront,限定只允许GET,HEAD 两种method。还有开启Gzip。暂时用最简单的配置。
上传资源到S3
Jenkins plugin 本有一个S3插件,可是依赖maven 3.5版本,由于现在开发团队在用3.4,于是放弃该插件。
改用传统的步骤:jenkins执行shell,
AWS_ACCESS_KEY_ID与AWS_SECRET_ACCESS_KEY,就取巧通过参数化构建过程带入吧!恰巧这个插件会将参数设置为环境变量,所以就这么办了。(Pipeline + Credentials会更加优雅)
注意上传前,自己先gzip一下,因为S3可是不会自动帮你压缩的。当然这个也可以通过event驱动Lambda来优雅实现。
1
2find ./ -type f -exec gzip "{}" \; -exec mv "{}.gz" "{}" \;
aws s3 mv ./ s3://xxx-speedup --recursive --exclude ".git/*" --content-encoding "gzip"