diff --git a/api/funkwhale_api/music/migrations/0043_album_cover_attachment.py b/api/funkwhale_api/music/migrations/0043_album_cover_attachment.py
index 17eda6b72db160f51cfed1885d5ac6f93edc0f7e..441d308d9582311f00d0ba3a8edef9c12abac5be 100644
--- a/api/funkwhale_api/music/migrations/0043_album_cover_attachment.py
+++ b/api/funkwhale_api/music/migrations/0043_album_cover_attachment.py
@@ -13,17 +13,24 @@ def create_attachments(apps, schema_editor):
         if path.lower().endswith('.png'):
             return "image/png"
         return "image/jpeg"
-
-    for album in Album.objects.filter(attachment_cover=None).exclude(cover="").exclude(cover=None):
-        try:
-            album_attachment_mapping[album] = Attachment(
-                file=album.cover,
-                size=album.cover.size,
-                mimetype=get_mimetype(album.cover.path),
-            )
-        except FileNotFoundError:
-            print('Skipping missing cover file {}'.format(album.cover.path))
-
+    qs = Album.objects.filter(attachment_cover=None).exclude(cover="").exclude(cover=None)
+    total = qs.count()
+    print('Creating attachments for {} album covers, this may take a while…'.format(total))
+    from django.core.files.storage import FileSystemStorage
+    for i, album in enumerate(qs):
+        if isinstance(album.cover.storage._wrapped, FileSystemStorage):
+            try:
+                size = album.cover.size
+            except FileNotFoundError:
+                # can occur when file isn't found on disk or S3
+                print("  Warning: cover file wasn't found in storage: {}".format(e.__class__))
+                size = None
+        album_attachment_mapping[album] = Attachment(
+            file=album.cover,
+            size=None,
+            mimetype=get_mimetype(album.cover.name),
+        )
+    print('Commiting changes…')
     Attachment.objects.bulk_create(album_attachment_mapping.values(), batch_size=2000)
     # map each attachment to the corresponding album
     # and bulk save