でデプロイを再デプロイしてロールバックする CodeDeploy - AWS CodeDeploy

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

でデプロイを再デプロイしてロールバックする CodeDeploy

CodeDeploy は、以前にデプロイされたアプリケーションのリビジョンを新しいデプロイとして再デプロイすることで、デプロイをロールバックします。これらのロールバックされたデプロイは、前のデプロイのバージョンを復元するのではなく、新しいデプロイ ID を使用する技術的に新しいデプロイです。

デプロイは、自動または手動でロールバックできます。

自動ロールバック

デプロイが失敗した場合、または指定した監視しきい値に達した場合、自動的にロールバックするように、デプロイグループまたはデプロイを設定できます。この場合、アプリケーションリビジョンの最後の既知の正常なバージョンがデプロイされます。自動ロールバックは、アプリケーションを作成するとき、またはデプロイグループを作成または更新するときに設定します。

新しいデプロイを作成するとき、デプロイグループに指定された自動ロールバック設定をオーバーライドすることもできます。

注記

デプロイが自動的にロールバックされるときには、Amazon Simple Notification Service を使用して通知を受け取ることができます。詳細については、「Monitoring Deployments with Amazon SNS Event Notifications」を参照してください。

自動ロールバックの設定の詳細については、「デプロイグループの詳細オプションの設定」を参照してください。

手動ロールバック

自動ロールバックをセットアップしていない場合は、以前にデプロイされたアプリケーションリビジョンを使用する新しいデプロイを作成し、リビジョンを再デプロイする手順に従うことによって、デプロイを手動でロールバックすることができます。アプリケーションが不明な状態になった場合、これを行う場合があります。トラブルシューティングに多くの時間を費やすのではなく、アプリケーションを既知の動作状態に再デプロイすることができます。詳細については、「を使用してデプロイを作成する CodeDeploy」を参照してください。

注記

デプロイグループからインスタンスを削除しても、そのインスタンスに既にインストールされている可能性のあるものはアンインストール CodeDeploy されません。

ロールバックおよび再デプロイのワークフロー

自動ロールバックが開始された場合、または再デプロイまたは手動ロールバックを手動で開始した場合、 は CodeDeploy まず、最後に正常にインストールされたすべてのファイルを各参加インスタンスから削除しようとします。クリーンアップファイルをチェックして CodeDeploy これを行います。

/opt/codedeploy-agent/deployment-root/deployment-instructions/deployment-group-ID-cleanup ファイル (Amazon Linux、Ubuntu Server、および RHEL インスタンス用)

C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\deployment-group-ID-cleanup ファイル (Windows Server インスタンス用)

存在する場合、クリーンアップファイル CodeDeploy を使用して、新しいデプロイを開始する前に、リストされているすべてのファイルをインスタンスから削除します。

例えば、最初の 2 つのテキストファイルおよび 2 つのスクリプトファイルは、Windows Server を実行している Amazon EC2 インスタンスにデプロイ済みであり、スクリプトによってデプロイライフサイクルイベント中にさらに 2 つのテキストファイルが作成されました :

c:\temp\a.txt (previously deployed by CodeDeploy) c:\temp\b.txt (previously deployed by CodeDeploy) c:\temp\c.bat (previously deployed by CodeDeploy) c:\temp\d.bat (previously deployed by CodeDeploy) c:\temp\e.txt (previously created by c.bat) c:\temp\f.txt (previously created by d.bat)

クリーンアップファイルは、最初の 2 つのテキストファイルおよび 2 つのスクリプトファイルのみが表示されます。

c:\temp\a.txt c:\temp\b.txt c:\temp\c.bat c:\temp\d.bat

新しいデプロイの前に、 CodeDeploy は最初の 2 つのテキストファイルと 2 つのスクリプトファイルのみを削除し、最後の 2 つのテキストファイルはそのまま残します。

c:\temp\a.txt will be removed c:\temp\b.txt will be removed c:\temp\c.bat will be removed c:\temp\d.bat will be removed c:\temp\e.txt will remain c:\temp\f.txt will remain

