Невозможно напрямую загрузить в другой регион - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь изменить корзину AWS S3, используемую active_storage. Моя оригинальная запись была следующей:

# config/storage.yml
amazon:
  service: S3
  access_key_id: <%= ENV['S3_ACCESS_KEY_ID'] %>
  secret_access_key: <%= ENV['S3_SECRET_ACCESS_KEY'] %>
  region: 'us-east-1'
  bucket: 'us-bucket-name'

Это отлично работает. Но я хочу изменить его на новое ведро с именем aus-bucket-name, которое находится в районе Сиднея, с кодом региона ap-southeast-2. Поэтому я использую

# config/storage.yml
amazon:
  service: S3
  access_key_id: <%= ENV['S3_ACCESS_KEY_ID'] %>
  secret_access_key: <%= ENV['S3_SECRET_ACCESS_KEY'] %>
  region: 'ap-southeast-2'
  bucket: 'aus-bucket-name'

Когда я пытаюсь загрузить в корзину, в журналах сервера heroku я вижу

 S3 Storage (1.9ms) Generated URL for file at key: xyz (https://aus-bucket-name.s3.ap-southeast-2.amazonaws.com/...

, но ничего не происходит, страница загрузки просто ждет, но ничегозагруженЯ использую индикатор прогресса direct_upload.js, но поле имени файла не показывает никакой активности.

Если я вернусь в регион 'us-east-1', загрузка файла будет работать нормально, но у меня есть пара дополнительных полей для загрузки файлов, когда файл загружается из региона США-восток

, поэтому похоже, что загрузки из области Сиднея все еще ожидаются. Как мне это исправить?

1 Ответ

0 голосов
/ 06 ноября 2019

Оказалось, что aus-bucket-name не имеет правильных разрешений CORS, т.е. оно отличалось от us-bucket-name. Когда я правильно установил разрешения CORS, все заработало нормально. См. сообщение для описания того, как установить разрешения CORS для Amazon.

...