本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中创建管道 AWS 区域 那不支持 AWS CodePipeline
Anand Krishna Varanasi,Amazon Web Services
Summary
AWS CodePipeline 是一项持续交付 (CD) 编排服务,是 Amazon Web Services (AWS) 的一组 DevOps 工具的一部分。它与各种来源(例如版本控制系统和存储解决方案)、来自 AWS 和 AWS 合作伙伴的持续集成 (CI) 产品和服务以及开源产品集成,为应用程序和基础设施的快速部署提供端到端的工作流程服务。
但是, CodePipeline 并非完全支持 AWS 区域,因此使用隐形协调器来连接 AWS CI/CD 服务很有用。此模式描述了如何使用 AWS CodeCommit、 AWS CodeBuild和等 AWS CI/CD 服务在尚 CodePipeline 不支持 AWS 区域 的地方实现端到端工作流管道 AWS CodeDeploy。
先决条件和限制
先决条件
活跃的 AWS 账户
AWS Cloud Development Kit (AWS CDK) CLI 版本 2.28 或更高版本
架构
下图显示了在不支持的 CodePipeline区域(例如非洲(开普敦)区域)中创建的管道。开发者将 CodeDeploy 配置文件(也称为部署生命周期挂钩脚本)推送到托管的 Git 存储库 CodeCommit。(请参阅此模式提供的GitHub 存储库
CodeDeploy 配置文件 CodeCommit 作为管道源阶段的一部分从中提取并传输到 CodeBuild。
在下一阶段, CodeBuild 执行以下任务:
下载应用程序源代码 TAR 文件。您可以使用 Parameter Store(一种功能)来配置此文件的名称 AWS Systems Manager。
下载 CodeDeploy 配置文件。
创建应用程序源代码和特定于应用程序类型的 CodeDeploy 配置文件的组合存档。
使用组合 CodeDeploy 存档启动部署到亚马逊弹性计算云 (Amazon EC2) 实例。

工具
AWS 服务
AWS CodeBuild 是一项完全托管式构建服务,可编译源代码、运行单元测试和生成部署就绪的构件。
AWS CodeCommit 是一项版本控制服务,可帮助您私下存储和管理 Git 存储库,而无需管理自己的源代码控制系统。
AWS CodeDeploy自动部署到亚马逊 EC2、本地实例、 AWS Lambda 函数或亚马逊弹性容器服务 (Amazon ECS) Container Service 服务。
AWS CodePipeline 可帮助您快速对软件发布过程的不同阶段进行建模和配置,并自动执行持续发布软件变更所需步骤。
AWS Cloud Development Kit (AWS CDK)是一个软件开发框架,可帮助您在代码中定义和配置 AWS Cloud 基础架构。
代码
此模式的代码可在 “ GitHub CodePipeline 不支持的区域
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
安装 C AWS CDK LI。 | 有关说明,请参阅 AWS CDK 文档。 | AWS DevOps |
安装 Git 客户端。 | 要创建提交,您可以使用安装在本地计算机上的 Git 客户端,然后将提交推送到 CodeCommit 存储库。要设置 G CodeCommit it 客户端,请参阅CodeCommit 文档。 | AWS DevOps |
安装 npm。 | 安装 npm 包管理器。有关更多信息,请参阅 npm 文档 | AWS DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
克隆代码存储库。 | 运行以下命令,将 “ GitHub CodePipeline 不支持的区域
| DevOps 工程师 |
在 cdk.json 中设置参数。 | 打开
其中:
| AWS DevOps |
设置 AWS CDK 构造库。 | 在克隆的 GitHub 存储库中,使用以下命令安装 AWS CDK 构造库、生成应用程序,然后进行合成以生成应用程序的 AWS CloudFormation 模板。
| AWS DevOps |
部署示例 AWS CDK 应用程序。 | 在不支持的区域(例如
| AWS DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
为应用程序 CI/CD 进行设置。 | 克隆您在
其中,存储库名称和区域取决于您在 | AWS DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
根据部署说明测试管道。 | “ GitHub CodePipeline 不支持的区域 | AWS DevOps |