# Migrate\_to\_s3 실패

**URL:** https://meta.discourse.org/t/migrate-to-s3-fails/209499
**Category:** Self-hosting
**Tags:** s3
**Created:** [11월 18, 2021, 6:54오전 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499 "2021-11-18T06:54:02Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [11월 18, 2021, 6:54오전 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/1 "2021-11-18T06:54:03Z")

</div>

상당히 트래픽이 많은 사이트에서 업로드를 S3로 이동하려고 하고 있습니다.  
`rake uploads:migrate_to_s3`를 실행할 때를 제외하고는 모든 것이 계획대로 진행되는데, 다음과 같은 오류가 표시됩니다:

```plaintext
Updating the URLs in the database...
Removing old optimized images...
Flagging all posts containing lightboxes for rebake...
2023 posts were flagged for a rebake
rake aborted!
FileStore::ToS3MigrationError: 1 of 9629 uploads are not migrated to S3. S3 migration failed for db 'default'.
/var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:79:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:373:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:66:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:123:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:102:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.0/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:100:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:96:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(See full trace by running task with --trace)

```

특히 이 줄이 제 주의를 끌었습니다. `FileStore::ToS3MigrationError: 1 of 9629 uploads are not migrated to S3. S3 migration failed for db 'default'.`

이것은 문제 있는 파일 하나가 전체 rake 태스크 실패를 유발하고 있다는 뜻일까요? 문제를 일으키는 파일이 무엇인지 파악하는 방법, 그리고 나머지 태스크가 순조롭게 완료되도록 해당 파일만 제거하는 방법이 있을까요?

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [11월 18, 2021, 12:25오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/3 "2021-11-18T12:25:57Z")

</div>

일부 업데이트:  
사이트가 정상적으로 로딩되는 것으로 보이며, 제가 확인한 바로는 업로드된 이미지가 CDN에서 서빙되고 있습니다.  
모든 업로드된 파일의 로컬 복사본은 여전히 서버에 남아 있습니다. 이는 마이그레이션이 실패로 표시되었기 때문인 것으로 추정됩니다.  
도움이 될 수 있다면 rake uploads:s3\_migration\_status 출력을 공유합니다.

```plaintext
# rake uploads:s3_migration_status
1 of 9630 uploads are not migrated to S3. S3 migration failed for db 'default'.
19 posts are not remapped to new S3 upload URL. S3 migration failed for db 'default'.
No posts require rebaking
Site is not ready for migration

```

---

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [11월 18, 2021, 12:50오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/4 "2021-11-18T12:50:45Z")

</div>

Admin \> Logs \> Error Logs에서 어떤 파일이 실패했는지에 대한 참조를 찾을 수 있습니다.

그것이 도움이 되지 않는다면, 마이그레이션 상태에 언급된 19개의 게시글 목록을 얻으려면 `yourdomain/uploads/`를 포함하는 `cooked` 속성이 있는 게시글을 데이터베이스에서 검색하는 것이 좋습니다. 최악의 경우, 해당 게시글을 수동으로 확인하여 업로드된 파일과 S3에 있는 파일을 비교할 수 있습니다.

예를 들어:

```plaintext
rails c
Post.where("cooked like '%discourse.example.com/uploads/%'")

```

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [11월 18, 2021, 1:41오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/5 "2021-11-18T13:41:33Z")

</div>

안녕하세요 @Simon_Manning

제안해 주신 방법들을 시도해 보았지만, 불행히도 에러 로그에서 관련 정보를 찾지 못했습니다. `Failed to optimize image: unknown reason`라는 항목은 확인되지만, 그 자체보다 더 많은 정보를 제공하지는 않습니다.

또한 제안해 주신 쿼리도 실행해 보았는데, 여러 게시글이 결과로 나오긴 했지만 실제로 해당 게시글들을 방문해 보면 원박스(Onebox) 미리보기에서 생성된 썸네일들이 다수 포함되어 있었습니다. 해당 썸네일에서 새 탭으로 이미지를 열려고 하면, 이미지들이 CDN에서 로드되는 것으로 보입니다.

---

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [11월 18, 2021, 2:15오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/6 "2021-11-18T14:15:45Z")

</div>

19개 게시물 중 18개, 혹은 실패한 업로드가 여러 업로드가 포함된 게시물에 있는 경우 19개 모두에서 그런 것을 볼 것이라고 예상할 것입니다.

더 쉬운 방법은 쿼리 결과에서 모든 파일명(예: `f8a2d9381889b8693db2777acac566bd7b134fa5.png`)을 추출한 후 S3에서 검색하는 것입니다. 이론적으로는 정확히 하나만 누락되어 있어야 합니다. 파생본은 무시하고, 경로에 `/originals/`가 포함된 것만 찾으면 됩니다.

조금 번거롭지만, 해당 쿼리가 그 19개 게시물만 선택했다면 오래 걸리지는 않을 것입니다.

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [11월 18, 2021, 4:47오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/7 "2021-11-18T16:47:13Z")

</div>

결국 원인을 찾았어요. 이제 어떻게 진행해야 할까요?

제 생각에는 논리적인 것 같지만, 최선의 해결책은 아닐 수도 있어요.  
제가 파악한 옵션은 다음과 같습니다:

1. 문제 있는 게시글에서 해당 파일의 참조를 제거
2. 서버에서 파일을 삭제
3. 파일 링크를 일반적인 내용으로 재매핑

아니면 제가 완전히 잘못 생각하고 있는 걸까요?

---

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [11월 18, 2021, 9:24오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/8 "2021-11-18T21:24:51Z")

</div>

성공적으로 업로드하는 데 명확한 해결책이 없다면, 옵션 1이나 3 중 어느 쪽을 선택하는 것이 좋은 방법일 것입니다. 옵션 2는 Discourse에 맡기는 것이 좋으며, 구체적으로는 고아 업로드를 정리하는 작업입니다. 이 작업의 간격은 `clean orphan uploads grace period hours` 설정으로 제어됩니다.

다만, 파일이 삭제되기 전에 확보해 두는 것이 좋은 아이디어일 수 있습니다. 민감한 데이터가 포함되어 있지 않다면, 마이그레이션 중에 업로드가 되지 않는 이유를 테스트하는 데 유용할 수 있습니다.

---

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [11월 20, 2021, 10:38오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/9 "2021-11-20T22:38:25Z")

</div>

파일을 삭제하고 마이그레이션을 완료한 후(실패한 파일을 다운로드한 상태라면) 다시 시도해 볼 수 있는 방법은 게시물을 다시 편집하여 파일을 원래 위치에 되돌려 두는 것입니다. 파일이 S3에 완전히 업로드되지 않는 것인지, 아니면 마이그레이션 작업 중에만 실패하는 것인지 확인하면 흥미로울 것입니다.

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2월 17, 2022, 10:02오전 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/10 "2022-02-17T10:02:58Z")

