У меня около 50 AWS Lambda функций, у меня есть задачи gulp для его развертывания, сценарий zip функции и загрузить его на S3, а затем с помощью Lambda JS SDK Я вызываю эту задачу для создания/обновления функции:AWS Lambda SDK - TooManyRequestsException
gulp.task('upload', function (callback) {
var AWS = require('aws-sdk');
var lambda = Promise.promisifyAll(new AWS.Lambda(), {
filter: function (name) {
return name.indexOf('Async') === -1;
}
});
var promises = require('./lambda-config.js').lambda.map(function (lambdaConfig) {
return lambda.getFunctionConfigurationAsync({
FunctionName: lambdaConfig.FunctionName
}).then(function() {
return lambda.updateFunctionCodeAsync({
FunctionName: lambdaConfig.FunctionName,
S3Bucket: lambdaConfig.Code.S3Bucket,
S3Key: lambdaConfig.Code.S3Key
});
}).catch(function() {
return lambda.createFunctionAsync(lambdaConfig);
});
});
Promise.all(promises).then(() => callback()).catch(callback);
});
Я получаю TooManyRequestsException error
, размер почтового индекса является 13MB и распакованные версии 50Мб. Я не думаю, что размер проблемы, а одновременные вызовы SDK.
Где я могу найти информацию о том, сколько одновременных вызовов я могу выполнить для AWS SDK? и как вы предлагаете я могу решить TooManyRequestsException error
? Оценивается образец кода.
Спасибо за ваш ответ, но это если я вызов (выполнения) функции лямбды, но моя проблема сейчас связана с развертыванием , когда я пытаюсь развернуть функции, я использую функции lambda sdk для развертывания, и он возвращает ошибку TooManyRequestsException. Ничто в документации лямбда указывает, есть ли предел для создания или обновления функций, что я заметил, что я получаю эту ошибку только в регионе eu-west-1, в то время как я не получаю ее в нашем регионе-восток-1. И никакой информации в AWS о каких-либо ограничениях, которые были превышены. –
Я вижу. Не знаю ограничений на одновременное развертывание, но пара других способов скина кошки может включать объединение ваших многочисленных функций в многофункциональные отдельные функции (затем использование параметра для определения того, какую подфункцию выполнять) и/или использование функция setTimeout() в вашей загрузке для размещения ваших запросов или просто выполните ваши запросы последовательно. Обновления развертывания не должны возникать так часто, что производительность должна быть высокоприоритетной (если это не так, пересмотреть свой дизайн ...). – mwag
Спасибо за ответ, если вы не возражаете, я спрашиваю, какое частое развертывание связано с производительностью? учитывая, что я только делаю разработку, и я постоянно пересматриваю изменения на ежедневной основе? Просто любопытно, и вы хотите получить от вас больше разъяснений. Я читал, что лямбда-функции всегда остаются на месте, а время выполнения зависит от того, насколько часто вы используете эту функцию, и я думаю, что это проблема, если некоторые функции не используются очень часто. –