Отсутствуют учетные данные в конфигурации при попытке поместить объект в корзину s3

0

Вопрос

У меня есть экспресс-служба, которая пытается записать объект в корзину s3, но я получаю следующую ошибку:

Отсутствуют учетные данные в конфигурации

Я принимаю на себя роль AWS локально, которая устанавливает мои учетные данные в .aws/credentials затем в моем файле Dockerfile я копирую их в свой контейнер.

RUN mkdir "/home/node/.aws" && touch "/home/node/.aws/config" && touch "/home/node/.aws/credentials"
RUN echo "${AWS_CREDENTIALS}" > "/home/node/.aws/credentials"

В документации говорится:

Пакет SDK автоматически определяет учетные данные AWS, установленные в качестве переменных в вашей среде, и использует их для запросов SDK, устраняя необходимость управления учетными данными в приложении. Переменные среды, которые вы задаете для предоставления своих учетных данных, являются:

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

AWS_SESSION_TOKEN (необязательно)

Таким образом, мне не нужно вручную управлять своими учетными данными при использовании sdk?

В настоящее время код для записи в корзину s3:

import s3 from 'aws-sdk/clients/s3';

const s3Client = new s3({region: process.env['region']});

async upload() {
   const params = {
      Bucket: process.env['bucket'],
      Key: 'test.json',
      Body: somejsonfile
   }

   const res = s3Client.upload(params).promise();
   return results;
}
1

Лучший ответ

0

Является ли узел правильным пользователем, который выполняет этот код?

Является ли файл /home/node/.aws/credentials похоже на что-то в этом роде:

[default]
aws_access_key_id = <AAK>
aws_secret_access_key = <ASK>

Для отладки вы можете попробовать выполнить следующие действия: Вы можете попробовать добавить свои учетные данные AWS непосредственно в такой код:

AWS.config.update({
    accessKeyId: "<AAK>",
    secretAccessKey: "<ASK>",
    "region": "<REGION>"
});

В качестве альтернативы вы можете попытаться удалить /home/node/.aws/credentials файл и переместите учетные данные в /home/node/.aws/config файл вместо:

[default]
region=<REGION>
output=json
aws_access_key_id = <AAK>
aws_secret_access_key = <ASK>

И в качестве альтернативы вы можете попытаться добавить учетные данные и регион в качестве переменных env в свой файл Dockerfile:

ENV AWS_ACCESS_KEY_ID=<AAK>
ENV AWS_SECRET_ACCESS_KEY=<ASK>
ENV AWS_DEFAULT_REGION=<REGION>
2021-11-25 08:53:02

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................