调用invoke API操作失败,返回以下消息:为函数定义的角色不能由Lambda承担



我是AWS的新手,在运行lambda函数时收到了这个消息。我已经在这里阅读了可能的解决方案。为函数定义的角色不能由Lambda承担,但我不理解它们。我应该如何更好地进行操作?

这意味着您已将lambda配置为使用角色运行。但当它运行时,AWS lambda服务没有被授予承担您配置的角色的权限。从本质上讲,AWS Lambda需要获得许可才能担任您选择的角色。

假设您有一个具有管理员访问权限的角色。假设您是一个正在创建lambda的非管理员开发人员。如果您能够创建lambda,并指定具有管理员访问权限的角色作为运行lambda的角色,则可以有效地执行管理员可以执行的任何操作。这将是一种安全漏洞。如果拥有管理员角色的人希望授予AWS lambda服务使用该角色的权限,那么他们实际上是在授予您以管理员身份运行的权限。但是,除非/直到他们授予权限,否则lambda将无法在该角色下运行。

请参阅https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html.您要使用的角色需要允许lambda承担它,这是由以下策略完成的:

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

该声明有效地说;允许lambda服务承担此角色"因此,要继续,您应该验证您选择的运行lambda的角色是否具有这样的策略。在IAM中选择角色,然后查看信任关系选项卡。它需要列出lambda.amazonaws.com——如果没有,则需要编辑并添加它。

此外,lambdas基于各种触发器运行——一些触发器由人员触发,但另一些触发器由事件引发。因此,由于事件可以触发lambda运行,这意味着您必须授予aws lambda服务使用您为lambda指定的角色的权限。

最新更新