# Загрузка ресурсов в S3 после обновления в браузере

**URL:** https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519
**Category:** Support
**Created:** [02.Июнь.2020 04:11:03 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519 "2020-06-02T04:11:03Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![taher1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taher1/32/182563_2.png) [@taher1](https://meta.discourse.org/u/taher1)
#### Post date: [02.Июнь.2020 04:11:03 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/1 "2020-06-02T04:11:03Z")

</div>

После переноса изображений и ассетов (js) моего сайта на S3 я попытался обновить форум через интерфейс `/admin/upgrade`. Обновление прошло успешно, но, похоже, ассеты не были загружены в бакет S3, из-за чего мой сайт стал недоступен, пока я не пересобрал приложение из командной строки.  
Там у меня есть хук, который делает это за меня. Было бы здорово иметь подобный функционал и в веб-интерфейсе. Не знаю, есть ли он уже; если да, пожалуйста, дайте знать. 🙂

```yaml
 after_assets_precompile:
   - exec:
       cd: $home
       cmd:
         - sudo -E -u discourse bundle exec rake s3:upload_assets

```

---

<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: [02.Июнь.2020 04:16:28 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/2 "2020-06-02T04:16:28Z")

</div>

Нет, вы не можете переместить активы в S3 из панели администратора. Вам придется сделать это через SSH, так как при миграции требуются дополнительные задачи, если только вы не выполняете это на чистой установке.

---

<div class="post-metadata">

### Author: ![taher1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taher1/32/182563_2.png) [@taher1](https://meta.discourse.org/u/taher1)
#### Post date: [02.Июнь.2020 04:39:53 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/3 "2020-06-02T04:39:53Z")

</div>

А, я понял. Мне нравился бесшовный способ обновления без простоя, пока я не перешел на S3. Есть ли возможность не отдавать JS через S3, а использовать его только для изображений?

---

<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: [02.Июнь.2020 04:48:36 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/4 "2020-06-02T04:48:36Z")

</div>

Через S3 нельзя раздавать JS-файлы. S3 предназначен только для загрузки и раздачи медиафайлов (изображения, документы, видео и т. д.).

Для работы с JS вам понадобится CDN, например CloudFront.

---

<div class="post-metadata">

### Author: ![taher1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taher1/32/182563_2.png) [@taher1](https://meta.discourse.org/u/taher1)
#### Post date: [02.Июнь.2020 04:51:52 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/5 "2020-06-02T04:51:52Z")

</div>

Да, я не раздаю JS напрямую из S3, он хранится в S3, но раздается через CDN. Я хотел спросить: можно ли хранить JS локально и раздавать его через CDN, оставляя на S3 только медиафайлы?

---

<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: [02.Июнь.2020 04:58:46 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/6 "2020-06-02T04:58:46Z")

</div>

Опять вы всё неправильно поняли.

Discourse JS предназначен для прямой раздачи через CDN, при этом установка Discourse выступает в качестве pull-оригина. Не знаю, как вы планируете размещать JS в S3, но имейте в виду: JS пересобирается при каждой пересборке. Всё, что вы будете отдавать через S3, скорее всего, устареет, и это только создаст дополнительные проблемы.

---

<div class="post-metadata">

### Author: ![taher1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taher1/32/182563_2.png) [@taher1](https://meta.discourse.org/u/taher1)
#### Post date: [02.Июнь.2020 05:23:49 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/7 "2020-06-02T05:23:49Z")

</div>

Это началось после того, как я настроил параметры S3, следуя этой инструкции: [Configure an S3 compatible object storage provider for uploads](https://meta.discourse.org/t/using-object-storage-for-uploads-s3-clones/148916?page=2#backblaze-b-cloud-storage)

> [@itsbhanusharma](#):
>
> JS пересобирается при пересборке

Именно поэтому они добавили хук `after_assets_precompile` для загрузки обновленных ресурсов на S3.

Как мне это исправить? При попытке получить доступ к любому ресурсу через локальный сервер возвращается ошибка 404. Ресурсы должны загружаться через S3. Иначе я бы настроил правило маршрутизации на граничном узле CDN для обработки запросов к ресурсам через локальный домен.

---

<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: [02.Июнь.2020 05:44:06 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/8 "2020-06-02T05:44:06Z")

</div>

Если вы прочитали заголовок поста, в нём сказано «Объектное хранилище для загрузок» — этого достаточно.

Что вы имеете в виду под локальным доменом? Где установлен ваш Discourse?

---

<div class="post-metadata">

### Author: ![taher1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taher1/32/182563_2.png) [@taher1](https://meta.discourse.org/u/taher1)
#### Post date: [02.Июнь.2020 05:48:49 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/9 "2020-06-02T05:48:49Z")

</div>

Под локальным доменом я имел в виду сервер, на котором установлен Discourse, то есть JS-файлы находились локально на сервере nginx, а не на S3.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [02.Июнь.2020 06:50:50 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/10 "2020-06-02T06:50:50Z")

</div>

> [@itsbhanusharma](#):
>
> Discourse JS предназначен для прямой раздачи через CDN, при этом установка Discourse выступает в качестве источника (pull origin).

К сожалению, обсуждаемая тема не предусматривает этого, даже несмотря на то, что она называется «использование объектного хранилища для **загрузок** ». Если вы настроите свой форум в соответствии с инструкциями в этой теме, это потребует выгрузки ассетов на S3.

---

<div class="post-metadata">

### Author: ![taher1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taher1/32/182563_2.png) [@taher1](https://meta.discourse.org/u/taher1)
#### Post date: [02.Июнь.2020 07:02:27 UTC](https://meta.discourse.org/t/upload-assets-to-s3-after-in-browser-upgrade/153519/11 "2020-06-02T07:02:27Z")

</div>

Как я могу настроить это так, чтобы иметь возможность хранить файлы JS на сервере установки Discourse?
