在 AWS 中使用 Staging 进行静态网站托管

Static Website hosting with Staging in AWS

我们是 运行 一个静态网站,由 CI 自动部署到 public S3 存储桶。该网站是一个具有多个文件夹的 jekyll 页面。我们对设置非常满意,因为易于部署且无需基础设施。

但是我们的网站现在有流量,我们想添加一个暂存阶段。 从已知 IP 中选定的非技术人员应该可以访问此阶段。我们无法使用 S3 存储桶实现此目的,因为此存储桶需要 public.

所以我们正在寻找一种方法来部署具有非 public 暂存区的静态网站。这对 AWS 服务或其他云产品来说可能吗?

第一部分相对简单,只需设置另一个存储桶,部署到那里进行暂存,然后从那里部署到您的生产存储桶上线。

第二部分也很简单,您可以在 S3 存储桶上指定一个策略来限制对 IP 范围的访问 - 请参阅此处的示例:http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-3

就我个人而言,如果可能的话,我建议最好使用基于登录的限制(你需要注销的人不在办公室是 IP 地址限制让你进入的典型例子麻烦)无论哪种方式,您都可以对 S3 存储桶权限进行足够细粒度的控制,让您可以做您需要的事情

我们通过在 S3 存储桶中使用难以猜测的名称的子文件夹解决了这个问题。这些名称允许子文件夹公开可用,并充当静态网站的共享密码。每个拉取请求都会自动部署到此存储桶中的子文件夹中。

示例:

s3-staging-bucket
└ ed567c0e-dca9-44fc-b1bc-18ed5237f598/
  └ index.html