アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

Paperclip をアップデートした話

komatsu です。

いこーよでは Rails アップデートの前段階として gem のアップデートを行っています。
その中で Paperclip のアップデート時の不具合とその対処方法を発見するまでが大変だったので書きたいと思います。

周知のとおり paperclip の開発は終了してますが、kt-paperclip としてメンテナンスされており、今回切り替えることになりました。 これに伴い、aws-sdk gem も version 2 から Version 3 へアップデートする必要がありました。

下記の記事にもある通り、いこーよでは nginx の HttpImageFilterModule を使ってサムネイル画像を動的生成しています。 tech.actindi.net

ステージング環境で aws-sdk-3 gem をアップデートしたところ、 サムネイル表示されない不具合が発生しました。

結論からいうと Amazon S3 の path-style が廃止 されたため、 nginx.conf proxy_pass の http://s3-ap-northeast-1http://s3.ap-northeast-1 (s3直後のハイフンをピリオドに修正) に変更することで不具合が解消しました。
path-style のサポートは 2020/9/30 に終了していて aws-sdk Version 3 でもサポートされていないようです。
しかも、path-style 廃止を事前に知っていたわけではなく、たまたまS3のオブジェクトURL と proxy_pass を見比べる機会があり、ハイフンとピリオドの違いに気づいて修正してみたレベルなので原因にたどり着けたのは奇跡的です。
原因にたどり着くまでに kt-paperclip と aws-sdk の README や CHANGLOG、署名付きURLを発行しているコード、AWSドキュメント、kt-paperclipを使っているオープンソースを読み、 ステージング専用のバケットを作ってバケットポリシーをいじってみるなどかなり遠回りをしましたが答えは簡単だった、というよくあるパターンになりました。
こういった遠回りもエンジニアの成長には必要だと改めて感じた次第です。この情報がどなたかのお役に立てれば幸いです。

最後に

アクトインディではエンジニアを募集しています。

actindi.net