AWS SDK for PHP 2バージョンアップ後GuzzleのRuntimeExceptionが出るようになってしまった場合の対処法

AWS SDK

※当ブログではアフィリエイト広告を利用しています。

AWS Elastic Beanstalk環境で「AWS SDK for PHP 2」aws.pharを上書きでバージョンアップしたところ、特に設定変更をしていないのにGuzzleのRuntimeExceptionが出てSDKを使ったプログラムが動作しなくなってしまいました。

そのときの原因と解決方法をメモします。

発生したエラーの詳細

AWS SDK for PHP 2のバージョンアップのためaws.pharを最新バージョンのものに上書きしたところ、下記のようなエラーが発生するようになってしまいました。

Unexpected Guzzle\Common\Exception\RuntimeException: /tmp/guzzle-cacert.pem
MD5 mismatch: expected [ハッシュ値] but got [ハッシュ値その2]

EC2インスタンスの再起動を行っても解決しませんでした。

原因と解決方法

原因はaws.pharの中に含まれるHTTPクライアントライブラリGuzzleが書き出す証明書ファイル/tmp/guzzle-cacert.pemがバージョンアップ前の内容だったためMD5チェックサムエラーとなっていたことでした。

そのため下記コマンドで古い/tmp/guzzle-cacert.pemを削除しました。

sudo rm /tmp/guzzle-cacert.pem

削除後、Guzzleが新しい証明書ファイルを書き出すため、SDKを使ったプログラムがバージョンアップ前と同様に動作するようになりました。

おわりに

わかってしまえばすぐ解決する問題でしたが、解決までに結構ハマってしまいました。オープンソースライブラリを使用したSDKを使う場合は動作に気を付けたいと思いました。