Подтвердить что ты не робот

Проблема с доступом к ведру моей учетной записи AWS S3

Я попытался установить соединение с моей учетной записью aws s3, как это на моей консоли irb -

AWS::S3::Base.establish_connection!(:access_key_id => 'my access key', :secret_access_key => 'my secret key', :server => "s3-ap-southeast-1.amazonaws.com")

И он работает хорошо и подсказывает это -

=> #<AWS::S3::Connection:0x8cd86d0 @options={:server=>"s3-ap-southeast-1.amazonaws.com", :port=>80, :access_key_id=>"my access key", :secret_access_key=>"my secret key"}, @access_key_id="my access key", @secret_access_key="my secret key", @http=#<Net::HTTP s3-ap-southeast-1.amazonaws.com:80 open=false>>

У меня есть ведро, основанное на "Сингапурском регионе", и для этой конечной точки, то есть сервер: s3-ap-southeast-1.amazonaws.com Итак, когда я пытаюсь получить к нему доступ с помощью этой команды -

AWS::S3::Service.buckets

он правильно извлекает все ведра в моей учетной записи -

=> [#<AWS::S3::Bucket:0x8d291fc @attributes={"name"=>"bucket1", "creation_date"=>2011-06-28 10:08:58 UTC}, @object_cache=[]>,
#<AWS::S3::Bucket:0x8d291c0 @attributes={"name"=>"bucket2", "creation_date"=>2011-07-04 07:15:21 UTC}, @object_cache=[]>,
#<AWS::S3::Bucket:0x8d29184 @attributes={"name"=>"bucket3", "creation_date"=>2011-07-04 07:39:21 UTC}, @object_cache=[]>]

где bucket1 принадлежит Сингапурскому региону и другим регионам 2 в США. Итак, когда я это делаю -

AWS::S3::Bucket.find("bucket1")

он показывает мне эту ошибку:

AWS::S3::PermanentRedirect: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
    from /home/surya/.rvm/gems/ruby-1.9.2-p180/gems/aws-s3-0.6.2/lib/aws/s3/error.rb:38:in `raise'
    from /home/surya/.rvm/gems/ruby-1.9.2-p180/gems/aws-s3-0.6.2/lib/aws/s3/base.rb:72:in `request'
    from /home/surya/.rvm/gems/ruby-1.9.2-p180/gems/aws-s3-0.6.2/lib/aws/s3/base.rb:88:in `get'
    from /home/surya/.rvm/gems/ruby-1.9.2-p180/gems/aws-s3-0.6.2/lib/aws/s3/bucket.rb:102:in `find'
    from /home/surya/.rvm/gems/ruby-1.9.2-p180/gems/aws-s3-0.6.2/lib/aws/s3/bucket.rb:145:in `objects'
    from /home/surya/.rvm/gems/ruby-1.9.2-p180/gems/aws-s3-0.6.2/lib/aws/s3/bucket.rb:313:in `reload!'
    from /home/surya/.rvm/gems/ruby-1.9.2-p180/gems/aws-s3-0.6.2/lib/aws/s3/bucket.rb:242:in `objects'
    from /home/surya/.rvm/gems/ruby-1.9.2-p180/gems/aws-s3-0.6.2/lib/aws/s3/bucket.rb:253:in `each'
    from (irb):5
    from /home/surya/.rvm/rubies/ruby-1.9.2-p180/bin/irb:16:in `<main>'

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

4b9b3361

Ответ 1

Прежде чем подключиться, попробуйте использовать

AWS::S3::DEFAULT_HOST.replace "s3-ap-southeast-1.amazonaws.com"

Еще одна вещь, которую вы можете сделать (хотя это не очень хорошее решение) - это доступ к ведру с индексом массива

AWS::S3::Bucket.list[0]

Ответ 2

Если у кого-то возникает проблема, когда вы пытаетесь сделать разные регионы для разных платформ, вы можете настроить свой конфигурационный файл следующим образом:

AWS.config({
    :region => 'us-west-2',
    :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
    :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
    :s3 => { :region => 'us-east-1' }
})

Ответ 3

Здесь я столкнулся с этой проблемой. Поскольку я живу в Бразилии, я попытался создать ведро sao paulo, после того как я удалил его и использовал ведро США Standart, все получилось хорошо.

Ответ 4

область aws должна быть установлена ​​для нас - стандартная для доступа к ведрам S3.

В случае командной строки Linux запустите: export AWS_DEFAULT_REGION="us-standard".