javascript - 使用 Node.Js 的 Lambda 函数

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

我正在尝试使用 lambda 函数列出特定区域中的所有 EC2 实例。这是我的代码:

const AWS = require('aws-sdk');
AWS.config.region = '******';

exports.handler = async function(event) {
  const promise = new Promise(function(resolve, reject) {
        const ec2 = new AWS.EC2();
    
      ec2.describeInstances( function(err, data) {
      console.log("\nIn describe instances:\n");
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log("\n\n" + data + "\n\n"); // successful response
      context.done(null, 'Function Finished!');  
})
      
      resolve("Data");
    })
  return promise;
}

我得到执行结果:成功但没有真正返回任何实例。

最佳答案

const AWS = require('aws-sdk');
AWS.config.region = '******';

exports.handler = async function(event) {
  const promise = new Promise(function(resolve, reject) {
    const ec2 = new AWS.EC2();
    ec2.describeInstances(function(err, data) {
      console.log("\nIn describe instances:\n");
      if (err) {
        console.log(err, err.stack); // an error occurred
        reject(err);
      } else {
        console.log("\n\n" + data + "\n\n"); // successful response
        resolve(data);
      }    
   }) 
 });

 return promise;
}

因此,我们有一个 promise ,如果成功,将通过数据解决该 promise ;如果描述实例失败,将通过错误拒绝该 promise 。

请注意,我们将 data 变量传递到 resovle 中,而不仅仅是“Data”字符串,这在以前没有任何意义。

此外,请记住,使用此代码,您的 lambda 函数将从 describeInstances 响应返回原始输出。如果您需要过滤某些数据或添加其他逻辑,则需要在 resolve 之前执行此操作,并将结果传递给 resolve,或 await 获取结果当然,对数据执行任何您需要的操作并返回结果。

关于javascript - 使用 Node.Js 的 Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62550731/

相关文章:

javascript - 如何确保在 Node JS 上的 render() 之前执行查询

javascript - 与ng-change和select交互——改变数据源触发change

node.js - Knex.js:如何使用 for 循环插入多个数据?

javascript - 无效数据, block 必须是缓冲区的字符串,而不是对象

amazon-web-services - AWS IAM -- 使用条件

javascript - 范围内格式清晰

javascript - 更改隐藏的 div 的滚动

node.js - 发送后无法设置 header

amazon-web-services - 添加到策略时对象无效

amazon-web-services - Amazon EC2 电子围栏退出 : mprotect() failed: Cannot allocate memory