Falta de credenciales en el config, cuando se intenta objeto de s3

0

Pregunta

Tengo un servicio express que está tratando de escribir un objeto a un s3 pero me da el siguiente error:

Falta de credenciales en el config

Estoy asumiendo mi AWS papel localmente que los conjuntos de mis credenciales en .aws/credentials luego, en mi Dockerfile estoy copiando en mi contenedor.

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

La documentación dice:

El SDK detecta automáticamente las credenciales de AWS conjunto de variables en su medio ambiente y los utiliza para el SDK de solicitudes, eliminando la necesidad de administrar las credenciales en su aplicación. Las variables de entorno que se establece para proporcionar sus credenciales son:

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

AWS_SESSION_TOKEN (opcional)

Así que no tengo que gestionar manualmente mis credenciales cuando se utiliza el sdk?

Actualmente, el código de escritura para el 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

Mejor respuesta

0

Es el nodo de la derecha del usuario que ejecuta este código?

Es el archivo /home/node/.aws/credentials se parece a algo como esto:

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

Para depurar, puede intentar tratar el siguiente: Usted puede tratar de añadir las credenciales de AWS directamente en el código como:

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

Alternativamente, usted puede tratar de eliminar /home/node/.aws/credentials archivo y mover las credenciales para /home/node/.aws/config archivo en su lugar:

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

Y, alternativamente, usted puede tratar de añadir credenciales y la región env variables en el Dockerfile:

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

En otros idiomas

Esta página está en otros idiomas

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