AWS

Let’s Encryptでsubprocess.CalledProcessError

Amazon Linux で yum を実行するたびにドキドキするのが Let’s Encrypt の状態。
(特に python のパッケージでアップデートがあると恐怖)

これまでも、Python の Virtual Env 環境がいつの間にか壊れていることが何度かありました・・・。

今回も、certbot-auto renew の実行でエラーになっていたのですが、前回の問題とは別のようです。

Let's Encryptでvirtualenv: error: unrecognized arguments: --no-site-packagesPython2 系から Python3 系への移行が促されていますが、AmazonLinux を使っていると標準では 2.7 が使われま...

再度、エラーの解決に挑戦してみましょう。

早く Python2.7 から脱却したいところです・・・。
(AmazonLinux2 を使っても、現状、このあたりは同じなのかな・・・)

DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won’t be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support

Python 2.7は2020年1月1日にサポートが終了しました。Python2.7はメンテナンスされなくなったため、Pythonをアップグレードしてください。 pip 21.0は、2021年1月にPython 2.7のサポートを終了します。pipでのPython 2サポートの詳細については、https://pip.pypa.io/en/latest/development/release-process/#python-2-supportをご覧ください。 pip 21.0では、この機能のサポートが削除されます。

エラーの内容

今回も、SSL のサーバ証明書が更新されずに残り 1 ヶ月を切っていたので、Let’s Encrypt から警告のメールが届いていました。

cron で週に 1 回、更新チェックするようにしているのですけどね・・・。

案の定、手動で certbot-auto を実行してみるとエラーが出力されます。

これだけでは、何が原因なのかわからないですよね。

virtualenvのバージョン確認

このパターンで考えられるのは、virtualenv のバージョン不一致。

上記のエラーでは「virtualenv==15.1.0」のパッケージを期待しているようですが、前回、20.0.30 から 16.7.9 にダウングレードして対応した経緯があります。

yum でインストールしている python27-virtualenv は 15.1.0 なので、やはりこのバージョンに合わせておいた方が良かったでしょうか。

virtualenvのバージョン調整

その前に pip のバージョンも最新にしておきましょう。

ちなみに、virtualenv も最新の 20.0.31 を試したのですが解決しなかったので、やはり 15.1.0 で python27-virtualenv のバージョンと合わせておくしかないですね。

これで無事に certbot-auto renew が実行できるようになりました。