javascript - 无效的参数值异常 : The role defined for the function cannot be assumed by Lambda

标签 javascript node.js amazon-web-services aws-sdk aws-lambda

我正在使用 AWS SDK for JavaScript当我尝试创建 Lambda 函数时它返回以下错误:

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

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

我的 Angular 色信任关系是:

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

最佳答案

当 Angular 色无效(实际情况并非如此)或当您尝试创建 Lambda 函数刚好创建 Angular 色时,会发生此错误。 Amazon 需要几秒钟的时间才能在所有地区复制您的新 Angular 色。因此,这里的解决方法是在创建 Lambda 函数之前等待几秒钟

解决方案 - 示例 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);
    }
});

解决方案 - 示例 2:

通常,等待 5 秒就足够了,但也可以多花一点时间。对于更强大的解决方案,您可以使用重试模块,如 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);
    });
});

关于javascript - 无效的参数值异常 : The role defined for the function cannot be assumed by Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503075/

相关文章:

javascript - DocumentReference 返回敏感数据 - Firestore

javascript - 通过库转换颜色无法正常工作

javascript - 合并并给出压缩时间 javascript

node.js - AWS S3 - 从 getSignedUrl() PUT 到 URL 返回 403 SignatureDoesNotMatch 错误

javascript - ejs错误: Could not find matching close tag for "<%-"

javascript - Nodemailer 错误无法修复

java - 2 个线程是否会同时访问我的 Java AWS Lambda?

javascript - 等待并积累值,直到其他可观察到的火灾

amazon-web-services - AWS Cloudformation cfn-init 不安装软件包

ios - AWS 对 Amazon Cognito 的身份验证