הורדות מ-S3 גם כאשר מוגדר DISCOURSE_S3_CDN_URL

I followed the guide at Using Object Storage for Uploads (S3 & Clones) to set up Backblaze B2 for upload storage and I’m seeing a strange problem.

If I create a thread and upload an image the img src is set to my S3_CDN_URL. If I upload a zip file the URL is at /uploads and redirect directly to my bucket instead of using the S3_CDN_URL. I do not have DISCOURSE_CDN_URL set - the guide indicate it doesn’t affect this issue.

Me relevant settings are:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: "us-west-000"
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  DISCOURSE_S3_CONFIGURE_TOMBSTONE_POLICY: false
  DISCOURSE_S3_ENDPOINT: "https://s3.us-west-000.backblazeb2.com"
  DISCOURSE_S3_ACCESS_KEY_ID: "ID"
  DISCOURSE_S3_SECRET_ACCESS_KEY: "KEY"
  DISCOURSE_S3_CDN_URL: "https://devforum-b2-cdn.freetls.fastly.net"
  DISCOURSE_S3_BUCKET: "bucket-name"
  DISCOURSE_S3_BACKUP_BUCKET: "backup-bucket/devforum"
  DISCOURSE_BACKUP_LOCATION: s3

Why would zip files be handled differently than images?

לייק 1

העניין של האחסון הזה והקונפיגורציה שלו אכן מהווה אתגר משמעותי לאורך השנים.

אני אחסנתי את התמונות שלי ב-Aws S3. ואז שיניתי את האחסון חזרה לשרת מקומי. כעת חסרו פתאום מאות תמונות.

למרות שזה לא תגובה ישירה או הערה על השאלה שלך, אני פשוט מראה אמפתיה כלפי בעיות דומות.

ראה הגדרת האתר: שימוש ב- CDN ב- S3 לכל ההעלאות

השתמש ב- CDN ל- כל הקבצים שמעלים ל- s3 במקום רק לתמונות.

לייק 1

Thank you.
I’ve assigned the job to some local friend of mine. He is looking into it.
Though on your asking I selected this option just now. Use CDN URL for all the files uploaded to s3 instead of only for images.

But there seems to be some other problem. He has shifted s3 storage to local server. Now many of my old posts, which if had 10 photos, around half are displaying and other half not. (example of one such topic)

He would work on resolving this, coming weekend.



Earlier, before asking him, I naively selected the option to have all images included in my backups, then restored that backup thinking that it’d restore the images to local server, thinking that this would be enough to move all my images from s3 to local.
But this is not so simple (as I’m finding on many related topics on meta).

[ציטוט=“Bathinda, פוסט:4, נושא:177000”]
תודה.
היי את העבודה לחבר שלי מקומי. הוא בודק את זה.
[/ציטוט]

מצטער. התייחסתי לבעיה אחרת.

אני בטוח שיש לך, כנראה, בעיה יותר מורכבת.

[ציטוט=“Bathinda, פוסט:4, נושא:177000”]
הוא העביר את אחסון s3 לשרת מקומי.
[/ציטוט]

זה בהחלט מסובך.

אני חושב שהתמונות החסרות באותו פוסט נגרמות מכך שרשומת ההעלאה לא קיימת, אז תצטרך לבצע משהו כדי להחזיר את התמונה הזאת. ייתכן שאני טועה.

אם אני צודק, כך פיתרתי את הבעיה הדומה שפגשתי בה לפני כן. אני לא מציע תמיכה חינמית מעבר לסקריפט הזה.

def process_uploads
  begin
    # קריאת רשימת שמות הקבצים
    filenames = File.readlines('/shared/uploads/allfiles.txt').map(&:strip)
    count = 0

    filenames.each do |filename|
      # הוסף את /shared לפני שם הקובץ
      filename.gsub!(/\.\//,"")
      full_path = File.join('/shared/uploads/default/original/', filename)

      begin
        # בדוק אם הנתיב קיים ומדובר בקובץ רגיל (לא תיקייה)
        count += 1
        
        if File.exist?(full_path) && File.file?(full_path)
          # פתח את הקובץ
          File.open(full_path, 'r') do |tempfile|
            # צור העלאה עם הפרמטרים המוגדרים
            u = UploadCreator.new(tempfile, 'imported', {}).create_for(-1)
            puts "#{count} -- #{u.id}: #{u.url}"
          end
        else
          puts "אזהרה: הנתיב לא נמצא או אינו קובץ רגיל: #{full_path}"
        end
      rescue => e
        puts "שגיאה בעיבוד הקובץ #{full_path}: #{e.message}"
        # המשך לקובץ הבא גם אם הקובץ הנוכחי נכשל
        next
      end
    end
  rescue Errno::ENOENT
    puts "שגיאה: לא ניתן למצוא את files.txt"
  rescue => e
    puts "שגיאה בקריאת files.txt: #{e.message}"
  end
end

# ביצוע העיבוד
process_uploads;
לייק 1