Czy ktoś może wyjaśnić, jak naprawić brakujący błąd konfiguracji w Node.js? Postępowałem zgodnie ze wszystkimi przykładami ze strony dokumentu aws, ale nadal otrzymuję ten błąd bez względu na wszystko.
{ [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 - -
Oto mój kod:
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
źródło
źródło
us-east-1
dla wszystkich zasobów, użycie regionu określonego zasobu podczas tworzenia obiektu.Miałem ten sam problem „Brakujący region w konfiguracji” iw moim przypadku było tak, że w przeciwieństwie do CLI lub Python SDK, Node SDK nie czyta z
~\.aws\config
pliku.Aby rozwiązać ten problem, masz trzy opcje:
Skonfiguruj to programowo (zakodowane):
AWS.config.update({region:'your-region'});
Użyj zmiennej środowiskowej. Podczas gdy CLI używa
AWS_DEFAULT_REGION
, Node SDK używaAWS_REGION
.Załaduj z pliku JSON przy użyciu
AWS.config.loadFromPath('./config.json');
Format JSON:
źródło
AWS_DEFAULT_REGION
i SdkAWS_REGION
. To coś nieoczywistego i coś, co ugryzło mnie w przeszłości. Jest podświetlony na dole AWS SDK dla Javascript Developer Guide - Setting Region, ale nie jest to oczywisteAWS_SDK_LOAD_CONFIG
natrue
Jeśli pracujesz z AWS CLI, prawdopodobnie masz domyślny region zdefiniowany w ~ / .aws / config. Niestety AWS SDK dla JavaScript nie ładuje go domyślnie. Aby go załadować, zdefiniuj zmienną env
Zobacz https://github.com/aws/aws-sdk-js/pull/1391
źródło
set AWS_ACCESS_KEY_ID="KEY ID GOES HERE" set AWS_SECRET_ACCESS_KEY="SECRET KEY GOES HERE" set AWS_REGION="us-east-1"
Możesz określić region podczas tworzenia połączenia z dynamodb (nie próbowałem s3, ale to też powinno działać).
źródło
var dynamodb = new AWS.DynamoDB({ 'region': 'eu-west-1', 'endpoint': 'http://localhost:8000' }); var docClient = new AWS.DynamoDB.DocumentClient({"service": dynamodb});
Powinien działać, biorąc pod uwagę, że jest to w dokumentacji// przypisz tutaj referencje AWS w następujący sposób:
źródło
Przejrzałem twój kod i tutaj łączysz się z usługami AWS przed ustawieniem regionu, więc sugeruję, aby najpierw zaktualizować region, a następnie połączyć się z usługami lub utworzyć instancję tych, jak poniżej -
źródło
Dla mnie ten sam błąd:
Po wykonaniu wielu prób zdecydowałem się na poniższe:
OPCJA 1
AWS_REGION
zmienną środowiskową tylko w systemie lokalnym, naus-east-1
(przykład)W systemie Linux:
W przypadku systemu Windows
patrz: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
również nie ma potrzeby używania w kodzie, na przykład:
AWS.config.update(...)
nie jest to wymaganeAWS.S3()
itp. będą działać bez żadnych problemów. Zamiast S3 może istnieć dowolna usługa awsW rzadkich przypadkach, jeśli gdzieś w kodzie są przyjmowane wartości domyślne i jesteś zmuszony wysłać region, użyj
{'region': process.env.AWS_REGION})
OPCJA 2
Zamiast zmiennych środowiskowych, innym sposobem jest plik AWS CONFIG:
W systemie Linux możesz utworzyć poniższe pliki:
Zobacz https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
źródło
environment variable
? co masz na myślilocal system
?Może to nie jest właściwy sposób, ale mam wszystkie moje konfiguracje w osobnym pliku JSON. I to rozwiązuje problem
Aby załadować konfigurację AWS, robię to:
config.aws to po prostu plik JSON.
źródło
Możesz stworzyć wspólny moduł i używać go w oparciu o wybrany region
i konsumuj jako,
chodzi o to, aby zaktualizować konfigurację AWS przed utworzeniem instancji s3
źródło