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;
}