を使用してパイプラインを作成し、アーティファクトの更新をオンプレミスEC2インスタンスにデプロイする CodePipeline - AWS 規範ガイダンス

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

を使用してパイプラインを作成し、アーティファクトの更新をオンプレミスEC2インスタンスにデプロイする CodePipeline

作成者: Akash Kumar (AWS)

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

ソース: DevOps

ターゲット: Amazon EC2/オンプレミス

R タイプ: リホスト

テクノロジー: DevOps、モダナイゼーション、ウェブおよびモバイルアプリ

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

[概要]

このパターンでは、Amazon Web Services (AWS) クラウドでパイプラインを作成し、更新されたアーティファクトを のオンプレミスの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにデプロイするコードサンプルと手順を示しますAWS CodePipeline。このパターンでは、継続的インテグレーションの手法に基づいています。この手法では、Git ベースのバージョン管理システムを使用してコードの構築とテストを自動化します。このパターンでは、 を使用してコードリポジトリを作成し、クローンを作成しますAWS CodeCommit。次に、 を使用してプロジェクトを作成し、ソースコードを設定しますAWS CodeBuild。最後に、 を使用してアプリケーションを作成し、オンプレミスEC2インスタンスのターゲット環境を設定しますAWS CodeDeploy。

前提条件と制限

前提条件

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

  • デプロイ中にEC2インスタンスを識別するためのユーザー定義タグ

  • EC2 インスタンスにインストールされた CodeDeploy エージェント

  • EC2 インスタンスにインストールされている必要なランタイムソフトウェア

  • Java 開発キット用のAmazon Corretto 8

  • インストールされたApache Tomcat ウェブサーバー

  • Amazon CloudWatch Events (オプション)

  • ウェブサーバーにログインするキーペア (オプション)

  • ウェブアプリケーションの Apache Maven アプリケーションプロジェクト

アーキテクチャ

次の図は、このパターンのアーキテクチャを使用してオンプレミスEC2インスタンスにデプロイされる Java ウェブアプリケーションの例を示しています。

EC2 インスタンスにデプロイされた Java ウェブアプリケーションの例

この図表は、次のワークフローを示しています:

  1. デベロッパーは、プライベート CodeCommit Git リポジトリにコード変更をコミットします。

  2. CodePipeline は CodeBuild を使用してビルドを開始し、Amazon Simple Storage Service (Amazon S3) バケットにデプロイする準備が整った新しいアーティファクトを追加します。

  3. CodePipeline は CodeDeploy エージェントを使用して、デプロイアーティファクトの変更に必要な依存関係をプリインストールします。

  4. CodePipeline は CodeDeploy エージェントを使用して、S3 バケットからターゲットEC2インスタンスにアーティファクトをデプロイします。有効にすると、ソースコードに変更が発生すると、 CloudWatch イベントは自動的にパイプラインを開始できます。

テクノロジースタック

  • CodeBuild

  • CodeCommit

  • CodeDeploy

  • CodePipeline

  • CloudWatch Events (オプション)

ツール

  • AWS CodeBuild は、ソースコードをコンパイルし、ユニットテストを実行し、すぐにデプロイできるアーティファクトを生成するのに役立つフルマネージド型のビルドサービスです。 は、ソースコードを CodeBuild コンパイルし、ユニットテストを実行し、すぐにデプロイできるアーティファクトを生成します。

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

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

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

コード

このパターンには、以下の添付ファイルが含まれます。

  • buildspec.yml – このファイルは、デプロイ用のアーティファクトを構築して作成 CodeBuild するために必要なアクションを指定します。

  • appspec.yml – このファイルは、 がアプリケーションを作成し、オンプレミスEC2インスタンスのターゲット環境を設定する CodeDeploy ために必要なアクションを指定します。

  • install_dependencies.sh – このファイルは Apache Tomcat ウェブサーバーの依存関係をインストールします。

  • start_server.sh – このファイルにより Apache Tomcat ウェブサーバーが起動します。

  • stop_server.sh – このファイルは Apache Tomcat ウェブサーバーを停止します。

エピック

タスク説明必要なスキル

リポジトリを作成します。

CodeCommit リポジトリ を作成します

AWS システム管理者

リポジトリをクローン作成します。

CodeCommit リポジトリ のクローンを作成してリポジトリに接続します

アプリ開発者

ソースコードをリモートリポジトリにプッシュします。

  1. コミットを作成して、buildspec.ymlappspec.yml ファイルをローカルリポジトリに追加します。

  2. ローカルリポジトリからリモート CodeCommit リポジトリにコミットをプッシュします

