項(xiàng)目簡介
前端使用React,將使用S3托管靜態(tài)網(wǎng)站敢靡,使用cloudfront代理
后端使用Python避诽,將使用ECS發(fā)布項(xiàng)目
域名在Godaddy購買宪拥,現(xiàn)托管到Route53
1. 域名托管
在Route53創(chuàng)建Hosted Zone菊碟,創(chuàng)建成功后戈轿,會(huì)有NS records筛圆,將這些NS records更新到godaddy的Domain DNS manage里篙顺。
注意:如果godaddy之前有CNAME,MX這些記錄空免,一定要先備份空另,右上角有導(dǎo)出盆耽,可以先導(dǎo)出蹋砚,之后修改了DNS manage之后,再將這些記錄添加到Route53里摄杂,否則會(huì)影響郵件等功能(如果有的話)坝咐!
image.png
2. HTTPS訪問
在ACW里require certifier,填寫你要用的域名或者子域名析恢,之后會(huì)有對應(yīng)的CNAME墨坚,可以點(diǎn)擊右上的按鈕,自動(dòng)添加到Route53.
3. 前端靜態(tài)文件發(fā)布
創(chuàng)建S3 bucket映挂,由于cloudfront不允許代理public的bucket泽篮,所以在設(shè)置S3 bucket權(quán)限的時(shí)候不能設(shè)置為public。
創(chuàng)建后添加如下權(quán)限
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowCloudFrontServiceOnlyPrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mysonsgroup-website/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::296855284431:distribution/E175Y2EONAZ9G1"
}
}
}
]
}
4.創(chuàng)建Cloudfront代理前端頁面
在Cloudfront里Create Distributions柑船,Origin domain選擇第三步創(chuàng)建的S3 bucket
Domain name填寫第二部ACM里用到的域名帽撑,Custom SSL certificate就選擇第二部創(chuàng)建的ACM
5.ECS發(fā)布后端API
由于我開發(fā)中使用了docker,所以計(jì)劃發(fā)布用ECR鞍时。先用docker build image將后端代碼打包成docker image亏拉,然后在ECS里點(diǎn)擊左側(cè)Amazon ECR -> Repositories -> Create Repositories
ECS Task definitions創(chuàng)建 task, image選擇上面的image
在ECS Clusters創(chuàng)建service逆巍, container選擇上面創(chuàng)建的task及塘, image選擇上面創(chuàng)建的image, Load balancer type選擇 ALB锐极。
最后在router53添加接口子域名的 A record 到上面創(chuàng)建的ALB