CodeDeployって何ですか - AWS CodeDeploy

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

CodeDeployって何ですか

CodeDeploy は、Amazon EC2 インスタンス、オンプレミスインスタンス、サーバーレス Lambda 関数、または Amazon ECS サービスに対するアプリケーションのデプロイを自動化するデプロイメントサービスです。

以下のような、ほぼ無制限の多様なアプリケーションコンテンツをデプロイできます。

  • コード

  • サーバーレス AWS Lambda 関数

  • ウェブファイルおよび設定ファイル

  • Executables

  • パッケージ

  • スクリプト

  • マルチメディアファイル

CodeDeploy では、サーバーで実行され、Amazon S3 バケット、GitHub リポジトリ、または Bitbucket リポジトリに保存されているアプリケーションコンテンツをデプロイできます。CodeDeploy では、サーバーレス Lambda 関数をデプロイすることもできます。CodeDeploy を使用するには、既存のコードを変更する必要はありません。

CodeDeploy を使用すると、以下を容易に行うことができます。

  • 新機能の迅速なリリース。

  • AWS Lambda 関数のバージョンの更新。

  • アプリケーションのデプロイメント中のダウンタイム回避。

  • アプリケーションの更新に伴う繁雑さを処理。エラーの発生しやすい手動デプロイに伴うリスクの多くを回避できます。

サービスはインフラストラクチャに合わせてスケールするため、1 つのインスタンスまたは数千のインスタンスに簡単にデプロイできます。

CodeDeploy は、設定管理、ソース管理のための様々なシステムで動作します。継続的インテグレーション,継続的デリバリー、継続的なデプロイ。詳細については、「」を参照してください。製品の統合

また、CodeDeploy コンソールでは、リポジトリ、ビルドプロジェクト、デプロイアプリケーション、パイプラインなどのリソースをすばやく検索することもできます。[Go to resource (リソースに移動)] または / キーを押して、リソースの名前を入力します。一致するものはすべてリストに表示されます。検索では大文字と小文字が区別されません。リソースを表示する権限がある場合のみ表示されます。詳細については、「AWS CodeDeploy のためのアイデンティティおよびアクセス管理 」を参照してください。

AWS CodeDeploy の利点

CodeDeploy には、次のような利点があります。

  • サーバーアプリケーション、サーバーレス、コンテナアプリケーション。CodeDeploy では、サーバーおよびアプリケーションの両方で従来のアプリケーションをデプロイし、サーバーレスをデプロイするアプリケーションの両方をデプロイできます。AWS Lambda関数のバージョンまたは Amazon ECS アプリケーション。

  • 自動デプロイ。CodeDeploy は、開発、テスト、本番稼働環境にまたがるアプリケーションのデプロイを完全に自動化します。CodeDeploy は、インフラストラクチャに合わせてスケールするため、1 つのインスタンスまたは数千のインスタンスにデプロイできます。

  • ダウンタイムの最小化。アプリケーションで EC2/オンプレミスコンピューティングプラットフォームを使用している場合、CodeDeploy はアプリケーションの可用性を最大化します。インプレイスデプロイの場合、CodeDeploy は Amazon EC2 インスタンス間でローリング更新を実行します。更新のために、一度にオフラインにするインスタンスの数を指定できます。Blue/Green デプロイの間、最新アプリケーションのリビジョンは、置き換え先インスタンスにインストールされます。トラフィックは、選択するとすぐに、または新しい環境のテストが完了した時点で、これらのインスタンスに再ルーティングされます。どちらのデプロイタイプでも、CodeDeploy は設定したルールに従ってアプリケーションの状態を追跡します。

  • 停止してロールバック。エラーが発生した場合、自動または手動でデプロイを停止してロールバックできます。

  • コントロールの一元化。CodeDeploy コンソールまたは、デプロイのステータスを起動し、追跡できます。AWS CLI。各アプリケーションのリビジョンがいつデプロイされ、どの Amazon EC2 インスタンスがリストされているかを示すレポートを受け取ります。

  • 採用が簡単。CodeDeploy は、プラットフォームに依存せず、すべてのアプリケーションで動作します。セットアップコードは簡単に再利用できます。また、CodeDeploy は、ソフトウェアリリースプロセスまたは継続的配信ツールチェーンと統合できます。

  • 同時デプロイ。EC2/オンプレミスコンピューティングプラットフォームを使用する複数のアプリケーションがある場合、CodeDeploy は同じインスタンスのセットでこれらを同時にデプロイできます。

