AWS :: S3 :: Errors :: InvalidAccessKeyId с действительными учетными данными - PullRequest
0 голосов
/ 05 марта 2020

При попытке загрузить файл в корзину 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.

1 Ответ

0 голосов
/ 06 марта 2020

Наконец-то понял, проблема была в том, что, поскольку мы используем пользовательскую конечную точку, учетные данные не были найдены, я думаю, что она работает по-другому с пользовательскими конечными точками.

Теперь, чтобы указать пользовательскую конечную точку, вам понадобится чтобы использовать параметр конфигурации, который по какой-то причине не задокументирован (или, по крайней мере, я его нигде не нашел), мне действительно пришлось go через код скрепки , чтобы увидеть, как эти ребята справились с этим.

В любом случае вот как выглядит конфигурация для v1 с добавленной конфигурацией для конечной точки:

AWS.config(
  :access_key_id => 'key',
  :secret_access_key => 'secret',
  :s3_endpoint => 'custom.endpoint.com'
)

Надеюсь, это кого-нибудь спасет время.

...