При попытке загрузить файл в корзину S3 я получаю следующую ошибку:
AWS::S3::Errors::InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.
Файл существует, корзина существует, корзина позволяет загружать файлы, учетные данные верны и использует CyberDuck с теми же учетными данными, которые я могу подключить и загрузить файлы в это ведро просто отлично. Большинство ответов здесь указывают на то, что учетные данные переопределяются переменными среды, это не тот случай, я попытался передать их напрямую в виде строк и вывести их просто для того, чтобы убедиться, что это правильные учетные данные.
v1
AWS.config(
:access_key_id => 'key',
:secret_access_key => 'secret'
)
s3 = AWS::S3.new
bucket = AWS::S3.new.buckets['bucket-name']
obj = bucket.objects['filename']
obj.write(file: 'path-to-file', acl:'private')
это использует v1
версию гема (aws-sdk-v1
), но я пробовал также использовать v3
, и я получаю ту же ошибку.
v3
Aws.config.update({
region: 'eu-west-1',
credentials: Aws::Credentials.new('key_id', 'secret')
})
s3 = Aws::S3::Resource.new(region: 'eu-west-1')
bucket = s3.bucket('bucket-name')
obj = bucket.object('filename')
ok = obj.upload_file('path-to-file')
Примечание: ошибка выдается в строке obj.write
.
Примечание 2: Это грабельное задание из Ruby в приложении Rails 4.