Questo errore si verifica quando il ruolo è valido (che non è il caso) o quando si tenta di creare la funzione lambda subito dopo la creazione di ruolo. Amazon ha bisogno di pochi secondi per replicare il tuo nuovo ruolo in tutte le regioni. Quindi, la correzione qui è per attendere alcuni secondi prima di creare la funzione Lambda.
Solution - Esempio 1:
var AWS = require('aws-sdk');
var lambda = new AWS.Lambda();
var params = {}; // define your parameters
lambda.createFunction(params, function(err, data) {
if (err && err.code === 'InvalidParameterValueException') {
// try again after a few seconds
setTimeout(function(){
lambda.createFunction(params, callback);
}, 10000);
} else {
callback(err, data);
}
});
Soluzione - Esempio 2:
Di solito, in attesa di 5 secondi è sufficiente, ma può anche prendere un po 'di più. Per una soluzione più robusta, è possibile utilizzare un modulo di ripetizione come this.
var AWS = require('aws-sdk');
var retry = require('retry');
var lambda = new AWS.Lambda();
var params = {}; // define your parameters
var operation = retry.operation({
retries: 3, // try 1 time and retry 3 times if needed, total = 4
minTimeout: 1 * 1000, // the number of milliseconds before starting the first retry
maxTimeout: 15 * 1000 // the maximum number of milliseconds between two retries
});
operation.attempt(function(currentAttempt) {
lambda.createFunction(params, function(err, data) {
if (operation.retry(err) && err.code === 'InvalidParameterValueException')
return;
callback(err);
});
});
Ho postato questa domanda auto-risposta dal momento che ho trascorso molto tempo per trovare il problema. Spero che possa essere utile agli altri. – Zanon