このプロセスの一環として、 CodeDeploy は、手動ロールバックまたは自動ロールバックにかかわらず、その後の再デプロイ中に以前のデプロイでスクリプトによって実行されたアクションを元に戻したり、調整したりしようとしません。例えば、 ファイルc.batd.bat ファイルがすでに存在する場合、 e.txtf.txt ファイルを再作成しないロジックが含まれている場合、 e.txtと の古いバージョンf.txtは、 CodeDeploy が実行され、その後のデプロイc.batd.batでは変更されません。c.bat および d.bat にロジックを追加して、新しいバージョンを作成する前に e.txt および f.txt の古いバージョンを常にチェックして削除することができます。

既存のコンテンツでのロールバック動作

デプロイプロセスの一環として、 CodeDeploy エージェントは最新のデプロイによってインストールされたすべてのファイルを各インスタンスから削除します。以前のデプロイに含まれていなかったファイルがターゲットデプロイの場所に表示された場合は、次のデプロイ時にそれらのファイルが CodeDeploy どうなるかを選択できます。

  • [Fail the deployment] — エラーが報告され、デプロイのステータスが「Failed (失敗)」に変更されます。

  • [コンテンツの上書き] — アプリケーションリビジョンのファイルのバージョンにより、インスタンスの既存のファイルのバージョンが置き換えられます。

  • [コンテンツの保持] — デプロイ先のファイルは保持され、アプリケーションリビジョンのバージョンはインスタンスにコピーされません。

この動作は、デプロイの作成時に選択できます。コンソールでデプロイを作成する場合は、「EC2/オンプレミスコンピューティングプラットフォームのデプロイ作成 (コンソール)」を参照してください。を使用してデプロイを作成する場合は、 AWS CLI「」を参照してくださいEC2/ オンプレミスコンピューティングプラットフォームのデプロイ作成 (CLI)

ファイルを保持して次回のデプロイの一部とすることを選択すると、そのファイルはアプリケーションリビジョンパッケージに追加する必要がなくなります。例えば、デプロイに必要なファイルでもアプリケーションリビジョンバンドルには追加しないで直接インスタンスにアップロードできます。または、アプリケーションがすでに本番環境にあるが、 CodeDeploy 初めて を使用してデプロイする場合は、インスタンスにファイルをアップロードできます。

ロールバックでは、デプロイの失敗が原因で前回の成功したデプロイのアプリケーションリビジョンが再デプロイされますが、その前回の成功したデプロイのコンテンツ処理オプションがロールバックデプロイに適用されます。

ただし、失敗したデプロイの設定がファイルを保持せずに上書きするようになっていた場合、ロールバックは予期しない結果になる可能性があります。特に、保持しようとしていたファイルが、失敗したデプロイによって削除される可能性があります。ロールバックデプロイを実行したときに、ファイルは、ロールバック時にインスタンス上ではなくデプロイが実行されます。

次の例では 3 つのデプロイがあります。失敗したデプロイ 2 で上書き (削除) されたファイルは、デプロイ 3 でアプリケーションリビジョン 1 が再度デプロイされたときには使用不能 (保持不能) です。

デプロイ

アプリケーションリビジョン

コンテンツ上書きオプション

デプロイのステータス

動作と結果

デプロイ 1

アプリケーションリビジョン 1

保持

成功

CodeDeploy は、以前のデプロイによってデプロイされなかったターゲットロケーション内のファイルを検出します。これらのファイルは、現在のデプロイの一部とするために意図的に置かれている場合があります。これらのファイルは今回のデプロイパッケージの一部として保持および記録されます。

デプロイ 2

アプリケーションリビジョン 2

上書き

[失敗]

デプロイプロセス中に、 は前回正常にデプロイされたファイルをすべて CodeDeploy 削除します。これには、デプロイ 1 で保持されたファイルも含まれます。

ただし、デプロイが失敗する原因は、これとは無関係です。

デプロイ 3

アプリケーションリビジョン 1

保持

デプロイまたはデプロイグループで自動ロールバックが有効になっているため、 CodeDeploy は最後に正常な既知のアプリケーションリビジョンであるアプリケーションリビジョン 1 をデプロイします。

ただし、デプロイ 1 で保持するファイルは、デプロイ 2 が失敗する前に削除され、 では取得できません AWS CodeDeploy。これらのファイルは、アプリケーションリビジョン 1 に必要であれば、自分でインスタンスに追加できます。または、新しいアプリケーションリビジョンを作成できます。