Help us understand the problem. What is going on with this article?

appspec.ymlとbuildspec.ymlにfileを追記しなかったために,沼にハマった話

More than 1 year has passed since last update.

環境

  • AWS CodeStar
  • AWS CodeDeploy
  • AWS CodeBuild
  • Django: 2.1.4

はじめに

  • どうやらここ数日に,テンプレートアプリが変わった
  • CodeStar製アプリで発生しました
  • ある条件をクリアすると,エラー沼にハマった話
  • あくまで備忘録程度です

The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.

スクリーンショット 2019-06-07 23.41.09.png

このエラーは,CodeDeploy上で発生します.意味は分かるんですけど,原因はわからない....
そこで,素直にDeployにおけるどのイベント中に発生したか確認します.

スクリーンショット 2019-06-07 23.41.18.png

ApplicationStop中にエラーが発生したことが確認できました.これは,前回デプロイしたアプリを正常に終了できなかったことを表しています(間違っているかもしれません...)
つまり,エラーが起きた原因は,直前のデプロイ内容にあります.

スクリーンショット 2019-06-07 23.41.49.png

エラー原因:appspec.ymlとbuildspec.ymlにfileを追記しなかった

Djangoでは,新規アプリを作成する際に下記のコマンドを打ちます.

python manage.py startapp myapp

その後,'settings.py'に追記します.

settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp', 追記箇所
]

ここから忘れていたがために,沼にハマったポイントです.
appspec.ymlに下記を追記

appspec.yml
files:
- source: /myapp/ 追記箇所
    destination: /home/ec2-user/myapp 追記箇所

buildspec.ymlに下記を追記

buildspec.yml
files:
 - "myapp/**/*" 追記箇所

エラーを強行突破する

これでファイルの修正は完了です.しかし,このままデプロイしてもエラーが出続けます....
そこで,CodeDeploy上から強行突破します.

まず,アプリケーションからアプリ名を選択して,アプリケーションをデプロイするを選択します.

スクリーンショット 2019-06-07 23.56.01.png

次にリビジョンタイプを選択します.ちなみに,CodeDeployとGitHubの接続は,自分のユーザーネームをGitHubトークン名の欄に入力すると.GitHubのページヘ遷移してうまくできます.
あとは,リポジトリ名やコミットIDを入力します.

スクリーンショット 2019-06-07 23.56.58.png

最後に,追加のデプロイ動作設定を行います
ApplicationStopなどライフサイクル中のエラーを無視するなら,最初の欄にチェックを入れます.また,同一ファイルの存在によるエラーであれば,コンテンツの上書きにチェックを入れます.

スクリーンショット 2019-06-08 0.13.40.png

以上で,強行突破できるはずです.

感想

codedeploy上以外にも,aws cliコマンドからも強行突破ができます.本当は,こんなエラーが出ないようにコーディングしましょうという話ですよね(精進します).
たどり着くまでにまる1日を要しました.エラーが発生した後にSSHでログを見たり....まぁ,そもそもREADMEを見ると,ymlに追記してね!と書いてあったんですけどね....
インフラ周りお勉強するぞー!

ARATAYOKOYAMA
言語はSwift,Python,Goが好きです 趣味は,アイドル,特撮です
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away