Лямбда-функция AWS с проблемой Node - PullRequest
0 голосов
/ 07 марта 2019

Я работал над лямбда-функцией AWS, используя Node 8.10. Я заметил, что могу импортировать 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. Я немного покопался и вытащил обещание (), и это, похоже, работает.

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)

1 Ответ

0 голосов
/ 07 марта 2019

Для узла 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
                });
              }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...