2022年7月12日火曜日

BeanstalkをAmazon linux2にあげるにあたって苦労した所

2022/6末に、Amazon linuxが廃止されて、Amazon linux2になるということで対応を進めていましたが、期限を過ぎてもうまくいかなかったのがようやく対応できたので、メモ。

Beanstalkで環境を作ると、100 % of CPU is in use. になり続ける。

デプロイが完了しても、この状態が続きました。ログを見ると、Pumaログに、こういったエラーが出続けていました。

[8108] ! Unable to start worker
[8108] /var/app/current/vendor/bundle/ruby/2.7.0/gems/actionmailer-6.1.6/lib/action_mailer/base.rb:589:in `method_missing'
[8108] Early termination of worker


ただ、actionmailerのバージョンや、その周りのrails関連のバージョンは問題がなさそうでした。これ以外のエラーがログに無いという状態で、Rubyを3.0の環境に変えてみたり、設定を順に削除してなるべくシステムをシンプルにしてみても解決せず。

サーバでRakeコマンドを使えるようにした。

スムーズにAL2への以降ができた別プロジェクトで、cronが動いていないことがわかり、調べていると、rakeコマンドがAL2環境で使えないことがわかりました。ネットでは、

./opt/elasticbeanstalk/support/envvars

を読み込むと簡単みたいな記事が散見されましたが、サーバ内にenvbars無い。
そこで見つけたのがこちら
https://aws.amazon.com/jp/premiumsupport/knowledge-center/elastic-beanstalk-env-variables-shell/

.ebextentions/01_set_vars.confに以下を追加してデプロイ。
commands: setvars: command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local packages: yum: jq: []
これでrakeコマンドを始めとして色々なコマンドが使えるようになりました。
サーバにログインし、
#cd /var/app/current
#bundle exec pumactl start
PUMAを動かしてみると、rails6に変えたことで出てきたエラーが表示されました。これらのエラーはローカルではでなかったものでした。
ということで、エラーを取り除いて再度デプロイ。
解決!