Cómo restaurar imágenes S3 faltantes de la publicación

Una de mis publicaciones ha perdido sus imágenes aleatoriamente. Ejecuté PostCustomField.where(name: Post::MISSING_UPLOADS) en la consola de Rails y obtuve esto:

[#<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>,

Dado que son solo 14 imágenes en una sola publicación, estoy de acuerdo en arreglarla manualmente, pero no tengo idea de cómo encontrar las imágenes originales en mi bucket de S3. He intentado buscar los nombres de archivo aquí, pero no obtuve ningún resultado:

No uso S3 per se, pero ¿no sería que la ausencia de tus imágenes es lo que las hace faltar?

En serio: ¿hay registros que puedas revisar para esos nombres de archivo? ¿Quizás algo extraño los eliminó programáticamente?

El problema es que la consola web de S3 solo parece buscar en la carpeta actual. Si entro en una carpeta específica y busco un archivo que está dentro, lo encuentra. Si subo a la carpeta principal, no lo encuentra.

Primero necesitas convertir las URLs de la forma upload:// en nombres de archivo reales.

Gracias, Michael. Eso sería útil, pero no logro averiguar cómo obtener la ruta completa. En la consola de Rails, puedo hacer esto, pero no me devuelve el nombre de archivo real:

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

Depende de muchos factores, pero dado que el archivo supuestamente falta, es posible que esté en el lugar incorrecto de todos modos. Ahora que conoces el nombre del archivo, no es mucho trabajo buscar en S3 y ver si encuentras un archivo coincidente.

También podrías intentar buscar un Upload en la base de datos donde el sha1 coincida con esta cadena y el registro de carga tenga una ruta. Pero, de nuevo: si todo estuviera bien, no estaríamos discutiendo este problema.