配置错误:配置中缺少区域 (AWS)

新手上路,请多包涵

运行我的节点应用程序时出现配置错误。错误是:

 { ConfigError: Missing region in config
at Request.VALIDATE_REGION (C:\Users\chris\Documents\AWS API
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:12027:47)
at Request.callListeners (C:\Users\chris\Documents\AWS API
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:11804:22)
at callNextListener (C:\Users\chris\Documents\AWS API
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:11794:14)
at C:\Users\chris\Documents\AWS API TEST\myapp\node_modules\aws-
sdk\dist\aws-sdk-react-native.js:12021:11
at finish (C:\Users\chris\Documents\AWS API TEST\myapp\node_modules\aws-
sdk\dist\aws-sdk-react-native.js:10842:9)
at Config.getCredentials (C:\Users\chris\Documents\AWS API
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:10887:9)
at Request.VALIDATE_CREDENTIALS (C:\Users\chris\Documents\AWS API
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:12016:28)
at Request.callListeners (C:\Users\chris\Documents\AWS API
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:11800:20)
at Request.emit (C:\Users\chris\Documents\AWS API
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:11776:12)
at Request.emit (C:\Users\chris\Documents\AWS API
TEST\myapp\node_modules\aws-sdk\dist\aws-sdk-react-native.js:13792:16)
message: 'Missing region in config',
code: 'ConfigError',

我的代码是:

 //Authenticate AWS:
var myCredentials = new AWS.CognitoIdentityCredentials({IdentityPoolId:'us-west-2a:"Identity Pool ID"'});
var myConfig = new AWS.Config({
          credentials: myCredentials, region: 'us-west-2a'
});

这是在使用 ejs 和节点的快速服务器上运行的。我正在使用亚马逊 JavaScript SDK。

我在这里尝试了解决方案:

AWSCognito 配置错误中缺少区域

这没有帮助。

编辑 1:

按照下面的要求,我附上了完整的代码:

 var express = require('express');
var AWS = require('aws-sdk');
var EC2 = require('aws-ec2')('access key', 'secret');
var scale = require('aws-scale');
var router = express.Router();

//Authenticate AWS:
var myCredentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId:'us-west-2:b0efe3c7-e4c9-420f-836b-6d776e2a9271'
});

var myConfig = new AWS.Config({
  credentials: myCredentials, region: 'us-west-2'
});

AWS.config = myConfig

var minInst = 1;
var maxInst = 3;

var ec2 = new AWS.EC2();
//Set up parameters for EC2 Instances:
var params = {
  ImageId: 'ami-6e1a0117',
  MaxCount: minInst,
  MinCount: maxInst,
  InstanceInitiatedShutdownBehavior: 'terminate',
  InstanceType: 't2.micro',
  Monitoring: {
    Enabled: true
  },
  NetworkInterfaces: [{
    AssociatePublicIpAddress: true,
    DeleteOnTermination: true,
  }],
  Placement: {
    AvailabilityZone: 'us-west-2',
  },
  SecurityGroupIds: [
    'sg-b0307ccd',
  ],
  SecurityGroups: [
    'CAB432Assignment2SG',
  ],

};
ec2.runInstances(params, function(err, data) {
  if (err){
    console.log(err, err.stack); //An error occurred
  }
  else{
    console.log(data); //Successful Response
  }
});

原文由 Christopher Littlewood 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 373
2 个回答

俄勒冈 地区的正确代码是 us-west-2 。您在两个地方将其设置为 us-west-2a

在提及身份池 ID 时,更正以下代码并尝试:

 AWS.config.update({region:'us-west-2'});
var myCredentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId:'us-west-2:"Identity Pool ID"'
});

如果您没有为 API CognitoIdentityCredentials 传递 _区域_,那么它将从 AWS.config 中提取数据。

此外,在您的代码中,在使用 区域 名称初始化 AWS.CONFIG 时,您使用了 us-west-2a 。如果您要使用它 而不是 AWS.config.update ,请更正它。

 var myConfig = new AWS.Config({
    credentials: myCredentials, region: 'us-west-2'
});

更新

我发现了另一个问题。问题是,您正在使用 var myConfig = new AWS.Config() 初始化 AWS.config ,但您 没有用它更新 AWS.config 类。缺少的代码是: AWS.config = myConfig

由于您没有更新它,也没有使用 AWS.config.update({region:'us-west-2'}); 更新现有的默认类,因此它会引发 Missing region in config 错误。

正确的代码片段

var AWS = require('aws-sdk');
var myCredentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId:'us-west-2:identity-pool-id'
});
var myConfig = new AWS.Config({
    credentials: myCredentials, region: 'us-west-2'
});
AWS.config = myConfig

原文由 Madhukar Mohanraju 发布,翻译遵循 CC BY-SA 4.0 许可协议

像这样在您的配置中添加区域:

 AWS.config.update({
    region: "REGION" //Here add you region
});

请将其添加到最顶层(在线 var ec2 = new AWS.EC2(); 之上)

原文由 Vijayanath Viswanathan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题