Quelqu'un peut-il expliquer comment corriger une erreur de configuration manquante avec Node.js? J'ai suivi tous les exemples de la page doc aws mais j'obtiens toujours cette erreur quoi qu'il arrive.
{ [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 - -
Voici mon code:
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
la source
la source
us-east-1
pour toutes les ressources, utilisera une région spécifique à la ressource lors de la création de l'objet.J'ai eu le même problème "Région manquante dans la configuration" et dans mon cas, c'est que, contrairement à la CLI ou au SDK Python, le SDK Node ne lira pas le
~\.aws\config
fichier.Pour résoudre ce problème, vous avez trois options:
Configurez-le par programme (codé en dur):
AWS.config.update({region:'your-region'});
Utilisez une variable d'environnement. Pendant que la CLI utilise
AWS_DEFAULT_REGION
, le SDK Node utiliseAWS_REGION
.Charger à partir d'un fichier JSON en utilisant
AWS.config.loadFromPath('./config.json');
Format JSON:
la source
AWS_DEFAULT_REGION
et SdkAWS_REGION
. C'est quelque chose de non évident et quelque chose qui m'a mordu dans le passé. Il est mis en surbrillance au bas du AWS SDK For Javascript Developer Guide - Setting Region, mais ce n'est pas évidentAWS_SDK_LOAD_CONFIG
surtrue
Si vous travaillez avec AWS CLI, vous avez probablement une région par défaut définie dans ~ / .aws / config. Malheureusement, AWS SDK for JavaScript ne le charge pas par défaut. Pour le charger, définissez env var
Voir https://github.com/aws/aws-sdk-js/pull/1391
la source
set AWS_ACCESS_KEY_ID="KEY ID GOES HERE" set AWS_SECRET_ACCESS_KEY="SECRET KEY GOES HERE" set AWS_REGION="us-east-1"
Vous pouvez spécifier la région lors de la création de la connexion dynamodb (je n'ai pas essayé s3 mais cela devrait également fonctionner).
la source
var dynamodb = new AWS.DynamoDB({ 'region': 'eu-west-1', 'endpoint': 'http://localhost:8000' }); var docClient = new AWS.DynamoDB.DocumentClient({"service": dynamodb});
Devrait fonctionner étant donné que c'est dans la documentation// attribuez ici les informations d'identification AWS de la manière suivante:
la source
J'ai parcouru votre code et ici vous vous connectez aux services AWS avant de définir la région, je vous suggère donc de mettre à jour la région d'abord, puis de vous connecter aux services ou de créer une instance de ceux-ci comme ci-dessous -
la source
Même erreur pour moi:
Après avoir fait de nombreux essais, je me suis arrêté sur ce qui suit:
OPTION 1
AWS_REGION
variable d'environnement dans le système local uniquement, surus-east-1
(exemple)Pour Linux:
Pour Windows,
voir: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
également, pas besoin d'utiliser dans le code, par exemple:
AWS.config.update(...)
, ce n'est pas obligatoireAWS.S3()
, etc., ceux-ci fonctionneront sans aucun problème. À la place de S3, il peut y avoir n'importe quel service awsDans de rares cas, si quelque part certaines valeurs par défaut sont supposées dans le code et que vous êtes obligé d'envoyer une région, utilisez
{'region': process.env.AWS_REGION})
OPTION 2
Au lieu des variables d'environnement, un autre moyen est le fichier AWS CONFIG:
Sous Linux, vous pouvez créer les fichiers ci-dessous:
Voir https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
la source
environment variable
? que voulez-vous direlocal system
?Ce n'est peut-être pas la bonne façon de le faire, mais j'ai toutes mes configurations dans un fichier JSON séparé. Et cela résout le problème pour moi
Pour charger la configuration AWS, je fais ceci:
config.aws n'est qu'un fichier JSON.
la source
Vous pouvez créer un module commun et l'utiliser en fonction de la région que vous souhaitez
et consommez-le comme,
l'idée est de mettre à jour la configuration AWS avant d'instancier s3
la source