Ane*_*els 98 javascript amazon-web-services node.js aws-sdk
有人可以解释如何使用Node.js修复丢失的配置错误吗?我已经按照aws doc页面中的所有示例进行了操作,但无论如何我仍然会收到此错误.
{ [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 - -
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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'});
(...)
Run Code Online (Sandbox Code Playgroud)
umb*_*rel 184
如何改变陈述的顺序?在实例化s3和dd之前更新AWS配置
var AWS = require('aws-sdk');
AWS.config.update({region:'us-east-1'});
var dd = new AWS.DynamoDB();
var s3 = new AWS.S3();
Run Code Online (Sandbox Code Playgroud)
Zan*_*non 73
我有同样的问题"配置中缺少区域",在我的情况下,与CLI或Python SDK不同,Node SDK不会从~\.aws\config文件中读取.
要解决此问题,您有三种选择:
以编程方式配置它(硬编码): AWS.config.update({region:'your-region'});
使用环境变量.CLI使用时AWS_DEFAULT_REGION,Node SDK使用AWS_REGION.
使用JSON文件加载 AWS.config.loadFromPath('./config.json');
JSON格式:
{
"accessKeyId": "akid",
"secretAccessKey": "secret",
"region": "us-east-1"
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*hev 51
如果您使用AWS CLI,则可能在〜/ .aws/config中定义了默认区域.遗憾的是,AWS SDK for JavaScript默认情况下不会加载它.要加载它,请定义env var
AWS_SDK_LOAD_CONFIG=1
Run Code Online (Sandbox Code Playgroud)
请参阅https://github.com/aws/aws-sdk-js/pull/1391
Waf*_*fle 11
您可以在创建dynamodb连接时指定区域(尚未尝试过s3,但这也应该有效).
var AWS = require('aws-sdk');
var dd = new AWS.DynamoDB({'region': 'us-east-1'});
Run Code Online (Sandbox Code Playgroud)
小智 10
我已经检查了你的代码,在这里你在设置区域之前连接到 AWS 服务,所以我建议你先更新区域,然后连接到服务或创建这些服务的实例,如下所示 -
var express = require('express');
var router = express.Router();
var AWS = require('aws-sdk');
AWS.config.update({region:'us-east-1'});
var dd = new AWS.DynamoDB();
var s3 = new AWS.S3();
var bucketName = 'my-bucket';
Run Code Online (Sandbox Code Playgroud)
Jus*_*sti 10
令我印象深刻的是,这还没有发布在这里。
AWS.config.update()您可以使用而不是设置区域
const s3 = new AWS.S3({
region: "eu-central-1",
});
Run Code Online (Sandbox Code Playgroud)
使其具体化。
对我来说同样的错误:
经过大量的试验,
我已经解决了以下问题:
此外,无需在代码中使用,例如:
AWS.config.update(...)这不是必需的
AWS.XYZ()这将没有任何问题,XYZ是任何aws服务,如S3或其他
[[在极少数情况下]]如果在代码中假设某些默认值并且您被迫发送区域,则使用{'region':process.env.AWS_REGION})
小智 6
var AWS = require('aws-sdk');
Run Code Online (Sandbox Code Playgroud)
//通过以下方式在此处分配AWS凭据:
AWS.config.update({
accessKeyId: 'asdjsadkskdskskdk',
secretAccessKey: 'sdsadsissdiidicdsi',
region: 'us-east-1'
});
var dd = new AWS.DynamoDB();
var s3 = new AWS.S3();
Run Code Online (Sandbox Code Playgroud)
这可能不是正确的方法,但我将所有配置都放在一个单独的 JSON 文件中。这确实为我解决了这个问题
要加载 AWS 配置,我这样做:
var awsConfig = config.aws;
AWS.config.region = awsConfig.region;
AWS.config.credentials = {
accessKeyId: awsConfig.accessKeyId,
secretAccessKey: awsConfig.secretAccessKey
}
Run Code Online (Sandbox Code Playgroud)
config.aws 只是一个 JSON 文件。