amazon-web-services - 构建后自动将静态网站文件部署到 S3

标签 amazon-web-services reactjs amazon-s3 automation

我有一个部署在 S3 上并可公开访问的 React 应用程序(SPA)。每次构建后,我都必须手动将 index.html 和其他静态 Assets 上传到 S3。有什么方法可以自动化这个过程吗?

我对CD(持续部署)到S3进行了详尽的搜索,这里是SO question差不多。

我正在汇总我详尽研究中的所有信息。我写了下面的答案,其中包含实现此目的的各种方法。

最佳答案

有很多方法可以实现S3 部署的自动化。以下是我收集的东西:

<强>1。 AWS SNS 和 Lambda:

如果您想触发 github 上的任何 AWS 服务推送,此过程很有用。因此,过程如下:

  1. github 推送会触发一条消息发送到 SNS。
  2. 调用订阅 SNS 主题的 Lambda。
  3. 在 Lambda 内,我克隆了 github 存储库。
  4. 使用 AWS 的 S3 SDK 将build 或 dist 目录上传到您的 S3 存储桶。以下是上述流程的高级架构:

Automation using SNS & Lambda

这种方法的缺点是克隆大型存储库需要时间,并且 Lambda 按秒计费。因此,对于大型 repo 来说,这可能会变得昂贵。

<强>2。特拉维斯:

Travis 以其 CI(持续集成)库而闻名。 .travis.yml 对于集成过程至关重要。

如果您想在构建后进行一些测试,然后在成功后将文件上传到 S3。那么这种方法将是最好的方法。 Travis 对于开源项目是免费的。

缺点是,我找不到一种方法将目录与存储库隔离并单独上传该特定目录。

<强>3。 AWS CLI:

这是将文件上传到 S3 的最便宜且最好的方法。我用了这个方法。我从这个medium post得到这个信息.

通常在React应用程序中,构建脚本由在package.json中编写为脚本的npm或yarn触发。以下是将文件上传到 S3 的命令:

aws s3 sync build/ s3://<bucket-name>

我将此脚本添加为 package.json 中构建脚本的一部分。这非常方便,因此可以自动执行将文件上传到 S3 的手动过程。

这个答案是基于我的观点。如果有任何不正确或我遗漏的内容,请随时发表评论,我会将其添加到答案中。

关于amazon-web-services - 构建后自动将静态网站文件部署到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43083800/

相关文章:

reactjs - Enzyme:何时使用浅层、渲染或安装?

javascript - Autoprefixer 加载器破坏 Webpack 中的 scss 编译

java - EC2-在运行的 EC2 实例上运行 jar

amazon-web-services - 通过 IP 限制对 CloudFront 的访问

amazon-web-services - 使用 Java SDK 访问 AWS Transcribe 作业的结果

amazon-web-services - 如何从我的 AWS 实例的公共(public) IP 地址运行 ThingsBoard

javascript - React HOC 在 Lifecycle 方法中使用 Context API

svg - 用于将 svg 图像上传到 AWS S3 的内容类型

amazon-web-services - 亚马逊 lambda 适合网页抓取吗?

amazon-web-services - 在更新文件时从AWS S3下载