托管在 Amazon S3 上的静态网站的 CI/CD
继博文《使用 S3、Route 53、ACM 和 CloudFront 自托管安全静态网站》之后,我们将使用 AWS CodePipeline 设置持续集成和持续部署,从 GitHub 获取源代码并将其部署到静态网站(我的个人网站https://bhuvana.pro),该网站托管在 Amazon S3 存储桶中。
使用的 AWS 服务
- 亚马逊 S3
- AWS CodePipeline
- 身份与访问管理
亚马逊 S3
Amazon Simple Storage Service (Amazon S3) 是一种互联网存储服务,其静态网站托管功能可帮助您在 S3 存储桶上托管静态网站,而无需配置和管理服务器来满足扩展需求。点击此处了解更多关于如何使用 S3 的信息。
AWS CodePipeline
AWS CodePipeline 是一项完全托管的持续交付服务,可帮助您自动化发布管道,从而实现快速可靠的应用程序和基础设施更新。每次代码发生变更时,CodePipeline 都会根据您定义的发布模型,自动执行发布流程的构建、测试和部署阶段。点击此处了解更多信息。
CodePipeline 组件
流水线——流水线是一种工作流结构,用于描述软件变更如何通过发布流程。您可以通过一系列阶段和操作来定义工作流。
阶段——阶段是指一个或多个操作的集合。一条流程可以包含两个或多个阶段。
操作——操作是对版本执行的任务。流水线操作按照阶段配置中确定的顺序,以串行或并行方式执行。
转换- 流水线中的各个阶段通过转换连接,并在 AWS CodePipeline 控制台中以箭头表示。成功完成某个阶段操作的修订版本将自动发送到下一阶段,转换箭头指示了这一阶段。可以在阶段之间启用或禁用转换。
身份和访问管理
AWS Identity and Access Management (IAM) 是一项 Web 服务,可帮助您安全地控制对 AWS 资源的访问。您可以使用 IAM 来控制哪些用户已通过身份验证(登录)并被授权(拥有权限)使用资源。点击此处了解更多信息。
创建和配置管道
您将看到一个两阶段的流水线,用于设置每次提交到 GitHub 的代码自动部署到托管在 Amazon S3 上的静态网站。
流水线设置是一个五步流程,详情如下。
步骤 1:管道
- 登录 AWS 管理控制台,然后打开 CodePipeline 控制台,网址为http://console.aws.amazon.com/codesuite/codepipeline/home
- 使用以下设置创建新管道。如果将“新服务角色”保留为默认值,则会创建一个新的服务角色并分配所需的权限。

步骤 2:来源
选择 GitHub(版本 2)作为源提供程序、连接字符串、仓库名称和分支。
选中“启用变更检测”选项,Start the pipeline on source code change以便在源代码发生更改时,流水线自动启动。输出工件格式保留默认设置CodePipeline default。
Note: The GitHub (Version 1) action is not recommended since it uses OAuth apps to access your GitHub repository. Instead, choose the GitHub (Version 2) action to access your repository by creating a connection. Connections use GitHub Apps to manage authentication and can be shared with other resources.
连接字符串:
要连接到 GitHub,请点击“连接到 GitHub”,输入连接名称,选择 GitHub 应用(如果已配置),否则点击“安装新应用”以验证您的 GitHub 帐户。
步骤 3:构建
由于我们将把静态网站部署到 Amazon S3 存储桶,无需进行代码编译,因此无需构建阶段。
步骤 4:部署
选择 Amazon S3 作为部署提供程序,并指定托管静态网站的 S3 存储桶所在的区域、存储桶名称,然后选中“部署前提取文件”复选框,以便在部署前部署工件(您可以忽略默认的“部署路径”和“其他配置”)。
第五步:复习
管道输出
流水线创建完成后,将立即启动首次执行。后续部署将在集成分支提交更改或您显式单击“发布更改”按钮时触发。部署成功后,流水线将如下所示,并显示提交 ID 和为该提交添加的注释。
我可以禁用管道吗?
您可以禁用从一个状态到另一个状态的转换(在我们的例子中是从源到部署),但不能禁用或停用管道。
AWS Code Pipeline 定价
- 您只需为实际使用的资源付费。AWS CodePipeline 的费用为每个活跃管道每月 1.00 美元*。
- 活跃流水线是指已运行超过 30 天且当月至少有一次代码变更通过的流水线。当月没有新代码变更通过的流水线不收取任何费用。活跃流水线的费用不按不足一个月的部分进行比例计算。
- 作为 AWS 免费套餐的一部分,AWS CodePipeline 为新老客户每月提供一个免费的活跃管道。
- 您可能需要为在 Amazon S3 中存储和访问管道工件以及从连接到管道的其他 AWS 和第三方服务触发操作支付额外费用。
所以,在我们的例子中,如果我的 GitHub 代码库有提交更改,我预计每月会收到 1 美元的账单。
文章来源:https://dev.to/aws-heroes/automated-deployment-to-static-website-5245