CodeDeploy コンピューティングプラットフォームの概要

CodeDeploy は、アプリケーションを 3 つのコンピューティングプラットフォームにデプロイできます。

  • EC2/オンプレミス: Amazon EC2 クラウドインスタンス、オンプレミスサーバー、またはその両方とすることができる物理サーバーのインスタンスを記述します。EC2/オンプレミスコンピューティングプラットフォームを使用して作成されたアプリケーションは、実行可能ファイル、設定ファイル、イメージなどで構成できます。

    EC2/オンプレミスコンピューティングプラットフォームを使用するデプロイでは、インプレイスまたは Blue/Green デプロイタイプを使用して、トラフィックをインスタンスに振り分ける方法を管理できます。詳細については、「CodeDeploy デプロイタイプの概要」を参照してください。

  • AWSLambda: Lambda 関数の更新バージョンで構成されるアプリケーションのデプロイに使用されます。AWS Lambdaは、高可用性コンピューティング構造で構成されるサーバーレスコンピューティング環境で Lambda 関数を管理します。コンピューティングリソースのすべての管理は、AWS Lambda によって実行されます。詳細については、「」を参照してください。サーバーレスコンピューティングとアプリケーション。の詳細AWS LambdaLambda 関数の場合は、「」AWS Lambda

    Canary 設定、線形設定、または一度にすべての設定を選択して、デプロイ時に更新された Lambda 関数のバージョンにトラフィックが移行される方法を管理できます。

  • Amazon ECS: タスクセットとして Amazon ECS コンテナ化されたアプリケーションをデプロイするために使用されます。CodeDeploy は、アプリケーションの更新バージョンを新しい置き換えタスクセットとしてインストールすることで、Blue/Green のデプロイを実行します。CodeDeploy は、元のアプリケーションタスクセットから置き換えタスクセットに本稼働トラフィックを再ルーティングします。デプロイが正常に完了すると、元のタスクセットは削除されます。Amazon ECS の詳細については、「」Amazon Elastic Container Service

    Canary 設定、線形設定、または一度にすべての設定を選択して、デプロイ時に更新済みタスクセットにトラフィックを移行する方法を管理できます。

    注記

    Amazon ECS Blue/Green デプロイは、CodeDeploy とAWS CloudFormation。これらのデプロイの詳細については、以降のセクションで説明します。

次の表に、各コンピューティングプラットフォームでの CodeDeploy コンポーネントの使用方法を示します。詳細については、以下を参照してください。

CodeDeploy EC2/オンプレミス AWS Lambda Amazon ECS
デプロイグループ 一連のインスタンスにリビジョンをデプロイします。 高可用性コンピューティングインフラストラクチャで、サーバーレス Lambda 関数の新しいバージョンをデプロイします。 タスクセットとしてデプロイする、コンテナ化されたアプリケーション、デプロイされたアプリケーションへのトラフィック提供に使用される本稼働およびオプションのテストリスナー、トラフィックを再ルーティングし、デプロイされたアプリケーションの元のタスクセットを終了するタイム、オプションのトリガー、アラーム、およびロールバックとしてデプロイする、Amazon ECS サービスを指定します。[] 設定。
デプロイ アプリケーションと AppSpec ファイルから構成される新しいリビジョンをデプロイします。AppSpec は、アプリケーションをデプロイグループのインスタンスにデプロイする方法を指定します。 Lambda 関数のあるバージョンから、同じ関数の新しいバージョンに本稼働トラフィックを移動させます。AppSpec ファイルは、デプロイする Lambda 関数のバージョンを指定します。 Amazon ECS コンテナー化されたアプリケーションの更新バージョンを、新しい置き換えタスクセットとしてデプロイします。CodeDeploy は、元のバージョンのタスクセットから、更新されたバージョンの新しい置き換えタスクセットに本稼働トラフィックを再ルーティングします。デプロイ完了時に、元のタスクセットは削除されます。
デプロイ設定 デプロイの速度と、デプロイ中にいつでも使用できる必要のある正常なインスタンスの最小数を決定する設定。 更新された Lambda 関数バージョンにトラフィックを移行する方法を決定する設定。 更新された Amazon ECS タスクセットにトラフィックを移行する方法を決定する設定。
リビジョン AppSpec ファイルとアプリケーションファイルの組み合わせ (例: 実行ファイル、設定ファイル)。 デプロイする Lambda 関数と、ライフサイクルイベントフック中に検証テストを実行できる Lambda 関数を指定する AppSpec ファイル。

