翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EC2 Auto Scaling と CodeDeploy
CodeDeploy は Amazon EC2 Auto Scaling をサポートしていますAWS定義した条件に従って Amazon EC2 インスタンスを自動的に起動するサービス。これらの条件には、CPU 使用率、ディスクの読み取り/書き込み、インバウンド/アウトバウンドのネットワークトラフィックに関して、指定された時間間隔を超えた制限を含めることができます。Amazon EC2 Auto Scaling は、不要になったときにインスタンスを終了します。詳細については、「」を参照してください。Amazon EC2 Auto Scaling とはのAmazon EC2 Auto Scaling ユーザーガイド。
Amazon EC2 Auto Scaling グループの一部として新しい Amazon EC2 インスタンスを起動すると、CodeDeploy ではリビジョンを新しいインスタンスに自動的にデプロイできます。また、Elastic Load Balancing ロードバランサーに登録された Amazon EC2 Auto Scaling インスタンスを使用して CodeDeploy のデプロイを調整できます。詳細については、「Integrating CodeDeploy with Elastic Load Balancing」および「Elastic Load Balancing でロードバランサーをセットアップするにはCodeDeployアマゾン EC2 デプロイメント」を参照してください。
注記
複数のデプロイグループを単一の Amazon EC2 Auto Scaling グループに関連付けると、問題が発生する可能性があります。たとえば、1 つのデプロイが失敗すると、インスタンスはシャットダウンを開始しますが、実行中の他のデプロイはタイムアウトに 1 時間かかる可能性があります。詳細については、「」を参照してください。複数のデプロイグループを 1 つの Amazon EC2 Auto Scaling グループに関連付けることは避けるそしてフードの下: CodeDeploy と Amazon EC2 Auto Scaling
トピック
Amazon EC2 Auto Scaling グループにCodeDeploy アプリケーションをデプロイする
CodeDeploy アプリケーションリビジョンを Amazon EC2 Auto Scaling グループにデプロイするには:
-
Amazon EC2 Auto Scaling グループが Amazon S3 で作業できるようにする IAM インスタンスプロファイルを作成または検索します。詳細については、「ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する」を参照してください。
注記
また、CodeDeploy を使用して GitHub リポジトリから Amazon EC2 Auto Scaling グループにリビジョンをデプロイすることもできます。Amazon EC2 インスタンスでは依然として IAM インスタンスプロファイルが必要な場合でも、GitHub リポジトリからデプロイするには、プロファイルに追加のアクセス許可は必要ありません。
-
Amazon EC2 Auto Scaling グループを作成または使用し、起動設定またはテンプレートで IAM インスタンスプロファイルを指定します。詳細については、「」を参照してください。Amazon EC2 インスタンスで実行中のアプリケーション用の IAM ロール。
-
CodeDeploy で Amazon EC2 Auto Scaling グループを含むデプロイグループを作成または検索します。サービスロールを作成または検索します。
-
CodeDeploy を使用してデプロイグループを作成し、Amazon EC2 Auto Scaling グループ名とサービスロールを指定します。
-
CodeDeploy を使用して Amazon EC2 Auto Scaling グループを含むデプロイグループにリビジョンをデプロイします。
詳細については、「チュートリアル:使用CodeDeployアプリケーションを Auto Scaling グループにデプロイするには」を参照してください。
CodeDeploy での Amazon EC2 Auto Scaling の
CodeDeploy が Auto Scaling スケールアウトイベント中にアプリケーションリビジョンを新しい EC2 インスタンスにデプロイするために、CodeDeploy は Auto Scaling ライフサイクルフックを使用します。ライフサイクルフックは、Auto Scaling スケールアウトイベントが進行中であり、CodeDeploy がスケールアウトインスタンスにリビジョンをデプロイする必要があることを CodeDeploy に通知します。
注記
このセクションでは、「ライフサイクルフック」と「フック」という用語は、CodeDeploy と Auto Scaling を統合するために使用されるフックを指します。このフックは、で説明されているフックとは異なります。AppSpec「フック」セクション。
トピック
ライフサイクルフックはどのように作成され、インストールされますか。
Auto Scaling グループを含めるようにデプロイグループを作成または更新すると、CodeDeploy は CodeDeploy サービスロールを使用して Auto Scaling グループにアクセスし、Auto Scaling グループにライフサイクルフックをインストールします。
CodeDeploy がライフサイクルフックを追加した後、どのように使用されますか。
ライフサイクルフックがインストールされると、スケールアウトイベント中に使用されます。スケールアウトイベントは次のように展開されます。
-
Auto Scaling サービス(または単に Auto Scaling)は、スケールアウトイベントが発生する必要があると判断し、EC2 サービスに連絡して新しい EC2 インスタンスを起動します。
-
EC2 サービスは新しい EC2 インスタンスを起動します。インスタンスは、
Pending
の状態をして、Pending:Wait
状態。 -
時
Pending:Wait
では、Auto Scaling は、CodeDeploy によって作成されたライフサイクルフックを含め、Auto Scaling グループにアタッチされたすべてのライフサイクルフックを実行します。 -
ライフサイクルフックは、Amazon SQS キューこれは CodeDeploy によってポーリングされます。
-
通知を受信すると、CodeDeploy はメッセージを解析し、検証を実行し、最後に成功したリビジョンを使用して新しい EC2 インスタンスへのアプリケーションのデプロイを開始します。
-
デプロイの実行中、CodeDeploy は 5 分ごとに Auto Scaling にハートビートを送信し、インスタンスがまだ動作中であることを知らせます。
-
これまでのところ、EC2 インスタンスはまだ
Pending:Wait
状態。 -
デプロイが完了すると、CodeDeploy は Auto Scaling に次のいずれかを示します。
CONTINUE
またはABANDON
EC2 起動プロセス。デプロイが成功したか失敗したかによって異なります。-
CodeDeploy が
CONTINUE
の場合、Auto Scaling は他のフックの完了を待機するか、インスタンスをPending:Proceed
そして、InService
状態。 -
CodeDeploy が
ABANDON
では、Auto Scaling は EC2 インスタンスを終了し、Auto Scaling で定義されているように、必要な数のインスタンスを満たすために必要に応じて起動手順を再開します。希望する容量設定設定。
-
Amazon EC2 Auto Scaling グループを CodeDeploy
EC2/オンプレミスのコンピューティングプラットフォームでの Blue/Green のデプロイ中に、代替 (Green) 環境にインスタンスを追加するには 2 つのオプションがあります。
-
既存のインスタンス、または手動で作成したインスタンスを使用します。
-
指定した Amazon EC2 Auto Scaling グループの設定を使用して、新しい Amazon EC2 Auto Scaling グループにインスタンスを定義および作成します。
2 番目のオプションを選択した場合は、CodeDeploy は新しい Amazon EC2 Auto Scaling グループをプロビジョニングします。以下の規則を使用して、グループに名前を付けます。
CodeDeploy_
deployment_group_name
_deployment_id
たとえば、ID を持つデプロイメントの場合10
という名前のデプロイグループをデプロイします。alpha-deployments
の場合、プロビジョニングされた Amazon EC2 Auto Scaling グループの名前はCodeDeploy_alpha-deployments_10
。詳細については、EC2/オンプレミス Blue/Green デプロイ用のデプロイグループを作成する (コンソール) および「GreenFleetProvisioningOption」を参照してください。
カスタムライフサイクルフックイベントの実行順序
CodeDeploy がデプロイする Amazon EC2 Auto Scaling グループに独自のライフサイクルフックを追加できます。ただし、CodeDeploy のデフォルトデプロイライフサイクルイベントに関して、これらのカスタムライフサイクルフックイベントが実行される順序は事前に決定できません。たとえば、という名前のカスタムライフサイクルフックを追加するとします。ReadyForSoftwareInstall
Amazon EC2 Auto Scaling グループに対して、それが実行されるのがのデフォルトデプロイライフサイクルの最初のイベントの前であるか、前回の CodeDeploy のデフォルトデプロイライフサイクルのイベントの前であるか、事前に知ることはできません。
Amazon EC2 Auto Scaling グループにカスタムライフサイクルフックを追加する方法については、「」を参照してください。ライフサイクルフックの追加のAmazon EC2 Auto Scaling ユーザーガイド。
デプロイ中のスケールアウトイベント
デプロイ中に Amazon EC2 Auto Scaling スケールアウトイベントが発生すると、新しいインスタンスは、今回デプロイ中のアプリケーションリビジョンではなく、前回デプロイしたアプリケーションリビジョンで更新されます。デプロイが成功すると、古いインスタンスと新しくスケールアウトされたインスタンスは、異なるアプリケーションリビジョンをホストします。これらのインスタンスを最新の状態にするために、CodeDeploy は自動的にフォローオンデプロイを開始し(最初のインスタンスの直後)、古いインスタンスを更新します。このデフォルトの動作を変更して、古い EC2 インスタンスが古いリビジョンに残るようにする場合は、「」を参照してください。Automatic updates to outdated instances。
デプロイ中に Amazon EC2 Auto Scaling スケールアウトプロセスを中断する場合は、のcommon_functions.sh
CodeDeploy での負荷分散に使用されるスクリプト。もしHANDLE_PROCS=true
の場合、デプロイ中に次の Auto Scaling イベントが自動的に中断されます。
-
AZRebalance
-
AlarmNotification
-
ScheduledActions
-
ReplaceUnhealthy
重要
この機能をサポートするのは、CodeDeployDefault.oneAtatime デプロイ設定のみです。
の使用方法についての詳細HANDLE_PROCS=true
Amazon EC2 Auto Scaling の使用時にデプロイの問題を回避するには、「」を参照してください。AutoScaling プロセスの処理に関する重要な注意事項
でのイベントの順序AWS CloudFormationcfn-init スクリプト
cfn-init
(または cloud-init
) を使用して新しくプロビジョニングした Linux ベースのインスタンスでスクリプトを実行する場合、インスタンスの開始後に発生するイベントの順序を厳密に制御しないと、デプロイは失敗することがあります。
次の順序に従う必要があります。
-
新しくプロビジョニングしたインスタンスが開始する。
-
すべての
cfn-init
ブートストラップスクリプトが最後まで実行する。 -
CodeDeploy エージェントが開始する。
-
最新のアプリケーションリビジョンがインスタンスにデプロイされる。
イベントの順序を慎重に制御しないと、CodeDeploy エージェントはすべてのスクリプトの実行が終了する前にデプロイを開始する可能性があります。
イベントの順序を制御するには、以下のベストプラクティスのいずれかを使用します。
-
CodeDeploy エージェントをインストールするには
cfn-init
スクリプト、他のすべてのスクリプトの後に配置します。 -
CodeDeploy エージェントをカスタム AMI に含め、
cfn-init
スクリプトを起動し、他のすべてのスクリプトの後に配置します。
の使用方法についてcfn-init
「」を参照してください。cfn-initのAWS CloudFormationユーザーガイド。
CodeDeploy と Amazon EC2 Auto Scaling でのカスタム AMI の使用
Amazon EC2 Auto Scaling グループで新しいAmazon EC2 インスタンスを起動するときに必要な基本 AMI を指定する 2 つのオプションがあります。
-
CodeDeploy エージェントがインストールされている基本カスタム AMI を指定できます。エージェントが既にインストールされているため、このオプションは他のオプションよりも迅速に新しい Amazon EC2 インスタンスを起動します。ただし、このオプションを使用すると、特に CodeDeploy エージェントが古い場合、Amazon EC2 インスタンスの最初のデプロイが失敗する可能性が大きくなります。このオプションを選択した場合は、基本カスタム AMI で CodeDeploy エージェントを定期的に更新することをお勧めします。
-
CodeDeploy エージェントがインストールされていない基本 AMI を指定し、Amazon EC2 Auto Scaling グループで新しいインスタンスが起動されるたびにエージェントをインストールできます。このオプションでは、他のオプションよりも新しい Amazon EC2 インスタンスの起動が遅くなりますが、インスタンスの初期デプロイが成功する可能性は大きくなります。このオプションは、CodeDeploy エージェントの最新バージョンを使用します。