ACMの自動更新が行われたタイミングで画像や外部ファイルが読み込めなくなった

はじめに

はじめに言っておきます。
この記事を読んでも事象の根本的解決は出来ません。(根本解決は出来なかったです。)
ただのメモです。

環境

  • Ruby 2.4.0
  • Rails 5系
AWS
  • Elasticbeanstalk
  • S3
  • CloudFront
  • ACM

関連がありそうなのはこの辺

起きた問題

Railsで構築されたアプリケーションがある日突然、画像やCSSが読み込めなくなっていた。
Webブラウザのコンソールを見てみると、以下のようなエラーが頻発していた。

ERR_CERT_DATE_INVALID

コミットを見ても怪しいものはないから、ソースに問題があるとは考えずらい。
心当たりがあるとすれば、最近ACMで発行されていたSSLの証明書が更新された旨のメールが来ていた。

調査したこと

同様に構築されているサイトの設定などと見比べつつ調査を行なった。
時系列に書くので、煩わしいことがあるかと思いますが、適宜読み解いてください。

静的ファイルの問題

Railsのproduction.rbを編集

image_pathとかで画像を表示させている部分などにもS3経由のパスがあたってしまっているので、production.rbを確認することにした。

production.rb内に

# Enable serving of images, stylesheets, and JavaScripts from an asset server.
config.action_controller.asset_host = 'hogehoge'

という記述があったので、上記を以下のようにして、disableに変更

# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.action_controller.asset_host = 'hogehoge'

これでひとまず、静的に読み込ませている部分のpathは、/assets/からよんでくれるようになった。

動的ファイルの問題

S3

まじはS3内の画像があるかどうかを確認した。
画像は格納されていた。

Amazon Certificate Manager

SSLの更新が弾かれてる...?
確認すると、問題なく発行されていることが確認できた。

Cloudfront

画像の配信をhttpsで行なっているので、Cloudfrontの設定を確認してみることにした。
すると。「SSL Certificate」の項目が「arn...」と表示されていた。

正しく動作しているサイトは、ACMで登録している「ドメイン名」が表示されていた。
明らかに怪しい....

またS3

確認し忘れていたけど、S3に格納されている画像のURLを見てみた。
画像などが、表示されていないサイトの画像のパスをみると、「https://s3のバケット名...」 となっていたけど、S3の管理画面で確認できた画像のパスは、「https://s3-リージョン.amazonaws.com/バケット名...」 のようになっていた。

またproduction.rbを確認する

あまり詳しくは書けないけど、画像をS3経由でやりとりさせるための設定が書かれていた。

以下例:

# 変更前の記述
s3_host_alias: 'https://s3のバケット名...'

# 変更後の記述
s3_host_alias: 'https://s3-リージョン名.amazonaws.com/s3バケット名...'

以上でなんとか復旧することが出来たけど、根本原因はわかっていないし、今まで動いてた設定を変更しなければいけなくなったのも最悪の手段だった...

同様の問題に遭遇した方はコメントいただけますと幸いです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.