以下を指定する AppSpec ファイル

  • デプロイするためのコンテナー化されたアプリケーションを含む Amazon ECS サービス用の Amazon ECS タスク定義。

  • 最新のアプリケーションがデプロイされているコンテナ。

  • 本稼働トラフィックが再ルーティングされるコンテナのポート。

  • オプションのネットワーク構成設定と、デプロイライフサイクルイベントフック中に検証テストを実行できる Lambda 関数。

Application デプロイグループおよびリビジョンのコレクション。EC2/オンプレミスアプリケーションは、EC2/オンプレミスコンピューティングプラットフォームを使用します。 デプロイグループおよびリビジョンのコレクション。に使用されるアプリケーションAWS Lambdaデプロイメントはサーバーレスを使用しますAWSLambda コンピューティングプラットフォーム。 デプロイグループおよびリビジョンのコレクション。Amazon ECS デプロイに使用されるアプリケーションは、Amazon ECS コンピューティングプラットフォームを使用します。

CodeDeploy デプロイタイプの概要

CodeDeploy には、2 つのデプロイタイプのオプションがあります。

  • インプレースデプロイ: デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用し、デプロイ中はインスタンスが登録解除され、デプロイ完了後にサービスに復元されるようにできます。EC2/オンプレミスコンピューティングプラットフォームを使用するデプロイのみが、インプレイスデプロイを使用できます。インプレイスデプロイの詳細については、「インプレイスデプロイの概要」を参照してください。

    注記

    AWSLambda および Amazon ECS デプロイでは、インプレイスデプロイタイプを使用できません。

  • Blue-Green デプロイ: デプロイの動作は、使用するコンピューティングプラットフォームによって異なります。

    • EC2/オンプレミスコンピューティングプラットフォームの Blue/Green: デプロイグループのインスタンス (元の環境) は、次の手順を使用して、インスタンスの別のセット (置き換え先環境) に置き換えられます。

      • インスタンスは、置き換え先環境にプロビジョニングされます。

      • 置き換え先インスタンスには、最新のアプリケーションリビジョンがインストールされています。

      • オプションの待機時間は、アプリケーションのテストやシステム検証などのアクティビティに対して発生します。

      • 置き換え先環境のインスタンスは Elastic Load Balancing ロードバランサーに登録され、これらのインスタンスに対してトラフィックが再ルーティングされます。元の環境のインスタンスは登録が解除され、他の用途で終了したり、引き続き実行したりできます。

      注記

      EC2/オンプレミスのコンピューティングプラットフォームを使用する場合は、ブルー/グリーンのデプロイは Amazon EC2 インスタンスでのみ機能することに注意してください。

    • 上のBlue/GreenAWS Lambdaまたは Amazon ECS コンピューティングプラットフォーム: トラフィックは、に従って、増分で移行されます。Canary,線形, またはオールインワンデプロイ設定。詳細については、「デプロイ設定」を参照してください。

    • を使用した Blue/Green デプロイAWS CloudFormation: トラフィックは、現在のリソースから更新されたリソースに移行します。AWS CloudFormationスタックの更新。現時点では、ECS Blue/Green デプロイのみがサポートされています。

    Blue/Green デプロイの詳細については、「Blue/Green デプロイの概要」を参照してください。

