Falta de credenciais em config quando se tenta colocar o objeto para bucket s3

0

Pergunta

Eu tenho um serviço expresso de que está tentando gravar um objecto a um bucket s3, mas eu estou recebendo o seguinte erro:

Falta de credenciais em config

Eu estou supondo que meu AWS função localmente, o qual define as minhas credenciais em .aws/credentials então, em minha Dockerfile eu sou copiá-los para o meu recipiente.

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

A documentação diz:

O SDK detecta automaticamente AWS credenciais definidas como variáveis no seu ambiente e usa-los para o SDK pedidos, eliminando a necessidade de gerenciar credenciais em seu aplicativo. As variáveis de ambiente que você definir para fornecer as credenciais são:

SENHA

AWS_SECRET_ACCESS_KEY

AWS_SESSION_TOKEN (opcional)

Então eu não tenho para gerenciar manualmente as minhas credenciais ao usar o sdk?

Atualmente, o código para escrever para o bucket 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

Melhor resposta

0

É o nó direito de usuário que executa esse código?

É o arquivo /home/node/.aws/credentials parece com algo assim:

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

Para debug, você pode tentar tente o seguinte: Você pode tentar adicionar suas credenciais da AWS diretamente no código como:

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

Como alternativa, você pode tentar excluir /home/node/.aws/credentials arquivo e mova as credenciais para /home/node/.aws/config arquivo:

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

E, alternativamente, você pode tentar adicionar credenciais e região como variáveis env em seu Dockerfile:

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

Em outros idiomas

Esta página está em outros idiomas

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