Загрузка AWS S3: Идентификатор ключа доступа AWS не существует в наших записях - PullRequest
0 голосов
/ 04 июля 2018

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

Итак, моя проблема в том, что мне нужно иметь возможность загружать файл напрямую из браузера в S3 без прохождения через сервер. Для этого я:

  1. сгенерируйте подпись на сервере и отправьте ее в frond end.
  2. Внешний интерфейс использует подпись для загрузки файлов на S3.

Локально все работает, когда я запускаю сервер на локальном компьютере, но не работает, когда он работает на beanstalk. Проблема в моем локальном, у меня есть явные ~ / .aws / credentails, которые содержат ключ доступа и секрет доступа. Но на beanstalk мы делаем это через роль IAM, поэтому код для получения учетных данных в любом случае:

@Bean
public AWSCredentials awsCredentials() {
        DefaultAWSCredentialsProviderChain credProvider = new DefaultAWSCredentialsProviderChain();
        return credProvider.getCredentials();
}

Насколько я знаю, при локальном запуске DefaultAWSCredentialsProviderChain просто считывает учетные данные из файла ~ / .aws / credentials, а при работе на beanstalk он генерирует ключ доступа и секрет доступа на основе роли IAM (действителен в течение короткого времени , не уверен, как долго, может быть, несколько часов). Когда сервер (который генерирует подпись) работает на beanstalk, я получил сообщение об ошибке от S3:

<Error><Code>InvalidAccessKeyId</Code>
<Message>The AWS Access Key Id you provided does not exist in our records.</Message>

Есть идеи, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...