注記

CodeDeploy エージェントを使用すると、サインインしているインスタンスでデプロイを実行できます。AWSアカウント. 詳細については、CodeDeploy エージェントを使用して、ローカルマシン上のデプロイパッケージを検証する を参照してください。

インプレイスデプロイの概要

注記

AWSLambda および Amazon ECS デプロイでは、インプレイスデプロイタイプを使用できません。

インプレイスデプロイの動作は次のとおりです。

  1. まず、ローカルの開発用マシンまたは同様の環境でデプロイ可能なコンテンツを作成し、アプリケーション仕様ファイル(AppSpec ファイル)。AppSpec ファイルは、CodeDeploy 固有のファイルです。CodeDeploy を実行するデプロイアクションを定義します。デプロイ可能なコンテンツと AppSpec ファイルをアーカイブファイルにバンドルし、Amazon S3 バケットまたは GitHub リポジトリにアップロードします。このアーカイブファイルは、アプリケーションリビジョン (または単にリビジョン) と呼ばれます。

  2. 次に、リビジョンを取得するAmazon S3 バケットまたは GitHub リポジトリ、コンテンツをデプロイする Amazon EC2 インスタンスのセットなど、デプロイに関する情報を CodeDeploy に提供します。CodeDeploy は、一連の Amazon EC2 インスタンスを aデプロイグループ。デプロイグループには、個別にタグ付けされた Amazon EC2 インスタンス、Amazon EC2 Auto Scaling グループ内の Amazon EC2 インスタンス、またはその両方が含まれます。

    デプロイグループにデプロイする新しいアプリケーションリビジョンを正常にアップロードするたびに、そのバンドルはデプロイグループのターゲットリビジョンとして設定されます。つまり、現在デプロイ対象となっているアプリケーションリビジョンがターゲットリビジョンです。これは、自動デプロイにプルされるリビジョンでもあります。

  3. 次に、各インスタンスの CodeDeploy エージェントが CodeDeploy をポーリングして、指定された Amazon S3 バケットまたは GitHub リポジトリから何を、いつ取得するのかを決定します。

  4. 最後に、各インスタンスの CodeDeploy エージェントは、Amazon S3 バケットまたは GitHub リポジトリからターゲットリビジョンを取得し、AppSpec ファイルの手順を使用して、コンテンツをインスタンスにデプロイします。

CodeDeploy は、デプロイステータス、デプロイ設定パラメータ、インスタンスの状態を取得できるように、デプロイのレコードを保持します。

Blue/Green デプロイの概要

Blue/Green デプロイでは、アプリケーションの新しいバージョンの変更による中断を最小限に抑えながら、アプリケーションを更新するために使用されます。CodeDeploy は、本番トラフィックを再ルーティングする前に、古いバージョンと一緒に新しいアプリケーションバージョンをプロビジョニングします。

  • AWSLambda: Lambda 関数のあるバージョンから、同じ Lambda 関数の新しいバージョンにトラフィックが移行します。

  • Amazon ECS: Amazon ECS サービスのタスクセットから、同じ Amazon ECS サービスの更新された置き換えタスクセットにトラフィックが移行します。

  • EC2/オンプレミス: 元の環境内の、あるインスタンスセットから、インスタンスの置き換え先のセットにトラフィックが移行します。

