如何在AWS js SDK中配置区域?

5

我的问题

我正在编写一个简单的JS函数,该函数从AWS CloudWatch日志中读取一些信息。

按照配置Node.js AWS SDK中的区域的答案以及 AWS Node.js SDK文档,我得到了以下代码:

代码

var AWS = require('aws-sdk');

var cloudwatchlogs = new AWS.CloudWatchLogs();

console.log(AWS.config.region)              // Undefined

AWS.config.region = 'eu-central-1'          // Define the region with dot notation
console.log(AWS.config.region) .            // eu-central-1

AWS.config.update({region:'eu-central-1'}); // Another way to update
console.log(AWS.config.region) .            // eu-central-1


var params = {
  limit: 0,
//   logGroupNamePrefix: 'STRING_VALUE',
//   nextToken: 'STRING_VALUE'
};

// This call is failing
cloudwatchlogs.describeLogGroups(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

输出和错误

undefined
eu-central-1
eu-central-1
{ ConfigError: Missing region in config
    at Request.VALIDATE_REGION (/Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/event_listeners.js:91:45)
    at Request.callListeners (/Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at callNextListener (/Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/sequential_executor.js:95:12)
    at /Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/event_listeners.js:85:9
    at finish (/Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/config.js:315:7)
    at /Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/config.js:333:9
    at SharedIniFileCredentials.get (/Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/credentials.js:126:7)
    at getAsyncCredentials (/Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/config.js:327:24)
    at Config.getCredentials (/Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/config.js:347:9)
    at Request.VALIDATE_CREDENTIALS (/Users/adam/binaris/adam-test-sls/node_modules/aws-sdk/lib/event_listeners.js:80:26)
  message: 'Missing region in config',
  code: 'ConfigError',
  time: 2017-07-11T09:57:55.638Z } ...

环境

代码在本地运行,使用的是node v8.1.2

我的问题

如何正确配置AWS js SDK中的区域?

补充说明

github上开了一个问题,并得到了一些回应。


这个问题存在于整个 SDK 中。SQS 和 Cloudsearch 也需要区域信息,但 SDK 文档却没有说明。 - Josh J
3个回答

6
或者,您也可以在创建CloudWatch对象时指定:
var AWS = require('aws-sdk');
var cloudwatchlogs = new AWS.CloudWatchLogs({region: 'eu-central-1'});

完美。像魔法一样运作。AWS js文档中的示例是误导性和适得其反的。 - Adam Matan

5
以以下方式编写代码,它会起作用。
var AWS = require('aws-sdk');

// assign AWS credentials here in following way:
AWS.config.update({
  accessKeyId: 'asdjsadkskdskskdk',
  secretAccessKey: 'sdsadsissdiidicdsi',
  region: 'eu-central-1'
});
var cloudwatchlogs = new AWS.CloudWatchLogs({apiVersion: '2014-03-28'});

1

1
很遗憾,它不起作用 - 我已经在我的代码中尝试过了。 - Adam Matan
奇怪。你得到了相同的输出还是不同的输出? - Rumesh Eranga Hapuarachchi
相同,因为这行代码已经出现在我的代码中。请参见上面。 - Adam Matan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接