15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 将静态网站部署到亚马逊AWS

将静态网站部署到亚马逊AWS

时间:2023-07-27 18:09:01 | 来源:网站运营

时间:2023-07-27 18:09:01 来源:网站运营

将静态网站部署到亚马逊AWS:有时我们需要构建一个静态网站,利用Amazon AWS的相关服务可以很好的满足各方面需求:一是不用专门建立一个web服务器,二是可以自动化部署,三是可以支持HTTPS。

在AWS S3创建存储桶

首先创建一个bucket,命名为你的域名,比如“example.com”,取消Block all public access。如图

在bucket的Properties页,激活Static website hosting:

在bucket的Permissions页设置Bucket Policy:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicRead", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::example.com/*" } ]}其中“example.com”是bucket的名字。

将静态网站的内容上传到bucket,并且设置访问权限为public:

如果需要使用www访问,也需要设置一个bucket,名称叫“www.example.com”,这里的“example.com”改成你自己的域名。同样取消Block all public access。

在bucket的Properties页,激活Static website hosting,不同于前一个bucket,这里设置为Redirect到前一个bucket:

在bucket的Permissions页设置Bucket Policy:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicRead", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::www.example.com/*" } ]}


在AWS Route 53创建DNS

在Route 53中创建一个hosted zone,会得到四个域名服务器。将域名的DNS指向这四个服务器。比如域名服务商是godaddy,则在godaddy账号中设置。

在AWS Certificate Manager中申请证书

为了支持HTTPS,需要为网站申请证书:

在Validation步骤中,点击Create record in Route 53按钮,会自动在Route 53中添加一条记录,用于验证该域名的所有权。

使用AWS CloudFront实现https

在CloudFront里创建一个Distribution,注意设置CNAME和选择Custom SSL Certificate:

www.example.com”也类似。 设置完需要等一段时间(5~45分钟?)才能在Route 53设置Alias中看到。(等到CloudeFront中Distribution的Status从In Progress变成Deployed)。

在AWS Route 53中将域名指向CloudFront中生成的域名

在上一节CloudFront中会生成一个“xxx.cloudfront.net”的域名。在Route 53的设置中,会自动看到此域名。

解决Access Denied问题

问题可见这个讨论
解决办法:

I was running into this same issue and found out that the auto-populated origin field in CloudFront for my S3 bucket wasn’t the website endpoint. To fix, copy the website endpoint URL from S3 and is that as the CF origin.
Example:
~~“example.com.s3.amazonaws.com”~~
“example.com.s3-website-us-east-1.amazonaws.com”
在上面的CloudFront设置中,选择Origins and Origin Groups页,可以发现Origin Domain Name缺省情况下使用了REST API 终端节点格式:
example.com.s3.amazonaws.com”
但是实际上应该使用 网站终端节点 格式:
example.com.s3-website-us-east-1.amazonaws.com”
对于"http://www.example.com",CloudFront中也要修改到网站终端节点格式。
修改设置后等待几分钟生效。

官方的支持文档我使用 S3 REST API 终端节点作为我的 CloudFront 分配源。为什么我会收到“403 访问被拒绝”错误?似乎并不能解决问题。

网站更新问题

由于使用了CloudFront,所有网页是在全球各节点有缓存的。所以在更新S3之后并不能直接看到更新生效。更新时需要注意以下两点:

  1. 网站内容上传到S3 bucket时,需要注意将文件设置为public权限;
  2. 更新的内容需要在CloudFront中Invalidation以清除CloudFront中缓存的内容。如下图所示:
填入更新的路径。等待片刻之后,在浏览器中刷新才能看到新上传的内容。

(后续将更新从github自动发布到S3的内容。)

关键词:部署,静态

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