すべてAWSLambda および Amazon ECS デプロイは、Blue/Green デプロイです。EC2/オンプレミスデプロイは、インプレースまたは Blue/Green デプロイです。Blue/Green デプロイには、インプレースデプロイと比べて多くのメリットがあります。

  • トラフィックを再ルーティングするだけで、アプリケーションを新しい置き換え先環境にインストールしてテストし、本稼働環境へデプロイできます。

  • EC2/オンプレミスコンピューティングプラットフォームを使用している場合、アプリケーションの最新バージョンに切り替えることで、より迅速で信頼性が高まります。これは、トラフィックが終了していない限り、トラフィックを元のインスタンスにルーティングできるためです。インプレースデプロイでは、以前のバージョンのアプリケーションを再デプロイすることによってバージョンをロールバックする必要があります。

  • EC2/オンプレミスコンピューティングプラットフォームを使用している場合、新しいインスタンスは Blue/Green デプロイ向けにプロビジョニングされ、最新のサーバー設定が反映されます。これにより、長時間実行するインスタンスで発生する問題を回避できます。

  • 使用している OSAWSLambda コンピューティングプラットフォーム。元のトラフィックからトラフィックを移行する方法を管理できます。AWS新しいバージョンの Lambda 関数のバージョンAWSLambda 関数のバージョン。

  • Amazon ECS コンピューティングプラットフォームを使用している場合は、元のタスクセットから新しいタスクセットにトラフィックを移行する方法をユーザーが管理します。

AWS CloudFormation を使用した Blue/Green デプロイでは、次のいずれかの方法を使用できます。

  • AWS CloudFormationデプロイ用のテンプレート: でデプロイを構成する場合AWS CloudFormationテンプレートの場合、デプロイメントは以下によってトリガーされますAWS CloudFormation更新。リソースを変更してテンプレートの変更をアップロードすると、AWS CloudFormation のスタック更新によって新しいデプロイが開始されます。AWS CloudFormation テンプレートで使用できるリソースのリストについては、「AWS CloudFormationCodeDeploy リファレンスのテンプレート」を参照してください。

  • を使用した Blue/Green デプロイAWS CloudFormation: 次を使用できます。AWS CloudFormationスタックの更新を通じて Blue/Green デプロイを管理できます。スタックテンプレート内で、トラフィックルーティングと安定化設定を指定するだけでなく、Blue ソースと Green リソースの両方を定義します。次に、スタックの更新中に選択したリソースを更新すると、AWS CloudFormation は必要なすべての Green リソースを生成し、指定されたトラフィックルーティングパラメータに基づいてトラフィックをシフトし、Blue リソースを削除します。詳細については、「」を参照してください。を使用して CodeDeploy を通じて Amazon ECS ブルー/グリーンデプロイを自動化AWS CloudFormationAWS CloudFormationユーザーガイド

    注記

    Amazon ECS Blue/Green デプロイでのみサポートされます。

Blue/Green デプロイを設定する方法は、使用するコンピューティングプラットフォームによって異なります。

での Blue/Green デプロイAWS Lambdaまたは Amazon ECS コンピューティングプラットフォーム

使用している OSAWS Lambdaまたは Amazon ECS コンピューティングプラットフォームの場合は、トラフィックが元のものからどのようにシフトされるかを指定する必要がありますAWS Lambda関数または Amazon ECS タスクが新しい関数またはタスクセットに設定されています。トラフィックの移行方法を示すには、次のデプロイ設定のうち1 つを指定する必要があります。

  • Canary

  • 線形

  • オールインワン

カナリア、線形設定、または一度にすべてのデプロイ設定でのトラフィックの移行方法については、を参照してください。デプロイ設定

Lambda デプロイ設定の詳細については、を参照してください。 でのデプロイ設定AWS Lambdaコンピューティングプラットフォーム

Amazon ECS デプロイ設定の詳細については、「」を参照してください。Amazon ECS コンピューティングプラットフォームのデプロイ設定

EC2/オンプレミスコンピューティングプラットフォームの Blue/Green デプロイ

注記

EC2/オンプレミスコンピューティングプラットフォームのBlue/Green デプロイには、Amazon EC2 インスタンスを使用する必要があります。オンプレミスインスタンスは Blue/Green デプロイタイプではサポートされません。

EC2/オンプレミスコンピューティングプラットフォームを使用している場合は、次が適用されます。

Amazon EC2 タグまたは Amazon EC2 Auto Scaling グループを識別する 1 つ以上の Amazon EC2 インスタンスが必要です。インスタンスは、以下の条件を満たす必要があります。

  • 各 Amazon EC2 インスタンスには、適切な IAM インスタンスプロファイルがアタッチされている必要があります。

  • 各インスタンスで CodeDeploy エージェントをインストールして実行する必要があります。

