LoginSignup
4
3

More than 3 years have passed since last update.

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

Posted at

環境

  • 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に追記してね!と書いてあったんですけどね....
インフラ周りお勉強するぞー!

4
3
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
4
3