AWS 发布React + Python项目 + Godaddy

2023-04-24  本文已影响0人  六月圈圈

项目简介

前端使用React,将使用S3托管静态网站,使用cloudfront代理

后端使用Python,将使用ECS发布项目

域名在Godaddy购买,现托管到Route53

1. 域名托管

在Route53创建Hosted Zone,创建成功后,会有NS records,将这些NS records更新到godaddy的Domain DNS manage里。

注意:如果godaddy之前有CNAME,MX这些记录,一定要先备份,右上角有导出,可以先导出,之后修改了DNS manage之后,再将这些记录添加到Route53里,否则会影响邮件等功能(如果有的话)!


image.png

2. HTTPS访问

在ACW里require certifier,填写你要用的域名或者子域名,之后会有对应的CNAME,可以点击右上的按钮,自动添加到Route53.


image.png

3. 前端静态文件发布

创建S3 bucket,由于cloudfront不允许代理public的bucket,所以在设置S3 bucket权限的时候不能设置为public。


image.png

创建后添加如下权限

{
    "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.创建Cloudfront代理前端页面

在Cloudfront里Create Distributions,Origin domain选择第三步创建的S3 bucket


image.png

Domain name填写第二部ACM里用到的域名,Custom SSL certificate就选择第二部创建的ACM


image.png
5.ECS发布后端API

由于我开发中使用了docker,所以计划发布用ECR。先用docker build image将后端代码打包成docker image,然后在ECS里点击左侧Amazon ECR -> Repositories -> Create Repositories


image.png

ECS Task definitions创建 task, image选择上面的image
在ECS Clusters创建service, container选择上面创建的task, image选择上面创建的image, Load balancer type选择 ALB。
最后在router53添加接口子域名的 A record 到上面创建的ALB

上一篇 下一篇

猜你喜欢

热点阅读