¿Alguien puede explicar cómo corregir un error de configuración faltante con Node.js? He seguido todos los ejemplos de la página de documentos de aws, pero sigo recibiendo este error pase lo que pase.
{ [ConfigError: Missing region in config]
message: 'Missing region in config',
code: 'ConfigError',
time: Wed Jun 24 2015 21:39:58 GMT-0400 (EDT) }>{ thumbnail:
{ fieldname: 'thumbnail',
originalname: 'testDoc.pdf',
name: 'testDoc.pdf',
encoding: '7bit',
mimetype: 'application/pdf',
path: 'uploads/testDoc.pdf',
extension: 'pdf',
size: 24,
truncated: false,
buffer: null } }
POST / 200 81.530 ms - -
Aquí está mi código:
var express = require('express');
var router = express.Router();
var AWS = require('aws-sdk');
var dd = new AWS.DynamoDB();
var s3 = new AWS.S3();
var bucketName = 'my-bucket';
AWS.config.update({region:'us-east-1'});
(...)
javascript
node.js
amazon-web-services
aws-sdk
Anejah Daniels
fuente
fuente
us-east-1
para que todos los recursos utilicen la región específica del recurso al crear el objeto.Tuve el mismo problema "Falta la región en la configuración" y, en mi caso, fue que, a diferencia de la CLI o el SDK de Python, el SDK de nodo no lee el
~\.aws\config
archivo.Para solucionar esto, tienes tres opciones:
Configúrelo programáticamente (codificado):
AWS.config.update({region:'your-region'});
Utilice una variable de entorno. Mientras que la CLI usa
AWS_DEFAULT_REGION
, el SDK de Node usaAWS_REGION
.Cargar desde un archivo JSON usando
AWS.config.loadFromPath('./config.json');
Formato JSON:
fuente
AWS_DEFAULT_REGION
y SdkAWS_REGION
. Eso es algo que no es obvio y algo que me mordió en el pasado. Está resaltado en la parte inferior de AWS SDK para Javascript Developer Guide - Setting Region pero no es obvioAWS_SDK_LOAD_CONFIG
entrue
Si trabaja con AWS CLI, probablemente tenga una región predeterminada definida en ~ / .aws / config. Lamentablemente, AWS SDK para JavaScript no lo carga de forma predeterminada. Para cargarlo, defina env var
Ver https://github.com/aws/aws-sdk-js/pull/1391
fuente
set AWS_ACCESS_KEY_ID="KEY ID GOES HERE" set AWS_SECRET_ACCESS_KEY="SECRET KEY GOES HERE" set AWS_REGION="us-east-1"
Puede especificar la región al crear la conexión dynamodb (no he probado s3 pero eso también debería funcionar).
fuente
var dynamodb = new AWS.DynamoDB({ 'region': 'eu-west-1', 'endpoint': 'http://localhost:8000' }); var docClient = new AWS.DynamoDB.DocumentClient({"service": dynamodb});
Debería funcionar dado que está en la documentación// asigne aquí las credenciales de AWS de la siguiente manera:
fuente
Revisé su código y aquí se está conectando a los servicios de AWS antes de configurar la región, por lo que le sugiero que actualice la región primero y luego se conecte a los servicios o cree una instancia de los siguientes:
fuente
Mismo error para mi:
Después de hacer muchas pruebas, me he decidido por lo siguiente:
OPCIÓN 1
AWS_REGION
variable de entorno solo en el sistema local, enus-east-1
(ejemplo)Para Linux:
Para Windows,
consulte: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
Además, no es necesario usarlo en el código, por ejemplo:
AWS.config.update(...)
, esto no es necesarioAWS.S3()
, etc., funcionarán sin problemas. En lugar de S3, puede haber cualquier servicio AWSEn un caso raro, si en algún lugar se asumen algunos valores predeterminados en el código y se ve obligado a enviar la región, utilice
{'region': process.env.AWS_REGION})
OPCION 2
En lugar de variables de entorno, otra forma es el archivo AWS CONFIG:
En Linux puede crear los siguientes archivos:
Consulte https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
fuente
environment variable
? ¿qué es lo que quiere decir conlocal system
?Puede que esta no sea la forma correcta de hacerlo, pero tengo todas mis configuraciones en un archivo JSON separado. Y esto me soluciona el problema
Para cargar la configuración de AWS, hago esto:
config.aws es solo un archivo JSON.
fuente
Puede crear un módulo común y usarlo según la región que desee
y consumirlo como,
la idea es actualizar la configuración de AWS antes de instanciar s3
fuente