

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在不支援 AWS CodePipeline 的 AWS 區域中建立管道
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline"></a>

*Anand Krishna Varanasi，Amazon Web Services*

## 摘要
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-summary"></a>

**注意**： AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。[進一步了解](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)

AWS CodePipeline 是一種持續交付 (CD) 協調服務，屬於 Amazon Web Services (AWS) 的一組 DevOps 工具。它與各種來源 （例如版本控制系統和儲存解決方案）、來自 AWS 和 AWS 合作夥伴的持續整合 (CI) 產品和服務，以及開放原始碼產品整合，以提供end-to-end工作流程服務，以進行快速的應用程式和基礎設施部署。

不過，並非所有 AWS 區域都支援 CodePipeline，而且具有連接 AWS CI/CD 服務的隱形協調器很有用。此模式說明如何使用 AWS CodeCommit、AWS CodeBuild 和 AWS CodeDeploy 等 AWS CI/CD 服務，在尚未支援 CodePipeline 的 AWS 區域中實作end-to-end工作流程管道。 AWS CodeDeploy

## 先決條件和限制
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-prereqs"></a>

**先決條件 **
+ 作用中的 AWS 帳戶
+ AWS 雲端開發套件 (AWS CDK) CLI 2.28 版或更新版本

## Architecture
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-architecture"></a>

**目標技術堆疊**

下圖顯示在不支援 CodePipeline 的區域中建立的管道，例如非洲 （開普敦） 區域。開發人員會將 CodeDeploy 組態檔案 （也稱為*部署生命週期掛鉤指令碼*) 推送至 CodeCommit 託管的 Git 儲存庫。（請參閱此模式隨附的 [GitHub 儲存庫](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions)。) Amazon EventBridge 規則會自動啟動 CodeBuild。

CodeDeploy 組態檔案會擷取自 CodeCommit，做為管道來源階段的一部分，並傳輸至 CodeBuild。 

在下一個階段，CodeBuild 會執行這些任務： 

1. 下載應用程式原始碼 TAR 檔案。您可以使用 AWS Systems Manager 的 Parameter Store 功能來設定此檔案名稱。

1. 下載 CodeDeploy 組態檔案。

1. 建立特定於應用程式類型的應用程式原始碼和 CodeDeploy 組態檔案的合併封存。

1. 使用合併封存啟動 CodeDeploy 部署至 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。

![\[在不支援的 AWS 區域中建立管道\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/e27750de-b597-424e-b5bf-4d58dc9b60cc/images/95fc815e-a762-4142-b0fd-2a716823e498.png)


## 工具
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-tools"></a>

**AWS 服務**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 是一項全受管建置服務，可協助您編譯原始程式碼、執行單元測試，並產生準備好部署的成品。
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 是一種版本控制服務，可協助您私下存放和管理 Git 儲存庫，而無需管理您自己的來源控制系統。
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 會自動部署到 Amazon EC2 或內部部署執行個體、AWS Lambda 函數或 Amazon Elastic Container Service (Amazon ECS) 服務。
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 可協助您快速建模和設定軟體版本的不同階段，並自動化持續發行軟體變更所需的步驟。
+ [AWS 雲端開發套件 (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) 是一種軟體開發架構，可協助您在程式碼中定義和佈建 AWS 雲端基礎設施。

**Code**

此模式的程式碼可在 GitHub [CodePipeline 不支援的區域](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions)儲存庫中使用。

## 史詩
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-epics"></a>

### 設定您的開發人員工作站
<a name="set-up-your-developer-workstation"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝 AWS CDK CLI。 | 如需說明，請參閱 [AWS CDK 文件](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites)。 | AWS DevOps | 
| 安裝 Git 用戶端。 | 若要建立遞交，您可以使用安裝在本機電腦上的 Git 用戶端，然後將遞交推送到 CodeCommit 儲存庫。若要使用 Git 用戶端設定 CodeCommit，請參閱 [CodeCommit 文件](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-commit.html)。 | AWS DevOps | 
| 安裝 npm。 | 安裝 **npm **套件管理員。如需詳細資訊，請參閱 [npm 文件](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)。 | AWS DevOps | 

### 設定管道
<a name="set-up-the-pipeline"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製程式碼儲存庫。 | 執行下列命令，將 GitHub [CodePipeline 不支援的區域](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions)儲存庫複製到本機電腦。<pre>git clone https://github.com/aws-samples/invisible-codepipeline-unsupported-regions</pre> | DevOps 工程師 | 
| 在 cdk.json 中設定參數。 | 開啟 `cdk.json` 檔案，並提供下列參數的值：<pre>"pipeline_account":"XXXXXXXXXXXX",<br />"pipeline_region":"us-west-2",<br />"repo_name": "app-dev-repo",<br />"ec2_tag_key": "test-vm",<br />"configName" : "cbdeployconfig",<br />"deploymentGroupName": "cbdeploygroup",<br />"applicationName" : "cbdeployapplication",<br />"projectName" : "CodeBuildProject"</pre>其中：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.html) | AWS DevOps | 
| 設定 AWS CDK 建構程式庫。 | 在複製的 GitHub 儲存庫中，使用下列命令來安裝 AWS CDK 建構程式庫、建置您的應用程式，以及合成以產生應用程式的 AWS CloudFormation 範本。<pre>npm i aws-cdk-lib<br />npm run build<br />cdk synth</pre> | AWS DevOps | 
| 部署範例 AWS CDK 應用程式。 | 在不支援的區域 （例如 ) 中執行下列命令來部署程式碼`af-south-1`。<pre>cdk deploy</pre> | AWS DevOps | 

### 設定 CodeDeploy 的 CodeCommit CodeCommit 儲存庫
<a name="set-up-the-codecommit-repository-for-codedeploy"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定應用程式的 CI/CD。 | 複製您在 `cdk.json` 檔案中指定的 CodeCommit 儲存庫 (`app-dev-repo`預設稱為 )，以設定應用程式的 CI/CD 管道。<pre>git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/app-dev-repo</pre>其中儲存庫名稱和區域取決於您在 `cdk.json` 檔案中提供的值。 | AWS DevOps | 

### 測試管道
<a name="test-the-pipeline"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用部署指示測試管道。 | GitHub [CodePipeline 不支援區域](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions)儲存庫的`CodeDeploy_Files`資料夾包含範例檔案，指示 CodeDeploy 部署應用程式。`appspec.yml` 檔案是 CodeDeploy 組態檔案，其中包含控制應用程式部署流程的掛鉤。您可以使用範例檔案 `index.html`、`stop_server.sh`、 `start_server.sh`和 `install_dependencies.sh`來更新託管在 Apache 上的網站。這些是範例 - 您可以使用 GitHub 儲存庫中的程式碼來部署任何類型的應用程式。將檔案推送至 CodeCommit 儲存庫時，系統會自動啟動隱藏管道。如需部署結果，請檢查 CodeBuild 和 CodeDeploy 主控台中個別階段的結果。 | AWS DevOps | 

## 相關資源
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-resources"></a>
+ [入門 ](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites)(AWS CDK 文件）
+ [雲端開發套件 (CDK)](https://catalog.us-east-1.prod.workshops.aws/workshops/5962a836-b214-4fbf-9462-fedba7edcc9b/en-US) 簡介 (AWS Workshop Studio)
+ [AWS CDK 研討會](https://cdkworkshop.com/)