LoginSignup
2
4

More than 5 years have passed since last update.

AWSのCodeDeployを使ったデプロイが突然タイムアウトするようになったら確認すること

Last updated at Posted at 2016-11-01

はじめに

AWSのCodeDeployを使うと、EC2インスタンスへのソースのデプロイが楽に実行できます。
参考:http://qiita.com/yukofeb/items/e077fc8755416c904032

そんなCodeDeployを悠々使っていたある日、突然デプロイがタイムアウトするようになった!なんてことありますよね(私は1ヶ月間に2回ありました)。
そんな場合は、ここに記載してある点を確認することで、またデプロイできるようになるかもしれません。
結論を先に言ってしまうと、デプロイ先のEC2インスタンスでCodeDeploy用のエージェントが停止してしまった場合にこのようなことが起こります。

環境

クライアント:何でも可
デプロイ先EC2インスタンス:Amazon Linux

具体的にはどのような症状が起こる?

AWS CLIでデプロイ用のコマンドを叩いている場合は、「コマンドが正常終了したのにインスタンス上のソースが更新されない」という動きが起こります。

デプロイ失敗時(タイムアウト時)のイベントの確認

一般的なデプロイ失敗(appspec.ymlの記載がおかしい等)の場合は、AWS管理コンソールのCodeDeploy管理画面でイベントを確認することで、何が起きているかが分かります。
ですが、上記の症状の場合、イベントの内容を見ようとしても見ることができません
デプロイ失敗のイベント情報が見られるかどうかは、以下の手順で確認することができます。
一般的なデプロイ失敗の場合、イベントの内容に応じて適宜対処しましょう。

  1. AWS管理コンソールのCodeDeploy管理画面を開く。
  2. 画面上部のプルダウンメニューから、「デプロイ」をクリックする。 [80percent]1.png
  3. タイムアウトしたデプロイの「デプロイID」部分をクリックする。 [80percent]2.png
  4. 画面下部に表示される表の、「イベント」列を確認する。→何も表示されていない! [80percent]3.png

一般的なデプロイ失敗の場合は、下の図のように、「イベント」列に「イベントの表示」リンクが表示されます。
[80percent]4_small.png

デプロイ先インスタンスのCodeDeploy用エージェントの起動状況確認

以下の手順で確認できます。

  1. デプロイ先のインスタンスにSSHでログインする。
  2. CodeDeploy用エージェントの起動状況を確認する(コマンド:「ps aux | grep codedeploy-agent」)。

上記のコマンドを実行しても何も画面に出力されない場合、CodeDeploy用のサービスが停止しています。
以降の手順に沿ってサービスを再起動することで、再びデプロイすることができるようになります。

CodeDeploy用エージェントの再起動

  1. インスタンス上に残っているPIDファイルをリネームする(削除する場合は自己責任でお願いします)。
     対象ファイル:
      /opt/codedeploy-agent/state/.pid/codedeploy-agent.pid
      /opt/codedeploy-agent/state/.pid/codedeploy-agent.pid.lock

  2. CodeDeploy用エージェントを再起動する(コマンド:「sudo /etc/init.d/codedeploy-agent start」)。

以上の手順を実行後に再度デプロイし、ソースが無事配置されることを確認しましょう。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4