node.js - 每次尝试从 NodeJS 调用 AWS lambda 函数时,我都会得到 'Error [ConfigError]: Missing region in config'

标签 node.js amazon-web-services aws-lambda

我是 AWS lambda 函数的新手,并获得了一些示例代码(在下面——当然,在实际代码中我正确填写了占位符)。但是每次调用 lambda 函数时,我都会得到

Error [ConfigError]: Missing region in config
    at Request.VALIDATE_REGION (/Users/abc/Documents/projects/bot/node_modules/aws-sdk/lib/event_listeners.js:92:45)

即使区域设置在 aws.config.update 中.我不确定该怎么做才能解决这个问题。我试过删除对 aws.config.update 的调用, 删除对 region 的引用, 但没有任何帮助。

我也很想知道是否有办法从 ~/.aws/credentials 中的共享文件加载凭证,而不必直接在此处输入它们。

感谢您的帮助!

const aws = require('aws-sdk');

// do this only in dev, in prod you will not need to put your keys...
aws.config.update({accessKeyId: '<YOU ACCESS KEY>', secretAccessKey: '<YOUR SECRET>', region:'ap-northeast-1'});


const lambda = new aws.Lambda();

function invokeLambda(options) {
  return new Promise((resolve, reject) => {
    lambda.invoke(options, (err, data) => {
      if (err) {
        return reject(err);
      }
      return resolve(data);
    });
  });
}

const sampleCall = async () => {
  try {
    const options = {
      FunctionName: '<NAME OF THE FUNCTION YOU WANT TO INVOKE>',
      Payload: '<The JSON.stringify of the object you want to provide as parameter>',
    }
    const result = await invokeLambda(options);
    console.log(result);
  } catch (err) {
    console.error(err);
  }
};

最佳答案

您可以在使用任何服务之前配置区域。

像这样:

var AWS = require('aws-sdk');
AWS.config.update({region:'us-east-1'});
const lambda = new aws.Lambda();

AWS 服务(例如 lambda)能够承担 IAM 角色。因为应用程序不需要存储凭据。

这是你应该做的:

  • IAM 角色附加到 lambda
  • 然后将权限附加到 IAM 角色

基本上,您可以将您的 IAM 用户正在使用的相同策略附加到 IAM 角色。执行此操作后,您可以从代码中删除凭据。

引用: https://aws.amazon.com/blogs/security/how-to-create-an-aws-iam-policy-to-grant-aws-lambda-access-to-an-amazon-dynamodb-table/

关于node.js - 每次尝试从 NodeJS 调用 AWS lambda 函数时,我都会得到 'Error [ConfigError]: Missing region in config',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59425998/

相关文章:

javascript - 错误 [ERR_MODULE_NOT_FOUND] : Cannot find package 'src'

windows - 如何在 node.js 和 Windows 之上安装和运行 lessc?

java - 使用 powershell 系统用户映射的驱动器无法被其他人访问

amazon-web-services - ECS 服务 aws-cli 与仪表板

python - 在 Amazon 中处理消息

node.js - AWS Lambda NodeJS12.x - 加载共享库时出错 : libXrender. so.1

python - Dynamodb 中带有/Python UUID 的 AWS Lambda(概念)

node.js - Knex 从时间列和日期列中获取格式化时间

javascript - 为 mongodb REST API 编写通用查询函数

amazon-web-services - 从 Lambda 代码调用 AWS boto 函数