Невозможно получить доступ к aws s3 из docker контейнера. ECONNREFUSED - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь получить доступ к aws s3 из docker контейнера. Роль IAM с AWSS3FullAccess создана, а учетные данные установлены с помощью json файла конфигурации.

Внутри конфигурации чтения кода в виде

AWS.config.loadFromPath('./config/credentials.json');

Однако при запуске кода появляется следующая ошибка:

Error downloading file from s3
{ Error: connect ECONNREFUSED 169.254.169.254:80
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
  message: 'Missing credentials in config',
  errno: 'ECONNREFUSED',
  code: 'CredentialsError',
  syscall: 'connect',
  address: '169.254.169.254',
  port: 80,
  time: 2020-01-25T07:42:31.329Z,
  originalError:
   { message: 'Could not load credentials from any providers',
     errno: 'ECONNREFUSED',
     code: 'CredentialsError',
     syscall: 'connect',
     address: '169.254.169.254',
     port: 80,
     time: 2020-01-25T07:42:31.328Z,
     originalError:
      { message: 'EC2 Metadata roleName request returned error',
        errno: 'ECONNREFUSED',
        code: 'ECONNREFUSED',
        syscall: 'connect',
        address: '169.254.169.254',
        port: 80,
        time: 2020-01-25T07:42:31.328Z,
        originalError: [Object] } } }

Когда тот же код выполняется без контейнера docker и файл конфигурации предоставляется, как указано выше, он работает.

1 Ответ

0 голосов
/ 25 января 2020

Понял, что я создавал S3-клиент перед настройкой aws учетных данных. Хотя aws учетные данные являются глобальными, однако, nodejs sdk требует установки учетных данных перед созданием экземпляров клиентов.

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