アプリ開発者
タスク説明必要なスキル

ビルドプロジェクトを作成します。

  1. AWS マネジメントコンソールにサインインし、AWS CodeBuild コンソール を開き、ビルドプロジェクトの作成 を選択します。

  2. プロジェクト名 にプロジェクトの名前を入力します。

  3. ソースプロバイダー で、 を選択しますAWS CodeCommit

  4. リポジトリで、コードパイプラインを構築するレポジトリを選択します。

  5. 環境イメージで、マネージド型イメージまたはカスタムイメージを選択します。

  6. オペレーティングシステム で、Amazon Linux 2を選択します。

    : Amazon Linux 2 のサポートは間もなく終了します。詳細については、「Amazon Linux 2FAQs」を参照してください。

  7. RunTime(s) の場合は、Standard を選択します。

  8. イメージで、aws/codebuild/amazonlinux2-aarch64-standard:2.0 を選択します。

  9. イメージのバージョンで、このランタイムバージョンには常に最新のイメージを使用 を選択します。

  10. サービスロールには、新規サービスロール、または既存のサービスロールを選択します。=

  11. ビルド仕様 で、ビルド仕様ファイルの使用またはビルドコマンドの挿入を選択します。

  12. (オプション) アーティファクトの追加.を選択して、アーティファクトを設定します。

  13. (オプション) ビルド出力ログを Amazon にアップロードするには CloudWatch、CloudWatch ログ を選択します。

  14. Create build project (ビルドプロジェクトの作成)を選択します。

AWS 管理者、アプリ開発者
タスク説明必要なスキル

アプリケーションの作成

  1. AWS マネジメントコンソールにサインインし、AWS CodeDeploy コンソール を開き、アプリケーションの作成 を選択します。

  2. アプリケーション名 に、アプリケーションの名前を入力します。

  3. コンピューティングプラットフォーム でEC2/オンプレミス を選択します。

  4. アプリケーションの作成 を選択し、デプロイグループの作成を選択します。

  5. デプロイグループ名 に名前を入力します。

  6. のサービスロールを作成します CodeDeploy。: サービスロールには、ターゲット環境 CodeDeploy へのアクセスを許可するアクセス許可が必要です。

  7. サービスロール には、ステップ 6 で作成したサービスロールを選択します。

  8. [デプロイタイプ] には、ビジネス要件に基づいてインプレースまたはブルー/グリーンを選択します。

  9. 環境設定では、ビジネス要件を満たすオプションを選択します。

  10. (オプション)Amazon コンソールでロードバランサーのターゲットグループを個別に作成し、AWS CodeDeploy コンソールのデプロイグループの作成ページに戻り、ロードバランサーとターゲットグループを選択します。 EC2

  11. デプロイグループの作成 を選択します。

AWS システム管理者、アプリ開発者
タスク説明必要なスキル

パイプラインを作成します。

  1. AWS マネジメントコンソールにサインインし、AWS CodePipeline コンソール を開き、パイプラインの作成 を選択します。

  2. パイプライン名 に、パイプラインの名前を入力します。

  3. サービスロール で、新規サービスロール、または既存のサービスロールを選択します。

  4. ロール名 に、ロールの名前を入力します。

  5. Amazon S3 がバケットを作成し、そのバケットにアーティファクトを保存するようにする場合、詳細設定セクションでアーティファクトストアデフォルトの位置 を選択します。 カスタムの場所で、既存の S3 バケットを使用を選択します。[Next (次へ)] を選択します。

  6. ソースプロバイダー で、 を選択しますAWS CodeCommit

  7. リポジトリ名では、以前にクローンされたリポジトリを選択します。ブランチ名では、ソースコードブランチを選択します。

  8. 変更検出オプション でAmazon CloudWatch Events (推奨) または を選択しますAWS CodePipeline。[Next (次へ)] を選択します。

  9. [Build provider (ビルドプロバイダ)] で、[AWS CodeBuild] を選択します。

  10. プロジェクト名 で、このパターンのアプリケーション用にプロジェクトを作成するセクションで作成したビルド CodeBuild プロジェクトを選択します。

  11. 次へを選択し、次にビルドオプションを選択します。

  12. デプロイプロバイダー で、 を選択しますAWS CodeDeploy

  13. アプリケーション名とデプロイグループを選択し、次へを選択します。

  14. パイプラインの作成 を選択します。

AWS システム管理者、アプリ開発者

関連リソース

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip