翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用してマイクロサービス用の CI/CD パイプラインと Amazon ECSクラスターを自動的に構築する AWS CDK
作成者: Varsha Raju (AWS)
概要
このパターンでは、継続的インテグレーションと継続的デリバリー (CI/CD) pipelines and underlying infrastructure for building and deploying microservices on Amazon Elastic Container Service (Amazon ECS). You can use this approach if you want to set up proof-of-concept CI/CD pipelines to show your organization the benefits of CI/CD, microservices, and DevOps. You can also use this approach to create initial CI/CDパイプライン) を自動的に作成し、組織の要件に応じてカスタマイズまたは変更する方法について説明します。
このパターンのアプローチでは、それぞれ仮想プライベートクラウド (VPC) と 2 つのアベイラビリティーゾーンで実行するように設定された Amazon ECSクラスターを持つ本番環境と非本番環境が作成されます。これらの環境はすべてのマイクロサービスによって共有され、CI/CD pipeline for each microservice. These CI/CDパイプラインを作成して のソースリポジトリから変更をプルAWS CodeCommitし、変更を自動的に構築して、本番環境と非本番環境にデプロイします。パイプラインがすべてのステージを正常に完了したら、 URLsを使用して本番環境と非本番環境のマイクロサービスにアクセスできます。
前提条件と制限
前提条件
アクティブな Amazon Web Services (AWS) アカウント。
starter-code.zip
ファイル (添付) を含む既存の Amazon Simple Storage Service (Amazon S3) バケット。AWS Cloud Development Kit (AWS CDK) は、アカウントにインストールおよび設定されています。詳細については、 AWSCDKドキュメントAWSの「 の開始CDK方法」を参照してください。
Python 3 と
pip
をインストールおよび設定済みです。詳細については、Python のドキュメントを参照してください。 CDK、AWS CodePipeline、、、Amazon AWS Elastic Container Registry (Amazon ECR)AWS CodeBuild CodeCommit、Amazon ECS、および AWS Fargate に精通していること。
Docker に精通していること。
CI/CD と の理解 DevOps。
制約事項
一般的なAWSアカウント制限が適用されます。詳細については、 AWS 全般のリファレンスドキュメントの「 AWSサービスクォータ」を参照してください。
製品バージョン
コードは Node.js バージョン 16.13.0 およびAWSCDKバージョン 1.132.0 を使用してテストされました。
アーキテクチャ
![AWS クラウド architecture diagram showing CI/CD pipeline and deployment to production and non-production VPCs.](images/pattern-img/05ac2cad-408e-433f-8150-0a2b71f63cfd/images/6fa3dbef-88de-4b3f-ae41-dfa90256a058.png)
この図表は、次のワークフローを示しています:
アプリケーション開発者はコードを CodeCommit リポジトリにコミットします。
パイプラインが開始されます。
CodeBuild は Docker イメージを構築して Amazon ECRリポジトリにプッシュします。
CodePipeline は、本番環境以外の Amazon ECSクラスターの既存の Fargate サービスに新しいイメージをデプロイします。
Amazon は、Amazon ECRリポジトリから非本番環境の Fargate サービスにイメージをECSプルします。
テストは非本番稼働用 を使用して実行されますURL。
リリースマネージャーは本番環境へのデプロイを承認します。
CodePipeline は、本番稼働用 Amazon ECSクラスター内の既存の Fargate サービスに新しいイメージをデプロイします。
Amazon は、Amazon ECRリポジトリから本番稼働用の Fargate サービスにイメージをECSプルします。
本番稼働用ユーザーは、本番稼働用 を使用して機能にアクセスしますURL。
テクノロジースタック
AWS CDK
CodeBuild
CodeCommit
CodePipeline
Amazon ECR
Amazon ECS
Amazon VPC
自動化とスケール
このパターンのアプローチを使用して、共有AWS CloudFormation スタックにデプロイされたマイクロサービスのパイプラインを作成できます。自動化により、各 に複数の Amazon ECSクラスターを作成しVPC、共有 Amazon ECSクラスターにデプロイされたマイクロサービスのパイプラインを作成することもできます。ただし、そのためには、新しいリソース情報をパイプラインスタックへの入力として提供する必要があります。
ツール
AWS CDK - AWS クラウド開発キット (AWSCDK) は、コードでクラウドインフラストラクチャを定義し、 を通じてプロビジョニングするためのソフトウェア開発フレームワークですAWS CloudFormation。
AWS CodeBuild- AWS CodeBuild は、クラウド内のフルマネージド型のビルドサービスです。 は、ソースコードを CodeBuild コンパイルし、ユニットテストを実行して、すぐにデプロイできるアーティファクトを生成します。
AWS CodeCommit - AWS CodeCommit は、Git リポジトリを AWS クラウドにプライベートに保存および管理できるバージョン管理サービスです。 は、独自のソース管理システムを管理したり、インフラストラクチャのスケーリングを心配したりする必要性 CodeCommit を排除します。
AWS CodePipeline– AWS CodePipeline は、ソフトウェアのリリースに必要なステップをモデル化、視覚化、および自動化するために使用できる継続的な配信サービスです。ソフトウェアリリースプロセスのさまざまな段階をすばやくモデル化して設定できます。 は、ソフトウェアの変更を継続的にリリースするために必要なステップ CodePipeline を自動化します。
Amazon ECS – Amazon Elastic Container Service (Amazon ECS) は、クラスター上のコンテナの実行、停止、管理に使用される、スケーラビリティが高く高速なコンテナ管理サービスです。AWS Fargate が管理するサーバーレスインフラストラクチャでタスクとサービスを実行できます。または、インフラストラクチャをより詳細に制御するために、管理する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのクラスターでタスクとサービスを実行できます。
Docker
— Dockerを使用すると、開発者は任意のアプリケーションを軽量、ポータブル、自給自足のコンテナとして梱包、出荷、実行する上で役立ちます。
コード
このパターンのコードは、cicdstarter.zip
および starter-code.zip
ファイル (添付) にあります。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
の作業ディレクトリを設定しますAWSCDK。 |
| AWS DevOps、クラウドインフラストラクチャ |
タスク | 説明 | 必要なスキル |
---|---|---|
共有インフラストラクチャを作成します。 |
| AWS DevOps、クラウドインフラストラクチャ |
AWS CloudFormation スタックをモニタリングします。 |
| AWS DevOps、クラウドインフラストラクチャ |
AWS CloudFormation スタックをテストします。 |
重要両方の IDsで、2 つの の VPCsと、IDsデフォルトのセキュリティグループのセキュリティグループを記録していることを確認してくださいVPCs。 | AWS DevOps、クラウドインフラストラクチャ |
タスク | 説明 | 必要なスキル |
---|---|---|
マイクロサービスのインフラストラクチャーを作成します。 |
注記ディレクトリの | AWS DevOps、クラウドインフラストラクチャ |
AWS CloudFormation スタックをモニタリングします。 | AWS CloudFormation コンソールを開き、 | AWS DevOps、クラウドインフラストラクチャ |
AWS CloudFormation スタックをテストします。 |
| |
パイプラインを使用します。 |
| AWS DevOps、クラウドインフラストラクチャ |
各マイクロサービスにこのエピックを繰り返します。 | このエピックのタスクを繰り返して、各マイクロサービスの CI/CD パイプラインを作成します。 | AWS DevOps、クラウドインフラストラクチャ |
関連リソース
追加情報
cdk synth
コマンド
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
cdk deploy
コマンド
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
添付ファイル
このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip」