Brak poświadczenia w konfiguracji podczas próby umieścić obiekt w kosza s3

0

Pytanie

Mam ekspresowa usługa, która próbuje nagrać obiekt do koszyka s3, ale otrzymuję następujący błąd:

Brak poświadczenia w konfiguracji

Biorę na siebie rolę AWS lokalnie, która ustawia moje poświadczenia w .aws/credentials następnie w moim pliku Dockerfile ja kopiuję je do kontenera.

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

W dokumentacji jest napisane:

Pakiet SDK automatycznie wykrywa poświadczenia AWS, zainstalowane jako zmiennych w twoim środowisku, i używa ich do wniosków SDK, eliminując potrzebę zarządzania danymi w aplikacji. Zmienne środowiskowe, które zadajesz do udostępniania swoich danych uwierzytelniających, są:

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

AWS_SESSION_TOKEN (opcjonalnie)

W ten sposób, nie trzeba ręcznie zarządzać swoimi danymi przy użyciu sdk?

Obecnie kod do wpisów do koszyka 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

Najlepsza odpowiedź

0

Czy węzeł prawidłowym przez użytkownika, który wykonuje ten kod?

Czy jest plik /home/node/.aws/credentials wygląda na coś w tym rodzaju:

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

Do debugowania możesz spróbować wykonać następujące czynności: Możesz spróbować dodać swoje poświadczenia AWS bezpośrednio w taki kod:

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

Alternatywnie możesz spróbować usunąć /home/node/.aws/credentials plik i przenieś dane do logowania w /home/node/.aws/config plik zamiast:

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

I alternatywnie można spróbować dodać dane logowania i region jako zmiennych env w swój plik Dockerfile:

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

W innych językach

Ta strona jest w innych językach

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