※当ブログではアフィリエイト広告を利用しています。
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を使う場合は動作に気を付けたいと思いました。