rails aws-s3 удалить файл выдает ошибку AWS :: S3 :: PermanentRedirect - проблема с корзиной для ЕС? - PullRequest
4 голосов
/ 16 июля 2011

Я создаю приложение rails3 для heroku и использую гем aws-s3 для манипулирования файлами, хранящимися в корзине Amazon S3 eu.

Когда я пытаюсь выполнить AWS:: S3 :: S3Object.delete имя файла, команда 'mybucketname' , я получаю следующую ошибку:

AWS :: S3 :: PermanentRedirect (адрес, к которому вы пытаетесь получить доступ, должен быть адресованиспользуя указанную конечную точку. Пожалуйста, отправьте все будущие запросы этой конечной точке.):

Я добавил следующее в мой application.rb файл:

 AWS::S3::Base.establish_connection!(  
   :access_key_id     => "myAccessKey",  
   :secret_access_key => "mySecretAccessKey" 
 )

и следующий код для моего контроллера:

def destroy song = tape.songs.find (params [: id])

AWS::S3::S3Object.delete song.filename, 'mybucket'

song.destroy


respond_to do |format|  
    format.js   { render :nothing => true } 
  end     end

Я нашел предложенное решение где-нибудь добавить AWS_CALLING_FORMAT: SUBDOMAIN в мой файл amazon_s3.yml , как и предположительно, aws-S3 должен работать по-другому, чем мы.Однако это не сработало, такая же ошибка получена.

Не могли бы вы оказать какую-либо помощь?Большое спасибо за вашу помощь.

Ответы [ 3 ]

3 голосов
/ 16 июля 2011

проблема в том, что вам нужно набрать SUBDOMAIN как строчную букву в конфигурации, попробуйте это

1 голос
/ 06 апреля 2012

Вы можете указать пользовательскую конечную точку в точке инициализации соединения:

    AWS::S3::Base.establish_connection!(
      :access_key_id     => 'myAccessKey',
      :secret_access_key => 'mySecretAccessKey',
      :server            => 's3-website-us-west-1.amazonaws.com'
    )

Вы можете найти фактическую конечную точку через консоль AWS:

enter image description here

полный списокдопустимые параметры - здесь https://github.com/marcel/aws-s3/blob/master/lib/aws/s3/connection.rb#L252

VALID_OPTIONS = [:access_key_id, :secret_access_key, :server, :port, :use_ssl, :persistent, :proxy].freeze
0 голосов
/ 03 июля 2018

Мое решение состоит в том, чтобы установить константу для фактического сервисного канала во время инициализации.в конфиге / инициализаторах / aws_s3.rb

  AWS::S3::DEFAULT_HOST = "s3-ap-northeast-1.amazonaws.com"
  AWS::S3::Base.establish_connection!(
      :access_key_id     => 'access_key_id',
      :secret_access_key => 'secret_access_key'
  )
...