注記

通常は、元の環境のインスタンスでアプリケーションリビジョンも実行しますが、これは Blue/Green デプロイの要件ではありません。

Blue/Green デプロイで使用されるデプロイグループを作成するときは、置き換え先環境の指定方法を選択できます。

既存の Amazon EC2 Auto Scaling グループをコピーする: Blue/Green デプロイの場合、CodeDeploy は、デプロイ中に置き換え先環境のインスタンスを作成します。このオプションを使用すると、CodeDeploy は、指定したAmazon EC2 Auto Scaling グループを置き換え先環境のテンプレートとして使用します。これには、同じ数の実行中のインスタンスと他の多くの設定オプションが含まれます。

インスタンスを手動で選択する: Amazon EC2 インスタンスタグ、Amazon EC2 Auto Scaling グループ名、またはその両方を使用して、置き換え先として含めるインスタンスを指定できます。このオプションを選択した場合、デプロイを作成するまで置き換え先環境のインスタンスを指定する必要はありません。

処理の流れ

  1. 元の環境として機能するインスタンスまたは Amazon EC2 Auto Scaling グループがすでにあります。Blue/Green デプロイを初めて実行するときは、通常、インプレースデプロイで既に使用されているインスタンスを使用します。

  2. 既存の CodeDeploy アプリケーションでは、Blue/Green デプロイグループを作成し、インプレースデプロイに必要なオプションに加えて、次を指定します。

    • Blue/Green デプロイプロセスで元の環境から置き換え先環境にトラフィックをルーティングするロードバランサー。

    • 置き換え先環境にトラフィックを直ちに再ルーティングするか、手動で再ルーティングするまで待つかどうか。

    • トラフィックが置き換え先インスタンスにルーティングされるレート。

    • 置き換え元インスタンスを削除するか引き続き実行するかどうか。

  3. このデプロイグループのデプロイを作成するときには、次の処理が行われます。

    1. Amazon EC2 Auto Scaling グループをコピーすることを選択した場合、インスタンスは置き換え先環境にプロビジョニングされます。

    2. デプロイに指定したアプリケーションリビジョンは、置き換え先インスタンスにインストールされます。

    3. デプロイグループの設定で待機時間を指定した場合、デプロイは一時停止します。これは置き換え先環境のテストおよび確認を実行できる時間です。待機時間が終了する前にトラフィックを手動で再ルーティングしない場合、デプロイは停止します。

    4. 置き換え先環境のインスタンスは Elastic Load Balancing ロードバランサーに登録され、これらのインスタンスに対してトラフィックのルーティングが開始されます。

    5. 元の環境のインスタンスは、終了するか引き続き実行するか、デプロイグループの指定に従って登録が解除され、処理されます。

を通じて Blue/Green デプロイAWS CloudFormation

CodeDeploy Blue/Green デプロイを管理するには、AWS CloudFormationテンプレートテンプレート。

AWS CloudFormation テンプレートを使用して Blue/Green リソースをモデル化する場合、タスクセットを更新する AWS CloudFormation でスタック更新を作成します。本稼働トラフィックは、すべて一度に、線形デプロイとベイク処理時間を使用して、または Canary デプロイを使用してサービスの元のタスクセットから置き換えタスクセットにシフトします。スタックの更新により、CodeDeploy のデプロイが開始されます。CodeDeploy でデプロイのステータスと履歴を表示できますが、それ以外の場合は外部で CodeDeploy リソースを作成したり管理したりすることはできません。AWS CloudFormationテンプレートテンプレート。

注記

を通じた Blue/Green デプロイの場合AWS CloudFormationでは、CodeDeploy アプリケーションまたはデプロイグループを作成しません。

この方法では、Amazon ECS Blue/Green デプロイのみサポートされます。AWS CloudFormation を通じた Blue/Green デプロイの詳細については、「を使用して Amazon ECS ブルー/グリーンデプロイを作成するAWS CloudFormation」を参照してください。

ご意見をお待ちしております

ご意見をお待ちしております。お問い合わせの場合は、CodeDeploy フォーラム

トピック