簡體   English   中英

AWS Lambda函數出現節點問題

[英]AWS Lambda function with Node issue

我一直在使用Node 8.10開發AWS Lambda函數。 我注意到我可以導入aws-sdk,但是在啟動某些EC2函數時遇到了一些問題。 我有一個設置了允許我的功能訪問的策略的角色。 這是我想要進一步了解的地方。

我試圖啟動這樣的實例...

let params = { InstanceIds: ["i-31112345d325"] };

 try{
    let response = ec2.startInstances(params);
    response.send();
}catch(ex){
    console.log(ex);
}

像這樣

 ...
 try{
    let response = ec2.startInstances(params, function(err, data){
      if(err) console.log(err);
      else //do something else
    });
 );
}catch(ex){
    console.log(ex);
}

這些方法似乎都不觸發EC2計算機啟動。 我做了一些挖掘,並取出了promise(),它似乎起作用了。

try{
    await ec2.startInstances(params).promise().then((response)=> {
        console.log("Success with ", response);
    })
}
catch(ex){
    console.log(ex);
}

我什么都沒改變。 我在互聯網上看到的大多數代碼都是前兩種方式實現的。 有人可以解釋為什么這對我不起作用嗎? 該文檔似乎並未解決該問題,並且文檔中的示例似乎對我不起作用。 https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#startInstances-property

對於節點8.10,處理程序功能支持callback方法。 您可以使用該callback告訴Lambda何時從回調函數中終止或答應

      'use strict';
      const AWS = require('aws-sdk');
      var ec2 = new AWS.EC2();
      exports.handler = (event, context, callback) => {
              var params = {  InstanceIds: ["i-1234567890abcdef0"]}
              ec2.startInstances(params, function(err, data) {
                if (err) callback(err.stack); // an error occurred
                else     callback(null, data);           // successful response
                });
              }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM