我尝试使用 AWS S3 交付静态站点

我叫寺冈,是一名基础设施工程师。

AWS 有一项名为 S3 的存储服务,
不仅可以用于存储,还
可以用于托管静态内容,例如网站。

这次,我想尝试使用 S3 的虚拟主机功能
来托管静态网站,而无需使用 EC2。
乍一看可能有点难,但实际上设置起来相对容易,所以我鼓励大家试一试!

■ 试试看

要在 S3 中存储文件,您需要一个名为“存储桶”的容器。
根据 Google 的说法,这个词在日语中就是“桶”的意思。
首先,创建一个新的存储桶来存储 S3 中的静态内容。

在 AWS 管理控制台中,选择 S3,然后单击屏幕左上角的“创建存储桶”。
图片1

输入新存储桶的名称,选择一个区域,
然后单击“创建”。
2016-08-22_11h53_55

如果你查看愿望清单,应该就能看到你创建的愿望清单已经添加了!
2016-08-22_12h02_18

接下来,我们将添加设置,将我们创建的存储桶用作静态网站的主机。

点击存储桶名称左侧的放大镜图标,属性将显示在屏幕右侧。
从“静态网站托管”中选择“启用网站托管”!

S3 端点将显示在此屏幕上,由于您最终将通过浏览器访问它,因此最好记下它。

2016-08-22_12h04_44

现在您应该看到两个输入框,让我详细解释一下。

输入项 细节
索引文件 输入用户访问网站时首先要访问的页面。最好指定首页。
错误文档 指定发生 404 错误时要显示的页面。

完成后,点击保存!

设置已保存,但您仍然无法访问该网站。
要将存储在 S3 中的内容暴露给 Internet,
您必须允许所有用户访问 S3 的“GetObjects 操作”。

换句话说,您目前没有查看该站点的权限。
要允许“GetObjects 操作”,您需要更改 S3 存储桶策略。

在存储桶属性下,选择“权限”,然后单击“添加存储桶策略”。
2016-08-22_12h13_58

存储桶策略编辑器将会出现。
2016-08-22_12h20_19

请输入以下内容:

{ "版本": "2012-10-17", "声明": [ { "SID": "PublicReadForGetBucketObjects", "效果": "允许", "主体": "*", "操作": [ "s3:GetObject" ], "资源": [ "arn:aws:s3:::(存储桶名称)/*" ] } ] }

总结一下这些设置……

设置项目 细节
“主要的” 请输入允许或拒绝访问该资源的用户。在本例中,* 表示所有用户。
“行动” 指定要授予权限的操作。由于我们要授予 GetObject 操作的权限,因此输入 s3:GetObject。
“资源” 指定要授予权限的存储桶。

输入存储桶策略后,点击“保存”!
这样就完成了 S3 配置!
最后,上传内容并检查显示效果!
从列表中点击您创建的存储桶名称。

2016-08-22_12h24_06

点击屏幕左上角的“上传”按钮,即可上传 .hrml 文件等。
此时会弹出文件和文件夹选择界面,请
添加文件以添加内容。
点击“开始上传”按钮,内容就会实际上传到 S3。
2016-08-22_12h51_43

已经上传了!
2016-08-22_12h28_33

尝试访问你记下的 S3 端点。
你应该能看到该网站!

2016-08-22_12h30_41

您觉得怎么样?
不用搭建服务器就能轻松分发网站,真是太方便了!
接下来,我想写一篇关于如何结合 CloudFront 分发网站的文章。
就这些,非常感谢。

如果您觉得这篇文章有帮助,请点赞!
2
加载中...
2 票,平均:1.00 / 12
1,657
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

寺冈由纪

于 2016 年加入 Beyond,目前是他担任基础设施工程师
MSP 的第六个年头,他负责排除故障,同时
使用 AWS 等公共云设计和构建基础设施。
最近,我
一直在使用 Terraform 和 Packer 等 Hashicorp 工具作为构建 Docker 和 Kubernetes 等容器基础设施以及自动化操作的一部分,并且我
还扮演了在外部学习小组和研讨会上发言的传播者的角色。

・GitHub
https://github.com/nezumisannn

・演示历史
https://github.com/nezumisannn/my-profile

・演示材料(SpeakerDeck)
https://speakerdeck.com/nezumisannn

・认证:
AWS认证解决方案架构师-
谷歌云专业云架构师