Configuration Error: Missing Region in Config (AWS)
Configuration Error: Missing Region in Config (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'
});
这是 运行ning 在使用 ejs 和节点的快速服务器上。我正在使用亚马逊 JavaScript SDK。
我在这里尝试了解决方案:
这没有帮助。
编辑 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
}
});
像这样在您的配置中添加区域:
AWS.config.update({
region: "REGION" //Here add you region
});
请将其添加到最顶层(var ec2 = new AWS.EC2();
行上方)
Oregon地区的正确代码是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.
中提取数据
此外,在您的代码中,在使用 region 初始化 AWS.CONFIG 时name,你已经用过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 class 回去吧。缺少的代码是:AWS.config = myConfig
.
由于您没有更新它,也没有使用 AWS.config.update({region:'us-west-2'});
更新现有的默认值 class,因此它会抛出 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
以上答案正确。
但是,对于 aws-sdk-js-v3
,您不能全局设置 AWS.config
。
因此解决方法是:
process.env.AWS_REGION = 'us-west-2'
此外,如果您在 CI 构建过程中收到有关无法访问 "169.254.169.254:80/latest/meta-data/iam/security-credentials/"
的错误,您可能需要以相同的方式设置假凭据:
process.env.AWS_REGION = 'us-west-2'
process.env.AWS_ACCESS_KEY_ID = 'test-key'
process.env.AWS_SECRET_ACCESS_KEY = 'test-secret'
在你的情况下,这是执行顺序(这就是副作用不好的原因)。
错误:
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'
});
正确:
// update the config
var myConfig = new AWS.Config({
credentials: myCredentials, region: 'us-west-2'
});
// then create the instance
var myCredentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId:'us-west-2:b0efe3c7-e4c9-420f-836b-6d776e2a9271'
});
我在 运行 我的节点应用程序时遇到配置错误。错误是:
{ 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'
});
这是 运行ning 在使用 ejs 和节点的快速服务器上。我正在使用亚马逊 JavaScript SDK。
我在这里尝试了解决方案:
这没有帮助。
编辑 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
}
});
像这样在您的配置中添加区域:
AWS.config.update({
region: "REGION" //Here add you region
});
请将其添加到最顶层(var ec2 = new AWS.EC2();
行上方)
Oregon地区的正确代码是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.
中提取数据此外,在您的代码中,在使用 region 初始化 AWS.CONFIG 时name,你已经用过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 class 回去吧。缺少的代码是:AWS.config = myConfig
.
由于您没有更新它,也没有使用 AWS.config.update({region:'us-west-2'});
更新现有的默认值 class,因此它会抛出 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
以上答案正确。
但是,对于 aws-sdk-js-v3
,您不能全局设置 AWS.config
。
因此解决方法是:
process.env.AWS_REGION = 'us-west-2'
此外,如果您在 CI 构建过程中收到有关无法访问 "169.254.169.254:80/latest/meta-data/iam/security-credentials/"
的错误,您可能需要以相同的方式设置假凭据:
process.env.AWS_REGION = 'us-west-2'
process.env.AWS_ACCESS_KEY_ID = 'test-key'
process.env.AWS_SECRET_ACCESS_KEY = 'test-secret'
在你的情况下,这是执行顺序(这就是副作用不好的原因)。
错误:
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'
});
正确:
// update the config
var myConfig = new AWS.Config({
credentials: myCredentials, region: 'us-west-2'
});
// then create the instance
var myCredentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId:'us-west-2:b0efe3c7-e4c9-420f-836b-6d776e2a9271'
});