を使用してパイプラインを作成し、アーティファクト更新をオンプレミス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インスタンスを識別するユーザー定義タグ

  • CodeDeploy エージェント 、EC2インスタンスにインストール

  • 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 イベント (オプション)

ツール

  • 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. Compute プラットフォーム で、EC2/On-premises を選択します。

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

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

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

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

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

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

  10. (オプション)Amazon EC2コンソールでロードバランサーのターゲットグループを個別に作成し、AWS CodeDeploy コンソールのデプロイグループの作成ページに戻り、ロードバランサーとターゲットグループを選択します。https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html

  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