InvalidParameterValueException:为函数定义的angular色不能由Lambda承担

我正在使用适用于JavaScript的AWS开发工具包,并且在尝试创buildLambda函数时返回以下错误:

InvalidParameterValueException:为函数定义的angular色不能由Lambda承担。

我仔细检查了我的angular色,这是完全有效的。 但是,我仍然无法创buildLambda函数。

我的angular色信任关系是:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] } 

当angular色无效(情况并非如此)或者当您尝试在angular色创build之后尝试创buildLambda函数时,会发生此错误。 亚马逊需要几秒钟的时间来通过所有地区复制你的新angular色。 所以,这里的解决方法是在创buildLambda函数之前等待几秒钟

解决scheme – 例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); } }); 

解决scheme – 示例2:

通常情况下,等待5秒就足够了,但也可以多花一点时间。 对于更强大的解决scheme,您可以使用像这样的重试模块。

 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); }); });