翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
とは CodeDeploy
CodeDeploy は、Amazon EC2 インスタンス、オンプレミスインスタンス、サーバーレス Lambda 関数、または Amazon ECS サービスへのアプリケーションのデプロイを自動化するデプロイサービスです。
以下のような、ほぼ無制限の多様なアプリケーションコンテンツをデプロイできます。
-
Code
-
サーバーレス AWS Lambda 関数
-
ウェブファイルおよび設定ファイル
-
Executables
-
パッケージ
-
スクリプト
-
マルチメディアファイル
CodeDeploy は、サーバー上で実行され、Amazon S3 バケット、 GitHub リポジトリ、または Bitbucket リポジトリに保存されているアプリケーションコンテンツをデプロイできます。また、サーバーレス Lambda 関数をデプロイ CodeDeploy することもできます。を使用する前に、既存のコードを変更する必要はありません CodeDeploy。
CodeDeploy を使用すると、次のことが容易になります。
-
新機能の迅速なリリース。
-
AWS Lambda 関数のバージョンを更新します。
-
アプリケーションのデプロイメント中のダウンタイム回避。
-
アプリケーションの更新に伴う繁雑さを処理。エラーの発生しやすい手動デプロイに伴うリスクの多くを回避できます。
サービスはインフラストラクチャに合わせてスケールするため、1 つのインスタンスまたは数千のインスタンスに簡単にデプロイできます。
CodeDeploy は、設定管理、ソースコントロール、継続的インテグレーション 、継続的デリバリー
CodeDeploy コンソールでは、リポジトリ、ビルドプロジェクト、デプロイアプリケーション、パイプラインなどのリソースをすばやく検索することもできます。[Go to resource (リソースに移動)] または /
キーを押して、リソースの名前を入力します。一致するものはすべてリストに表示されます。検索では大文字と小文字が区別されません。リソースを表示する権限がある場合のみ表示されます。詳細については、「AWS CodeDeployのためのアイデンティティおよびアクセス管理 」を参照してください。
トピック
の利点 AWS CodeDeploy
CodeDeploy には次の利点があります。
-
サーバー、サーバーレス、コンテナアプリケーション 。 を使用すると、サーバーレス AWS Lambda 関数バージョンまたは Amazon ECS アプリケーションをデプロイするサーバーとアプリケーションの両方に、従来のアプリケーションをデプロイできます。 CodeDeploy
-
自動デプロイ 。 は、開発、テスト、本番環境全体でアプリケーションのデプロイ CodeDeploy を完全に自動化します。 CodeDeploy はインフラストラクチャに合わせてスケーリングするため、1 つのインスタンスまたは数千のインスタンスにデプロイできます。
-
ダウンタイムの最小化。アプリケーションで EC2/オンプレミスコンピューティングプラットフォームを使用している場合は、アプリケーションの可用性 CodeDeploy を最大化できます。インプレースデプロイ中に、 は Amazon EC2 インスタンス間でローリング更新 CodeDeploy を実行します。更新のために、一度にオフラインにするインスタンスの数を指定できます。Blue/Green デプロイの間、最新アプリケーションのリビジョンは、置き換え先インスタンスにインストールされます。トラフィックは、選択するとすぐに、または新しい環境のテストが完了した時点で、これらのインスタンスに再ルーティングされます。どちらのデプロイタイプでも、 CodeDeploy は設定したルールに従ってアプリケーションのヘルスを追跡します。
-
停止してロールバック。エラーが発生した場合、自動または手動でデプロイを停止してロールバックできます。
-
コントロールの一元化。 CodeDeploy コンソールまたは を使用して、デプロイのステータスを起動および追跡できます AWS CLI。各アプリケーションのリビジョンがいつデプロイされ、どの Amazon EC2 インスタンスがリストされているかを示すレポートを受け取ります。
-
.is プラットフォームに依存しず、あらゆるアプリケーションで動作します。 CodeDeploy セットアップコードは簡単に再利用できます。 CodeDeploy は、ソフトウェアリリースプロセスまたは継続的デリバリーツールチェーンと統合することもできます。
-
同時デプロイ。EC2/オンプレミスコンピューティングプラットフォームを使用するアプリケーションが複数ある場合は、同じインスタンスセットに同時にデプロイ CodeDeploy できます。
CodeDeploy コンピューティングプラットフォームの概要
CodeDeploy は、次の 3 つのコンピューティングプラットフォームにアプリケーションをデプロイできます。
EC2/オンプレミス: Amazon EC2 クラウドインスタンス、オンプレミスサーバー、またはその両方とすることができる物理サーバーのインスタンスを記述します。EC2/オンプレミスコンピューティングプラットフォームを使用して作成されたアプリケーションは、実行可能ファイル、設定ファイル、イメージなどで構成できます。
EC2/オンプレミス コンピューティングプラットフォームを使用するデプロイでは、インプレイスまたは Blue/Green デプロイタイプを使用して、トラフィックをインスタンスに振り分ける方法を管理できます。詳細については、「 CodeDeploy デプロイタイプの概要」を参照してください。
AWS Lambda : 更新されたバージョンの Lambda 関数で構成されるアプリケーションをデプロイするために使用されます。 は、高可用性コンピューティング構造で構成されるサーバーレスコンピューティング環境で Lambda 関数 AWS Lambda を管理します。コンピューティングリソースの管理はすべて、 によって実行されます AWS Lambda。詳細については、「サーバーレスコンピューティングとアプリケーション
」を参照してください。 AWS Lambda および Lambda 関数の詳細については、「」を参照してくださいAWS Lambda 。 Canary、Linear、または all-at-once 設定を選択することで、デプロイ中に更新された Lambda 関数バージョンにトラフィックを移行する方法を管理できます。
-
Amazon ECS:Amazon ECS にコンテナ化されたアプリケーションをタスクセットとしてデプロイするために使用します。 CodeDeploy は、アプリケーションの更新されたバージョンを新しい置き換えタスクセットとしてインストールすることで、ブルー/グリーンデプロイを実行します。 CodeDeploy reroutes は、元のアプリケーションタスクセットから置き換えタスクセットに本番トラフィックを送信します。デプロイが正常に完了すると、元のタスクセットは削除されます。Amazon ECS の詳細については、「Amazon Elastic Container Service
」を参照してください。 Canary、線形、または all-at-once 設定を選択することで、デプロイ中に更新されたタスクセットにトラフィックを移行する方法を管理できます。
注記
Amazon ECS ブルー/グリーンデプロイは、 CodeDeploy と の両方を使用してサポートされています AWS CloudFormation。これらのデプロイの詳細については、以降のセクションで説明します。
次の表は、各コンピューティングプラットフォームで CodeDeploy コンポーネントがどのように使用されるかを示しています。詳細については、以下を参照してください。
CodeDeploy コンポーネント | EC2/オンプレミス | AWS Lambda | Amazon ECS |
---|---|---|---|
デプロイグループ | 一連のインスタンスにリビジョンをデプロイします。 | 可用性の高いコンピューティングインフラストラクチャで、サーバーレス Lambda 関数の新しいバージョンをデプロイします。 | タスクセットとしてデプロイする、コンテナ化されたアプリケーション、デプロイされたアプリケーションへのトラフィック提供に使用される本稼働およびオプションのテストリスナー、トラフィックを再ルーティングし、デプロイされたアプリケーションの元のタスクセットを終了するタイミング、オプションのトリガー、アラーム、およびロールバック設定で Amazon ECS サービスを指定します。 |
デプロイ | アプリケーションと AppSpec ファイルで構成される新しいリビジョンをデプロイします。は、デプロイグループのインスタンスにアプリケーションをデプロイする方法 AppSpec を指定します。 | Lambda 関数の 1 つのバージョンから、同じ関数の新しいバージョンに本稼働トラフィックを移行させます。 AppSpec ファイルは、デプロイする Lambda 関数のバージョンを指定します。 | Amazon ECS コンテナ化されたアプリケーションの更新されたバージョンを、新しい置き換えタスクセットとしてデプロイします。 CodeDeploy reroutes は、元のバージョンのタスクセットから、更新されたバージョンの新しい置き換えタスクセットに本番トラフィックを送信します。デプロイ完了時に、元のタスクセットは削除されます。 |
デプロイ設定 | デプロイの速度と、デプロイ中にいつでも使用できる必要のある正常なインスタンスの最小数を決定する設定。 | 更新された Lambda 関数バージョンにトラフィックを移行する方法を決定する設定。 | 更新された Amazon ECS タスクセットにトラフィックを移行する方法を決定する設定。 |
リビジョン | 実行可能 AppSpec ファイル、設定ファイルなど、 ファイルとアプリケーションファイルの組み合わせ。 | デプロイする Lambda 関数と、デプロイライフサイクルイベントフック中に検証テストを実行できる Lambda 関数を指定する AppSpec ファイル。 |
以下を指定する AppSpec ファイル。
|
アプリケーション | デプロイグループおよびリビジョンのコレクション。EC2/オンプレミスアプリケーションは、EC2/オンプレミスコンピューティングプラットフォームを使用します。 | デプロイグループおよびリビジョンのコレクション。 AWS Lambda デプロイに使用されるアプリケーションは、サーバーレス Lambda AWS コンピューティングプラットフォームを使用します。 | デプロイグループおよびリビジョンのコレクション。Amazon ECS デプロイに使用されるアプリケーションは、Amazon ECS コンピューティングプラットフォームを使用します。 |
CodeDeploy デプロイタイプの概要
CodeDeploy には、次の 2 つのデプロイタイプオプションがあります。
インプレイスデプロイ: デプロイグループの各インスタンス上のアプリケーションが停止され、最新のアプリケーションリビジョンがインストールされて、新バージョンのアプリケーションが開始され検証されます。ロードバランサーを使用し、デプロイ中はインスタンスが登録解除され、デプロイ完了後にサービスに復元されるようにできます。EC2 オンプレミスコンピューティングプラットフォームを使用するデプロイのみが、インプレイスデプロイを使用できます。インプレイスデプロイの詳細については、「インプレースデプロイの概要」を参照してください。
注記
AWS Lambda および Amazon ECS デプロイでは、インプレースデプロイタイプを使用できません。
Blue/Green デプロイ: デプロイの動作は、使用するコンピューティングプラットフォームにより異なります。
-
EC2 オンプレミスコンピューティングプラットフォームの Blue/Green: 以下のステップを使用して、デプロイグループのインスタンス (元の環境) がインスタンスの別のセット (置き換え先環境) に置き換えられます。
-
置き換え先の環境のインスタンスがプロビジョニングされます。
-
最新のアプリケーションリビジョンは、置き換え先インスタンスにインストールされます。
-
オプションの待機時間は、アプリケーションのテストやシステム検証などのアクティビティに対して発生します。
-
置き換え先環境のインスタンスは、1 つまたは複数の Elastic Load Balancing ロードバランサーに登録され、トラフィックは、それらに再ルーティングされます。元の環境のインスタンスは、登録が解除され、終了するか、他の使用のために実行することができます。
注記
EC2/オンプレミスのコンピューティングプラットフォームを使用する場合は、blue/green デプロイが Amazon EC2 インスタンスでのみ機能することに注意してください。
-
-
AWS Lambda または Amazon ECS コンピューティングプラットフォームの Blue/Green: トラフィックは、Canary 、線形 、またはall-at-onceデプロイ設定に従って増分でシフトされます。
-
によるブルー/グリーンデプロイ AWS CloudFormation: AWS CloudFormation スタックの更新の一環として、トラフィックは現在のリソースから更新されたリソースに移行されます。現時点では、ECS blue/green デプロイのみがサポートされています。
ブルー/グリーンデプロイの詳細については、「Blue/Green デプロイの概要」を参照してください。
-
注記
CodeDeploy エージェントを使用すると、アプリケーション、デプロイグループ、さらには AWS アカウントを必要とせずに、サインインしているインスタンスでデプロイを実行できます。詳細については、「 CodeDeploy エージェントを使用してローカルマシンのデプロイパッケージを検証する」を参照してください。
インプレースデプロイの概要
注記
AWS Lambda および Amazon ECS デプロイでは、インプレースデプロイタイプを使用できません。
インプレイスデプロイの仕組みは次のとおりです。
-
まず、ローカル開発マシンまたは同様の環境にデプロイ可能なコンテンツを作成し、アプリケーション仕様ファイル (AppSpec ファイル) を追加します。 AppSpec ファイルは に固有です CodeDeploy。 CodeDeploy 実行するデプロイアクションを定義します。デプロイ可能なコンテンツと AppSpec ファイルをアーカイブファイルにバンドルし、Amazon S3 バケットまたは GitHubリポジトリにアップロードします。このアーカイブファイルは、アプリケーションリビジョン (または単にリビジョン) と呼ばれます。
-
次に、リビジョンをプルする Amazon S3 バケットまたは GitHub リポジトリ、およびその内容をデプロイする Amazon EC2 インスタンスのセットなど、デプロイに関する情報 CodeDeploy を提供します。 は、Amazon EC2 インスタンスのセットをデプロイグループ と CodeDeploy 呼び出します。デプロイグループには、個別にタグ付けされた Amazon EC2 インスタンス、Amazon EC2 Auto Scaling グループ内の Amazon EC2 インスタンス、またはその両方が含まれます。
デプロイグループにデプロイする新しいアプリケーションリビジョンを正常にアップロードするたびに、そのバンドルはデプロイグループのターゲットリビジョンとして設定されます。つまり、現在デプロイ対象となっているアプリケーションリビジョンがターゲットリビジョンです。これは、自動デプロイにプルされるリビジョンでもあります。
-
次に、各インスタンスの CodeDeploy エージェントはポーリング CodeDeploy して、指定された Amazon S3 バケットまたは GitHub リポジトリからプルする対象とタイミングを決定します。
-
最後に、各インスタンスの CodeDeploy エージェントは Amazon S3 バケットまたは GitHub リポジトリからターゲットリビジョンをプルし、 AppSpec ファイルの指示を使用してコンテンツをインスタンスにデプロイします。
CodeDeploy は、デプロイのステータス、デプロイ設定パラメータ、インスタンスのヘルスなどを取得できるように、デプロイの記録を保持します。
Blue/Green デプロイの概要
ブルー/グリーンデプロイは、新しいアプリケーションバージョンの変更による中断を最小限に抑えながら、アプリケーションを更新するために使用されます。 は、本番トラフィックを再ルーティングする前に、新しいアプリケーションバージョンを古いバージョンとともに CodeDeploy プロビジョニングします。
-
AWS Lambda : トラフィックは、Lambda 関数の 1 つのバージョンから、同じ Lambda 関数の新しいバージョンに移行されます。
-
Amazon ECS: Amazon ECS サービスのタスクセットから、同じ Amazon ECS サービスの最新の置き換えタスクセットにトラフィックが移行します。
-
EC2/オンプレミス: 元の環境内の、あるインスタンスセットから、インスタンスの置き換え先のセットにトラフィックが移行します。
AWS Lambda と Amazon ECS のデプロイはすべて Blue/Green です。EC2/オンプレミス デプロイは、インプレースまたは Blue/Green です。Blue/Green デプロイには、インプレースデプロイと比べて多くのメリットがあります。
-
トラフィックを再ルーティングするだけで、アプリケーションを新しい置き換え先環境にインストールしてテストし、本稼働環境へデプロイできます。
-
EC2/オンプレミスコンピューティングプラットフォーム を使用している場合、最新バージョンのアプリケーションに切り替えることで、より迅速になり、信頼性が高まります。これは、トラフィックが終了していない限り、トラフィックを元のインスタンスにルーティングできるためです。インプレースデプロイでは、以前のバージョンのアプリケーションを再デプロイすることによってバージョンをロールバックする必要があります。
-
EC2/オンプレミスコンピューティングプラットフォームを使用している場合、ブルー/グリーンデプロイ用に新しいインスタンスがプロビジョニングされ、ほとんどの up-to-date サーバー設定が反映されます。これにより、長時間実行するインスタンスで発生する問題を回避できます。
-
AWS Lambda コンピューティングプラットフォームを使用している場合は、トラフィックを元の Lambda AWS 関数バージョンから新しい Lambda AWS 関数バージョンに移行する方法を制御します。
-
Amazon ECS コンピューティングプラットフォームを使用している場合は、元のタスクセットから新しいタスクセットにトラフィックを移行する方法を制御します。
を使用したブルー/グリーンデプロイ AWS CloudFormation では、次のいずれかの方法を使用できます。
-
AWS CloudFormation デプロイ用の テンプレート: AWS CloudFormation テンプレートを使用してデプロイを設定すると、デプロイは AWS CloudFormation 更新によってトリガーされます。リソースを変更してテンプレートの変更をアップロードすると、 のスタックの更新によって新しいデプロイ AWS CloudFormation が開始されます。 AWS CloudFormation テンプレートで使用できるリソースのリストについては、「」を参照してくださいAWS CloudFormation リファレンス用の CodeDeploy テンプレート。
-
によるブルー/グリーンデプロイ AWS CloudFormation: AWS CloudFormation を使用して、スタックの更新を通じてブルー/グリーンデプロイを管理できます。スタックテンプレート内で、トラフィックルーティングと安定化設定を指定するだけでなく、Blue ソースと Green リソースの両方を定義します。次に、スタックの更新中に選択したリソースを更新すると、 は必要なすべてのグリーンリソース AWS CloudFormation を生成し、指定されたトラフィックルーティングパラメータに基づいてトラフィックをシフトし、ブルーリソースを削除します。詳細については、「 AWS CloudFormation ユーザーガイド」の「 CodeDeploy を使用して Amazon ECS ブルー/グリーンデプロイを自動化 AWS CloudFormationする」を参照してください。
注記
Amazon ECS Blue/Green デプロイでのみサポートされます。
Blue/Green デプロイを設定する方法は、使用するコンピューティングプラットフォームによって異なります。
AWS Lambda または Amazon ECS コンピューティングプラットフォームでのブルー/グリーンデプロイ
AWS Lambda または Amazon ECS コンピューティングプラットフォームを使用している場合は、トラフィックを元の AWS Lambda 関数または Amazon ECS タスクセットから新しい関数またはタスクセットに移行する方法を指定する必要があります。トラフィックを移行する方法を指定するには、以下のいずれかのデプロイ設定を指定する必要があります。
-
canary
-
線形
-
all-at-once
Canary、線形、または all-at-onceデプロイ設定でトラフィックを移行する方法については、「」を参照してくださいデプロイ設定。
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 グループをコピーする: ブルー/グリーンデプロイ中に、 はデプロイ中に代替環境のインスタンス CodeDeploy を作成します。このオプションでは、 は、同じ数の実行中のインスタンスやその他多くの設定オプションなど、置換環境のテンプレートとして指定した Amazon EC2 Auto Scaling グループ CodeDeploy を使用します。
手動でインスタンスを選択: Amazon EC2 インスタンスタグ、Amazon EC2 Auto Scaling グループ名、またはその両方を使用して、置き換え先として含めるインスタンスを指定できます。このオプションを選択した場合、デプロイを作成するまで置き換え先環境のインスタンスを指定する必要はありません。
処理の流れ
-
元の環境となるインスタンスや Amazon EC2 Auto Scaling グループは既にあります。Blue/Green デプロイを初めて実行するときは、通常、インプレースデプロイで既に使用されているインスタンスを使用します。
-
既存の CodeDeploy アプリケーションでは、インプレースデプロイに必要なオプションに加えて、以下を指定するブルー/グリーンデプロイグループを作成します。
-
ブルー/グリーンデプロイプロセス中に元の環境から置き換え先環境にトラフィックをルーティングするロードバランサー。
-
置き換え先環境にトラフィックを直ちに再ルーティングするか、手動で再ルーティングするまで待つかどうか。
-
トラフィックが置き換え先インスタンスにルーティングされるレート。
-
置き換え元インスタンスを削除するか引き続き実行するかどうか。
-
-
このデプロイグループのデプロイを作成するときには、次の処理が行われます。
-
Amazon EC2 Auto Scaling グループをコピーすることを選択した場合、インスタンスは置き換え先環境にプロビジョニングされます。
-
デプロイに指定したアプリケーションリビジョンは、置き換え先インスタンスにインストールされます。
-
デプロイグループの設定で待機時間を指定した場合、デプロイは一時停止します。これは置き換え先環境のテストおよび確認を実行できる時間です。待機時間が終了する前にトラフィックを手動で再ルーティングしない場合、デプロイは停止します。
-
置き換え先環境のインスタンスは Elastic Load Balancing ロードバランサーに登録され、これらのインスタンスに対してトラフィックのルーティングが開始されます。
-
元の環境のインスタンスは、終了するか引き続き実行するか、デプロイグループの指定に従って登録が解除され、処理されます。
-
によるブルー/グリーンデプロイ AWS CloudFormation
CodeDeploy ブルー/グリーンデプロイを管理するには、 リソースを テンプレートで AWS CloudFormation モデリングします。
AWS CloudFormation テンプレートを使用してブルー/グリーンリソースをモデル化するときは、タスクセットを更新するスタック更新を AWS CloudFormation に作成します。本稼働トラフィックは、すべて一度に、線形デプロイとベイク処理時間を使用して、または Canary デプロイを使用してサービスの元のタスクセットから置き換えタスクセットにシフトします。スタックの更新により、 でのデプロイが開始されます CodeDeploy。デプロイのステータスと履歴は で表示できますが CodeDeploy、それ以外の場合は AWS CloudFormation テンプレートの外部で CodeDeploy リソースを作成または管理することはできません。
注記
によるブルー/グリーンデプロイでは AWS CloudFormation、 CodeDeploy アプリケーションやデプロイグループを作成しません。
この方法では、Amazon ECS Blue/Green デプロイのみサポートされます。によるブルー/グリーンデプロイの詳細については AWS CloudFormation、「」を参照してくださいを使用して Amazon ECS Blue/Green デプロイを作成する AWS CloudFormation。
ご意見をお待ちしております
ご意見をお待ちしております。お問い合わせは、 CodeDeploy フォーラム
トピック