サポートされていないAWSリージョンでパイプラインを作成する AWS CodePipeline - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

サポートされていないAWSリージョンでパイプラインを作成する AWS CodePipeline

作成者: Anand Krishna Varanasi (AWS)

コードリポジトリ: invisible-codepipeline-unsupported-regions

環境:PoC またはパイロット

テクノロジー: インフラストラクチャ DevOps

AWS サービス: AWS CodeBuild; AWS CodeCommit; AWS CodeDeploy; AWS CodePipeline

[概要]

AWS CodePipeline は、Amazon Web Services () の一連の DevOps ツールの一部である継続的配信 (CD) オーケストレーションサービスですAWS。さまざまなソース (バージョン管理システムやストレージソリューションなど)、 AWS および AWS Partners からの継続的統合 (CI) 製品およびサービス、オープンソース製品と統合され、迅速なアプリケーションとインフラストラクチャのデプロイのためのワークフローサービスを提供します end-to-end。

ただし、 CodePipeline はすべてのAWSリージョンでサポートされていないため、AWSCI/CD サービスを接続する目に見えないオーケストレーターを持つことは便利です。このパターンでは、AWS CodeCommit、、 AWS CodeBuildなどの AWS CI/CD サービスを使用してまだサポート CodePipeline されていない AWS リージョンにワークフローパイプラインを実装 end-to-endする方法について説明しますAWS CodeDeploy。

前提条件と制限

前提条件

  • アクティブなAWSアカウント

  • AWS Cloud Development Kit (AWS CDK) CLIバージョン 2.28 以降

アーキテクチャ

ターゲットテクノロジースタック

次の図は、アフリカ (ケープタウン) リージョンなど CodePipeline、 をサポートしていない リージョンで作成されたパイプラインを示しています。デベロッパーは、 CodeDeploy 設定ファイル (デプロイライフサイクルフックスクリプト とも呼ばれます) を、 によってホストされている Git リポジトリにプッシュします CodeCommit。(このパターンで提供されているGitHub リポジトリを参照してください)。Amazon EventBridge ルールは を自動的に開始します CodeBuild。

CodeDeploy 設定ファイルは、パイプラインのソースステージ CodeCommit の一部として から取得され、 に転送されます CodeBuild。 

次のフェーズでは、 はこれらのタスク CodeBuild を実行します。 

  1. アプリケーションのソースコードTARファイルをダウンロードします。AWS Systems Manager の一機能である Parameter Store を使用して、このファイルの名前を設定できます。

  2. CodeDeploy 設定ファイルをダウンロードします。

  3. アプリケーションタイプに固有のアプリケーションソースコードと CodeDeploy 設定ファイルの複合アーカイブを作成します。

  4. 複合アーカイブを使用して、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスへの CodeDeploy デプロイを開始します。

サポートされていないAWSリージョンでのパイプラインの作成

ツール

AWS サービス

  • AWS CodeBuild は、ソースコードのコンパイル、ユニットテストの実行、デプロイの準備が整ったアーティファクトの生成に役立つフルマネージドビルドサービスです。

  • AWS CodeCommit は、独自のソース制御システムを管理することなく、Git リポジトリをプライベートに保存および管理するためのバージョン管理サービスです。

  • AWS CodeDeploy は、Amazon EC2またはオンプレミスインスタンス、AWSLambda 関数、または Amazon Elastic Container Service (Amazon ECS) サービスへのデプロイを自動化します。

  • AWS CodePipeline は、ソフトウェアリリースのさまざまなステージを迅速にモデル化して設定し、ソフトウェアの変更を継続的にリリースするために必要なステップを自動化するのに役立ちます。

  • AWS Cloud Development Kit (AWS CDK) は、コードでAWSクラウドインフラストラクチャを定義およびプロビジョニングするのに役立つソフトウェア開発フレームワークです。

コード

このパターンのコードは、 GitHub CodePipeline サポートされていないリージョンリポジトリで使用できます。

