91s

プログラミング関係、日記などを書きます

CodeDeployのエラー ~ The overall deployment failed ... 略 ~

codedeployが失敗していて、デプロイ詳細画面の上部に

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.

 
これが出ていて、翻訳しても、

展開に失敗した個々のインスタンスが多すぎるか、展開に使用できる正常なインスタンスが少なすぎるか、展開グループ内の一部のインスタンスで問題が発生しているため、展開全体が失敗しました。

という控えめに言って意味不明な状態でした。

ステータスを見ようとしても全部スキップになっていて見れない為、ec2にssh接続して、

less /var/log/aws/codedeploy-agent/codedeploy-agent.log

で codedeployのログを確認すると以下のような記述を発見
 

booting child: error during start or run: NoMethodError - undefined method `underscore' for Seahorse::Util:Module - /opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_executor.rb:51:in `command'

 

そのまま読むとunderscoreメソッドがないってことなのですが、色々調べた結果、codedeployではaws-sdk-coreのバージョン3系に対応してないそうです。
(該当のunderscoreメソッドは3系で削除されたっぽい??)


aws-sdk-s3がaws-sdk-coreのV3を必要としていたので、アプリ側の問題かと思ってGemfileからaws-sdk-s3を削除したところ、デプロイが通らないがエラーが以下のように変わりました。

 

booting child: error during start or run: Gem::ConflictError - Unable to activate codedeploy-commands-1.0.0, because aws-sdk-core-3.85.1 conflicts with aws-sdk-core (~> 2.9) - /usr/local/rbenv/versions/2.5.3/lib/ruby/site_ruby/2.5.0/rubygems/specification.rb:2302:in `raise_if_conflicts'

 

codedeploy実行時に使用しているruby環境(アプリケーションで使用しているruby環境とは異なる??)でaws-sdk-coreが2系と3系の2つインストールされていてconflictしていることが判明。

なぜここにaws-sdk-core-3.85.1が入ってしまっているかは不明だが、今回は使わないので削除.. しようとしたらpermission deniedでuninstallできませんでした。

仕方がないので、

sudo su - 
gem uninstall aws-sdk-core -v "3.85.1"

でrootユーザーになってuninstallしたらデプロイが進みました。

EC2の初期設定で詰まったことメモ

はじめに

Railsの設定の記事を参考にしましたが、色々詰まったので次に同じことをするときの為にメモ

 

取り急ぎ問題と解決策のみ羅列したので、あとで読みやすくします。現時点で読みにくいのはご了承ください

 

前提

AMI : Amazon Linux 2 AMI 2.0.20191116.0 x86_64 HVM gp2

 

問題と解決策


1. インスタンスssh接続できない

 

問題

https://qiita.com/naoki_mochizuki/items/22cfbf4bf7ec95f6ac1c

 

を参考にしつつ、VPC等をデフォルトで進めていると、sshで接続できない問題発生(timeout)

 

解決策

セキュリティグループのインバウンドのルールでSSHを許可しているかを確認

許可していなかったら許可する

 


2. EC2にmysqlがインストールできない 

 

問題

https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e

 

の途中で、mysqlがインストールできない問題発生

 

解決策 

https://qiita.com/2no553/items/952dbb8df9a228195189#mysql%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

 

これ見て解決

 


3. EC2にepel関連のパッケージがインストールできない

問題 

epel関連のパッケージがインストールできない問題も発生

 

解決策

https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-enable-epel/

 

これ見て解決。この後 yum install nodejs --enablerepo=epel を忘れずに(忘れたらCould not find a JavaScript runtime.が出る)

 

これとmysqlの問題解決は諸々インストールの前にやっておいた方がいいかもしれないです。

 

 


4. mysqlに空パスワードを設定できない 

問題

staging環境なので、mysqlrootパスワードを空にしたいがmysql_secure_installationでは空パスワードは設定できない

 

解決策

https://qiita.com/ksugawara61/items/d8d69b7d57a3afcef980

 

これ見て解決

 


 5. 環境構築後、ブラウザからEC2のipを叩いてもtime outする

 

問題

IPを叩いてもtime outする問題発生

 

解決策 

セキュリティグループのインバウンドのルールでHTTPを許可しているかを確認