Использование AWS SDK от Lambda в VPC

У меня есть простая лямбда-функция следующим образом

var AWS = require("aws-sdk");

exports.handler = (event, context, callback) => {

var ec2 = new AWS.EC2({region:'us-east-1'});
return ec2.describeRegions({}).promise()
.then(function(regionResponse) {
    console.log(regionResponse.Regions)
    callback(null, regionResponse.Regions);
})
.catch(
    function (err) {
        console.log({"error" : err});
        callback(err, null);
    }
)

};

Я могу успешно запустить эту функцию за пределами VPC.

Я создаю VPC с помощью мастера VPC и создаю VPC с одной общедоступной подсетью и шлюзом Интернета. Я помещаю функцию в VPC и назначаю ей исполнительную роль с правами Lambda VPC Execution. Теперь происходит сбой с тайм-аутом, который я установил на 10 секунд (обычное выполнение 1 сек)

Чего мне не хватает в моей конфигурации, которая препятствует доступу функции к AWS SDK внутри VPC?

1 ответ

  1. Вы ставите обратный вызов после заявления о возврате. Конечно, он никогда не будет выполнен, потому что вы вернулись из функции.

  2. Если подсеть, в которой вы используете Lambda, не является общедоступной или не имеет шлюза NAT, она не сможет подключиться к Интернету, то есть к API-интерфейсам AWS.

Другие вопросы по тегам