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

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

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

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

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

自動ロールバック

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

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

注記

デプロイが自動的にロールバックされるときには、Amazon 簡易通知サービスを使用して通知を受け取ることができます。詳細については、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 サーバー、および RHEL インスタンスの場合)

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

存在する場合、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.batそしてd.batファイルには再作成しないロジックが含まれていますe.txtそしてf.txtファイルがすでに存在する場合は、古いバージョンのe.txtそしてf.txtCodeDeploy が実行されるたびにそのまま残るc.batそしてd.bat後続のデプロイで。c.bat および d.bat にロジックを追加して、新しいバージョンを作成する前に e.txt および f.txt の古いバージョンを常にチェックして削除することができます。

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

デプロイプロセスの一環として、CodeDeploy エージェントは、前回のデプロイでインストールされたすべてのファイルを各インスタンスから削除します。前回のデプロイに含まれていないファイルがデプロイ先に表示された場合は、次回のデプロイ時にこれらのファイルを CodeDeploy で処理する方法を選択できます。

  • デプロイが失敗します。— エラーが報告され、デプロイのステータスが「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 に必要であれば、自分でインスタンスに追加できます。または、新しいアプリケーションリビジョンを作成できます。