</div>

저도 64포스트에서 동일한 오류가 발생했습니다. 80K개의 파일에서 그걸 찾는 건 불가능하네요…

로컬 파일을 삭제하면(대부분은 이미 마이그레이션된 것들이라) 어떻게 될까요?

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2월 17, 2022, 2:24오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/11 "2022-02-17T14:24:32Z")

</div>

파일들이 마이그레이션되었음을 확인했지만, 동일한 오류가 발생했습니다.

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2월 18, 2022, 6:32오전 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/12 "2022-02-18T06:32:20Z")

</div>

제안이 있으신가요? 업로드는 S3에 저장되고 정상적으로 작동하지만, S3로 마이그레이션하는 작업은 실패합니다.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2월 18, 2022, 12:38오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/13 "2022-02-18T12:38:41Z")

</div>

> [@Saiano](#):
>
> 저도 64개 게시글에서 동일한 오류가 발생했습니다. 80K개 파일 속에서 그것들을 찾는 것은 불가능합니다.

그 64개 파일을 잃는 것이 괜찮다면, 저 역시 같은 rake 작업이 계속 실패할 때 이를 편집하여 오류가 1개가 아닌 100개일 때만 발생하도록 설정했습니다.

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2월 18, 2022, 2:30오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/14 "2022-02-18T14:30:19Z")

