AWS S3: адрес, к которому вы пытаетесь получить доступ, должен быть адресован с использованием указанной конечной точки

185

Я пытаюсь удалить загруженные файлы изображений с помощью AWS-SDK-Core Ruby Gem.

У меня есть следующий код:

require 'aws-sdk-core'

def pull_picture(picture)
    Aws.config = {
        :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
        :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
        :region => 'us-west-2'
    }

    s3 = Aws::S3::Client.new

    test = s3.get_object(
        :bucket => ENV["AWS_S3_BUCKET"],
        :key => picture.image_url.split('/')[-2],   
    )
end

Однако я получаю следующую ошибку:

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

Я знаю, что регион правильный, потому что, если я изменю его на us-east-1, появится следующая ошибка:

Указанный ключ не существует.

Что я здесь не так делаю?

user3575214
источник
6
Это случилось со мной, когда я случайно указал неправильный регион для указанного сегмента.
Человек
Это может быть из-за неправильного имени региона AWS.
Dattatray

Ответы:

311

Кажется вероятным, что это ведро было создано в другом регионе, т.е. не в us-west-2. Это единственный раз, когда я видел «Область, к которой вы пытаетесь получить доступ, должна быть адресована с использованием указанной конечной точки. Пожалуйста, отправляйте все будущие запросы этой конечной точке».

Стандарт США us-east-1

Маркус Уолсер
источник
30
Никогда бы не подумал об этом, но у меня это сработало! В AWS SDK регион «Стандарт США» выглядит как AWSRegionUSEast1.
Nerrolken
Искал ответ как установить регион. Спасибо!
Сайлар
6
Если вы используете клиент Ruby, установите ENV["AWS_REGION"]правильное значение (например "us-east-1") для корзины перед инициализацией клиента
Abe Voelker
Что если вам нужно использовать более одного ведра (например, dev / staging / production и т. Д.)?
екта
1
У меня была такая же проблема в Java. Ваше решение помогло. Они используют странные имена в S3. Конечная точка для региона, ключ для имени объекта в хранилище ...
Gangnus