エピック

タスク説明必要なスキル

をインストールしますAWSCDKCLI。

手順については、 AWS CDK ドキュメントを参照してください。

AWS DevOps

SQL クライアントをインストールします。

コミットを作成するには、ローカルコンピュータにインストールされた Git クライアントを使用して、コミットを CodeCommit リポジトリにプッシュできます。Git クライアント CodeCommit で をセットアップするには、CodeCommit ドキュメント を参照してください。

AWS DevOps

npm をインストールします。

npm のパッケージマネージャーをインストールします。詳細については、npmドキュメントを参照してください。

AWS DevOps
タスク説明必要なスキル

コードリポジトリを複製します。

次のコマンドを実行して、 GitHub CodePipeline サポートされていないリージョンリポジトリをローカルマシンにクローンします。

git clone https://github.com/aws-samples/invisible-codepipeline-unsupported-regions
DevOps エンジニア

cdk.json にパラメーターを設定します。

cdk.json セクションで、次のパラメーターの値を指定します。

"pipeline_account":"XXXXXXXXXXXX", "pipeline_region":"us-west-2", "repo_name": "app-dev-repo", "ec2_tag_key": "test-vm", "configName" : "cbdeployconfig", "deploymentGroupName": "cbdeploygroup", "applicationName" : "cbdeployapplication", "projectName" : "CodeBuildProject"

各パラメータの意味は次のとおりです。

  • pipeline_account は、パイプラインが構築されるAWSアカウントです。

  • pipeline_region は、パイプラインが構築されるAWSリージョンです。

  • repo_name は CodeCommit リポジトリの名前です。

  • ec2_tag_key は、コードをデプロイするEC2インスタンスにアタッチされたタグです。

  • configName は設定 CodeDeploy ファイルの名前です。

  • deploymentGroupName はデプロイ CodeDeploy グループの名前です。

  • applicationName は CodeDeploy アプリケーション名です。

  • projectName は CodeBuild プロジェクト名です。

AWS DevOps

AWS CDK コンストラクトライブラリを設定します。

クローンされた GitHub リポジトリで、次のコマンドを使用してAWSCDKコンストラクトライブラリをインストールし、アプリケーションを構築し、合成してアプリケーションのAWS CloudFormation テンプレートを生成します。

npm i aws-cdk-lib npm run build cdk synth
AWS DevOps

サンプルAWSCDKアプリケーションをデプロイします。

適用されないリージョン (af-south-1 など)で次のコマンドを実行してコードをデプロイします。

cdk deploy
AWS DevOps
タスク説明必要なスキル

アプリケーションの CI/CD をセットアップします。

cdk.json ファイルで指定した CodeCommit リポジトリ (app-dev-repoデフォルトではこれを呼び出す) をクローンして、アプリケーションの CI/CD パイプラインを設定します。

git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/app-dev-repo

リポジトリ名とリージョンは、cdk.json ファイルに入力した値によって異なります。

AWS DevOps
タスク説明必要なスキル

デプロイインストラクションを使用してパイプラインをテストします。

GitHub CodePipeline サポートされていないリージョンリポジトリCodeDeploy_Filesフォルダには、アプリケーションのデプロイ CodeDeploy を指示するサンプルファイルが含まれています。appspec.yml ファイルは、アプリケーションデプロイのフローを制御するフックを含む CodeDeploy 設定ファイルです。サンプルファイル index.htmlstart_server.shstop_server.sh、及び install_dependencies.sh を使用して、Apache でホストされているウェブサイトを更新します。これらは例です。 GitHub リポジトリ内のコードを使用して、任意のタイプのアプリケーションをデプロイできます。ファイルが CodeCommit リポジトリにプッシュされると、見えないパイプラインが自動的に開始されます。デプロイ結果については、 コンソール CodeBuild と CodeDeploy コンソールで個々のフェーズの結果を確認してください。

AWS DevOps

関連リソース