javascript – InvalidParameterValueException:Lambda不能假定为函数定义的角色

前端之家收集整理的这篇文章主要介绍了javascript – InvalidParameterValueException:Lambda不能假定为函数定义的角色前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 AWS SDK for JavaScript,当我尝试创建Lambda函数时它返回以下错误

InvalidParameterValueException: The role defined for the function cannot be assumed by Lambda.

我已经仔细检查了我的角色,这完全有效.但是,我仍然无法创建Lambda函数.

我的角色信任关系是:

  1. {
  2. "Version": "2012-10-17","Statement": [
  3. {
  4. "Effect": "Allow","Principal": {
  5. "Service": [
  6. "lambda.amazonaws.com"
  7. ]
  8. },"Action": [
  9. "sts:AssumeRole"
  10. ]
  11. }
  12. ]
  13. }

解决方法

当角色无效(事实并非如此)或尝试在角色创建后创建Lambda函数时,会发生此错误.亚马逊需要几秒钟的时间来通过所有地区复制您的新角色.所以,这里的修复是在创建Lambda函数之前等待几秒钟.

解决方案 – 示例1:

  1. var AWS = require('aws-sdk');
  2. var lambda = new AWS.Lambda();
  3.  
  4. var params = {}; // define your parameters
  5.  
  6. lambda.createFunction(params,function(err,data) {
  7. if (err && err.code === 'InvalidParameterValueException') {
  8.  
  9. // try again after a few seconds
  10. setTimeout(function(){
  11. lambda.createFunction(params,callback);
  12. },10000);
  13. } else {
  14. callback(err,data);
  15. }
  16. });

解决方案 – 示例2:

通常,等待5秒就足够了,但也可以多花一点时间.对于更强大的解决方案,您可以使用重试模块,如this.

  1. var AWS = require('aws-sdk');
  2. var retry = require('retry');
  3. var lambda = new AWS.Lambda();
  4.  
  5. var params = {}; // define your parameters
  6.  
  7. var operation = retry.operation({
  8. retries: 3,// try 1 time and retry 3 times if needed,total = 4
  9. minTimeout: 1 * 1000,// the number of milliseconds before starting the first retry
  10. maxTimeout: 15 * 1000 // the maximum number of milliseconds between two retries
  11. });
  12.  
  13. operation.attempt(function(currentAttempt) {
  14. lambda.createFunction(params,data) {
  15. if (operation.retry(err) && err.code === 'InvalidParameterValueException')
  16. return;
  17.  
  18. callback(err);
  19. });
  20. });

猜你在找的JavaScript相关文章