2017-02-02 5 views
1

Я пытаюсь перечислить и загрузить папки из ведра на пути, например: «aaa/bbb /», используя aws-sdk gem v2. Однако я не могу понять, как это сделать.Aws S3 соединение с определенным путем

Это то, что я пробовал:

require 'aws-sdk' 

Aws.config.update({ 
    region: 'us-west-2', 
    credentials: Aws::Credentials.new('akid', 'secret') 
})   

s3 = Aws::S3::Resource.new 

# reference an existing bucket by name 
bucket = s3.bucket('aaa') 

bucket.objects(prefix: '/bbb/').each do |folder| 
    p folder 
end 

Он говорит: Access Denied (AWS :: S3 :: Ошибки :: AccessDenied)

Но, если я использую командную строку AWS CLI вместо этого, и выполнить:

aws s3 ls aaa/bbb/ 

это работает ...

Любое предложение?

Большое спасибо.

ответ

0

Согласно документации вы, чтобы поместить в учетные данные немного отличающимися:

require 'aws-sdk' 

Aws.config.update({ 
    region: 'us-west-2', 
    credentials: Aws::Credentials.new('akid', 'secret') 
}) 

Может попробовать это перечислить содержимое ведра:

s3.list_objects(bucket:'aaa').each do |response| 
    puts response.contents.map(&:key) 
end 
+0

Да, правда. Я пытался выяснить, как это исправить, и в итоге я использовал другой код, но я уже пробовал, и он не работает ... Я буду обновлять сообщение в соответствии с документацией, спасибо. – soltex

+0

Не повезло с обновлением. Тот же результат, доступ запрещен. У меня есть доступ к папке «bbb» внутри ведра «aaa», однако я не знаю, как туда добраться ... с консолью Aws отлично работает. – soltex

0

Конвенция в S3 является то, что «корень» в пространстве ключей ведра представляет собой пустую строку нулевой длины ... это не /, как полагают некоторые люди.

Префикс, который вы ищите, будет отображаться как bbb/, а не /bbb/.

+0

Спасибо. Это что-то изменило, но мне нужно определить какую-либо конечную точку? Я получаю эту ошибку: ведро, к которому вы пытаетесь получить доступ, должно быть адресовано с использованием указанной конечной точки. – soltex

+0

Вы устанавливаете 'region: 'us-west-2'', поэтому ошибка говорит о том, что ваше ведро находится в другом регионе. Подтвердите это? –

+0

Вы правы, регион был неправ, я перешел на «us-east-1», и теперь я все еще получаю: Access Denied (Aws :: S3 :: Errors :: AccessDenied). – soltex