投稿から消失した S3 画像を復元する方法

投稿の一つの画像が突然消えてしまいました。Rails コンソールで PostCustomField.where(name: Post::MISSING_UPLOADS) を実行したところ、以下のような結果が返ってきました:

[#<PostCustomField:0x00005636227c20a0
  id: 7335,
  post_id: 36,
  name: "missing uploads",
  value:
   "[\"upload://ljcw6gjRoPMD0IB5Vcc6K23VXIA.png\",
     \"upload://v6caNgjm6wDrHzN8MQdXYnlNJEs.png\",
     \"upload://bn2lC9z0Xp4Fit00p6KepGMZZ2h.png\",
     \"upload://omhuL50n5VfAxY8Reyf2rQFoEWb.jpeg\",
     \"upload://yJCRzx9SogObwuj1En0QciZdntF.jpeg\",
     \"upload://wOeXgaPEBBia8oS0xxbOr5NKNWo.gif\",
     \"upload://fuXMNACp8WoEHEr3ayciiVJjmNl.png\",
     \"upload://MTIX7g8Wu11qaJasGg5yGsFvJA.jpeg\",
     \"upload://oKle1GsOlPD85zeHiKRdUGJCCEM.jpeg\",
     \"upload://zY43AR6Xpga92HNzdEnxQRIVpYE.gif\",
     \"upload://ufigIPfGEPbDInHP4co0I0YDT51.png\",
     \"upload://h7A1BJjNwZZwuUTYWXCeASk7UAh.png\",
     \"upload://gmFGijsek8NmtfqBwAguIgkzDFP.png\",
     \"upload://qPFQBe9zvnTmOnqMhpofQF3oqCh.png\"]",
  created_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00,
  updated_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00>

この投稿には画像が14枚しか含まれていないため、手動で修正しても構わないのですが、S3 バケットから元の画像を見つける方法がわかりません。ここでファイル名を検索してみましたが、結果は得られませんでした:

私は S3 を直接使っているわけではありませんが、画像が存在しないことが原因で欠落しているのではないでしょうか?

本当に:そのファイル名に関連するログを確認することはできますか?何か不審なプログラムによって削除された可能性はありませんか?

問題は、S3 の Web コンソールが現在のフォルダ内だけを検索しているように見えることです。特定のフォルダに移動してその中にあるファイルを検索すると見つかりますが、親フォルダに移動すると見つかりません。

まず、upload:// の URL を実際のファイル名に変換する必要があります。

ありがとう、マイケル。それは役立ちそうですが、フルパスを取得する方法がわかりません。Rails コンソールではこれを試せますが、実際のファイル名は返ってきません:

Base62.decode("ljcw6gjRoPMD0IB5Vcc6K23VXIA").to_s(16)
=> "955952cf3952d2fad7c24528c08cfb79301a6260"

それは多くの要因に依存しますが、ファイルが欠落しているとの報告がある以上、そもそも場所が異なる可能性があります。ファイル名が分かっている以上、S3 を参照して一致するファイルがあるか確認するのはそれほど手間ではありません。

また、データベースで sha1 がこの文字列と一致する Upload レコードを探し、そのレコードにパスが含まれているか確認することもできます。ただし、すべてが正常であれば、この問題について議論する必要はなかったはずです。