저는 여기에 있는 단계를 따르고, 사이트 전체를 백업한 뒤, AWS S3 버킷을 복제(clone)하고, Discourse 설정에서 버킷 이름을 원래 버킷에서 백업 버킷으로 변경한 다음, 설정에서 “S3에 업로드” 체크박스를 해제했습니다.
이제 마침내 S3에서 마이그레이션을 시작할 준비가 됐는데… 실패합니다. ![]()
오류 메시지
root@ubuntu:/var/www/discourse# rake uploads:migrate_from_s3
Migrating uploads from S3 to local storage for 'default'...
rake aborted!
NoMethodError: undefined method `downcase' for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in `s3_bucket_name'
/var/www/discourse/app/models/site_setting.rb:157:in `absolute_base_url'
/var/www/discourse/lib/tasks/uploads.rake:138:in `migrate_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:118:in `block in migrate_all_from_s3'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.2.2/lib/rails_multisite/connection_management.rb:68:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rails_multisite-2.2.2/lib/rails_multisite/connection_management.rb:78:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:118:in `migrate_all_from_s3'
/var/www/discourse/lib/tasks/uploads.rake:93:in `block in <top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_from_s3
(See full trace by running task with --trace)
(여기가 github에서 실패하는 라인입니다 – s3_bucket 값을 가져올 수 없는 것 같습니다?)
제가 시도해 본 다른 것들
-
명령줄에 자격 증명(credential)을 추가해 보았지만, 차이가 없었습니다. 예를 들어
DISCOURSE_S3_BUCKET="dn-forum-storage-backup" DISCOURSE_S3_REGION="us-east-1" DISCOURSE_S3_ACCESS_KEY_ID="xxxxxxxxxxxxxxxxxxxx" DISCOURSE_S3_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxx" DISCOURSE_S3_CDN_URL="https://dn-forum-storage-backup.s3.us-east-1.amazonaws.com" rake uploads:migrate_from_s3 -
또한 설정에서 S3 버킷 이름을 원래 버킷 이름으로 다시 변경해 보았지만, 여전히 운이 없었습니다. 같은 결과가 나왔습니다.
-
앱을 다시 빌드(rebuild)해 보기도 했습니다. 같은 결과였습니다.
@vinothkannans 무슨 일이 일어나고 있는지 아시나요?
도와주세요, Discourse的朋友们!
p.s. 작은 부연 설명: rake --tasks 명령은 이 태스크나 uploads로 시작하는 어떤 태스크도 목록에 표시하지 않습니다. 이것이 무언가를 의미하는지 모르겠습니다.

