Вызвать функцию No VPC Lambda из функции VPC Lambda - Node.js - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь вызвать функцию No VPC Lambda, которая отправляет почту SES из функции VPC Lambda. Но SES по-прежнему не может подключиться к интернету.

Здесь я не хочу присоединять NAT. Поэтому я пытаюсь вызвать NO VPC лямбда-функцию.

fruitsData (в пределах VPC)

exports.handler = (event, context, callback) => {
    const fruits = ["Banana", "Orange", "Apple", "Mango"];

    var params = {
        FunctionName: 'sendMail',
        InvocationType: 'RequestResponse',
        LogType: 'Tail',
        Payload: JSON.stringify({ "fruits" : fruits })
    };

    lambda.invoke(params, function(err, data) {
        if (err) {
            context.fail(err);
        } else {
            context.succeed(data.Payload);
        }
    })
}

sendMail (без VPC)

const charset = 'UTF-8';
 exports.handler = async (event, context, callback) => {
    const message = JSON.stringify(event, null, 2);
    const params = {
       Source: source,
       Destination: {
           ToAddresses: [recipient.email]
       },
       Message: {
           Subject: {
               Data: "Example",
               Charset: charset
           },
           Body: {
               Text: {
                   Data: message,
                   Charset: charset
               },
               Html: {
                   Data: message,
                   Charset: charset
               }
           }
       }
   };
   try {
       await ses.sendEmail(params).promise();
       callback(null, "Email sent successfully");
   }
   catch (ex) {
       console.log('Unhandled Exception', ex);
   }
};

ОШИБКА

Время выполнения задачи истекло через 20,02 секунды

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Здесь я не хочу присоединять NAT. Поэтому я пытаюсь вызвать NO VPC лямбда-функцию.

Это невозможно. В настоящее время единственный способ, с помощью которого лямбда-функция внутри VPC может получить доступ к чему-либо вне VPC, - через NAT.

Также обратите внимание, что ваше утверждение о том, что первая функция «должна иметь возможность доступа ко второй», неверно. Лямбда-функции никогда не обращаются друг к другу напрямую. Первая функция должна получить доступ к API-интерфейсу AWS Lambda, который она будет использовать для запуска вызова второй функции.

0 голосов
/ 04 ноября 2019

Вы можете проверить, что происходит, используя

const sendEmail = ses.sendEmail(params).promise();

sendEmail
  .then(data => {
    console.log("email submitted to SES", data);
  })
  .catch(error => {
    console.log(error);
});

Если у вас все еще есть проблема, вы можете проверить следующее: -

  1. Попробуйте увеличить период ожидания лямбда,

  2. Вы подняли запрос на отключение песочницы SES.

  3. Если не отключено, попробуйте подтвердить свой идентификатор электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...