</div>

> [@Falco](#):
>
> 그 64개 파일을 잃어도 괜찮다면, 같은 rake 태스크가 계속 실패했을 때 제가 했던 방법은 이를 편집하여 에러가 1개만 발생해도 실패하는 대신 100개 발생해야만 실패하도록 변경하는 것이었습니다.

저에게는 괜찮습니다.  
태스크를 편집하려면 어떻게 해야 하나요?

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2월 18, 2022, 3:04오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/15 "2022-02-18T15:04:39Z")

</div>

먼저 `SKIP_FAILED=1 rake uploads:migrate_to_s3`를 실행해 보세요.

그렇게 해도 작동하지 않으면 이 줄을 수정하고 다시 시도해 보세요.

> <https://github.com/discourse/discourse/blob/main/lib/file_store/to_s3_migration.rb#L77>

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2월 18, 2022, 4:04오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/16 "2022-02-18T16:04:42Z")

</div>

SKIP\_FAILED=100 rake uploads:migrate\_to\_s3 명령을 실행해 보았습니다.

=\> 0개 파일

- S3 파일 나열  
… .. =\> 81,070개 파일
- S3로 파일 동기화 중

데이터베이스의 URL 업데이트 중…  
기존 최적화 이미지 삭제 중…  
라이트박스를 포함하는 모든 게시물을 재처리(rebake)하도록 표시 중…  
54,453개의 게시물이 재처리 대상으로 표시되었습니다.  
53개의 게시물이 새 S3 업로드 URL로 매핑되지 않았습니다. ‘default’ 데이터베이스의 S3 마이그레이션이 실패했습니다.

수정된 파일을 Discourse 스크립트에 어떻게 적용해야 하는지 이해하지 못했습니다.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2월 18, 2022, 4:28오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/17 "2022-02-18T16:28:31Z")

</div>

> [@Saiano](#):
>
> SKIP\_FAILED=100 rake uploads:migrate\_to\_s3를 시도해 보았습니다.

잘못 이해한 것일 수도 있지만, SKIP\_FAILED를 활성화하려면 금액을 지정하는 대신 `SKIP_FAILED=1`을 실행해야 한다고 생각합니다.

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2월 18, 2022, 4:44오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/18 "2022-02-18T16:44:20Z")

</div>

> [@Saiano](#):
>
> SKIP\_FAILED=1 rake uploads:migrate\_to\_s3

이 명령어로 시도해 보았습니다. … 결과는 동일합니다

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2월 19, 2022, 6:25오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/19 "2022-02-19T18:25:19Z")

</div>

아, 안타깝네요. @Falco님의 다른 제안인 rake 작업을 수정하는 방법이 있지만, unfortunately 어떻게 해야 하는지 모르겠고, 검색해도 관련 설명을 찾을 수 없어요. 🙂

혹시 다른 분들의 도움이 있을까요? 🤞

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2월 20, 2022, 3:06오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/20 "2022-02-20T15:06:58Z")

</div>

저는 /shared 폴더에 myscript.rb 파일을 만들었지만 실행할 수 없습니다.

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2월 21, 2022, 12:05오후 UTC](https://meta.discourse.org/t/migrate-to-s3-fails/209499/21 "2022-02-21T12:05:31Z")

</div>

다른 제안이 있으신가요? @vulkanino 님도 비슷한 문제를 겪고 계신 것 같네요.

[Next page](https://meta.discourse.org/t/migrate-to-s3-fails/209499.md?page=2)
