I want to stop using Amazon s3 for uploads.
I’ve not done a rake task like this so want to check things before I run on the live environment.
My plan is to use a clone of my live server to test the rake task uploads:migrate_from_s3.
Will this move the files from s3?
Or copy them to the local storage and leave the s3 files there until I manually delete them?
If it deletes them from s3 that will break the live forum and that would be bad!
thanks
처음에는 S3에서 마이그레이션을 중단하는 문제를 해결하려고 시도했습니다. 그러나 제가 작성 중인 코드의 테스트 베드(테스트 환경)로 제 자체 마이그레이션을 사용한 후, 제가 완전히 잘못된 접근 방식을 취했다는 말을 들었습니다. 이 주장은 S3에서 로컬 파일로 마이그레이션한 제(대용량) 인스턴스에서 데이터 손상으로 인해 뒷받침되었습니다. 비교적 최근에는 데이터베이스의 손상된 데이터를 수동으로 수정했고, 제 시도로 인한 후속 정리가 아직 끝나지 않았을 것으로 예상됩니다.
만약 오늘 S3에서 자체 스토리지로의 마이그레이션을 시작한다면, discourse 옆에 minio 컨테이너를 실행하고, minio-client를 사용하여 S3에서 minio 컨테이너로 데이터를 복사한 다음, discourse를 로컬 minio의 새로운 “S3” 위치로 재구성하고, posts:remap을 실행하거나 모든 포스트를 다시 베이킹하여 "S3"를 제 minio 컨테이너에서 제공하도록 설정할 것입니다.
여기 posts:remap이 여기서 어떻게 작동해야 하는지 예시를 보여 드리겠습니다. 어딘가에 더 나은 예시가 있다는 느낌이 들지만, 시작하기에는 이 정도면 충분할 것입니다.
설명에 따라 진행해서 업로드 파일을 복사하긴 했는데, S3 업로드를 꺼두어도 인스턴스 곳곳에 여전히 S3 서버를 가리키는 링크가 남아 있습니다. discourse remap을 시도해 봤지만 효과가 없었고, rake posts:remap도, posts:rebake도 효과가 없었습니다.
URL이 모두 상대 경로로 되돌아왔습니다. 아쉽게도 이 글을 나중에 읽을 사람들에게 어떤 rake 태스크와 앱 재빌드 조합이 성공의 열쇠였는지 정확히 확신하지 못합니다. Discourse에 대해 저보다 더 잘 아는 분이 이 문제를 해결하는 방법을 실수 없이 수행할 수 있도록 튼튼한 튜토리얼을 만들어 주셨으면 좋겠습니다.
Pravi가 위에서 설명한 대로 awscli를 사용하면 S3에서 파일을 복사하는 데 효과적이었습니다.
S3 버킷은 삭제하지 않았지만, 이전에 버킷을 전환한 적이 있습니다(그때는 그로 인한 복잡성을 인지하지 못했습니다). 그래서 제 모든 자산이 S3 버킷 두 곳에 흩어져 있었지만, 이제 로컬 서버(/var/discourse/shared/web_only/uploads/default)에도 수동으로 복사해 두었습니다.
이 혼란을 정리하려면 어떻게 진행해야 하나요?
참고: 컨테이너 기본 명령어, 레일즈 콘솔(Rails console) 및 AWS S3에 익숙합니다.